Hello @shocks tudo bom brother?
Então, ta logo no início do código onde você precisa fazer modificação, nessa linha:
local skill_gain = 1 -- per hit
Ali está escrito pra dar 1 skill por hit, se você quiser que seja um treinamento aprimorado, terá de fazer cálculos. Primeiro crie um boost pro próprio exercise, vamos chamá-lo de exercise_boost, e vamos fazer com que ele seja equivalente a 30 hits, ou seja, cada hit da exercise equivalerá a 30 hits. Agora vamos supor que cada SWORD FIGHTING acrescente 50% a mais de hits que você precisa dar pra subir a skill, ou seja, se SWORD 30 pro 31 precisar de 10 hits, pro 32 vai precisar de 10 + 5 (50% de 10) = 15, seguindo esse raciocínio você pode começar a calcular:
Pega a skill do jogador (80 sword) e calcula a quantidade de hits que você precisa pro 81;
Acrescenta o boost que você quiser no exercise training (exercise_boost);
Coloca tudo na variável skill_gain;
Ficando mais ou menos assim:
-- pega a quantidade de hits, finge que é 30000 divide por 30 ficando 1000, sendo necessário 1000 hits para subir a skill.
local to_up_skill = quantidade_hits / exercise_boost;
Aplica uma regra de 3 simplona! (1000 = 100; 1 = x)
1000x = 100.1
x = 100/1000
x = 0.1
Aqui você descobre quantos % cada hit vai dar, pra não ter que alterar a lógica do seu código que 1 equivale a 100, pegamos o x e dividimos por 100.
0.1 / 100 = 0.001
Agora sim, temos o valor de skill_gain, que é 0.001, ou seja, 0.001% por hit, até alcançar os 1000 hits necessários pro up.
Power of matemática mai friendi.
EDIT1: Você pode usar a mesma ideia pro MAGIC, porém nesse o calculo é utilizado a quantidade de mana gasta.
É nóissssssssssssss.