Seguinte, eu consegui fazer isso pra armas melee. Vou recapitular oq eu fiz antes de colocar minhas dúvidas:
Adicionei scripts="melee.lua" em todas as armas melee em data/weapons/weapons.xml
Criei um arquivo melee.lua em data/weapons/scripts e coloquei (baseado nas spells):
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true)
combat:setParameter(COMBAT_PARAM_USECHARGES, true)
function onGetFormulaValues(player, skill, attack, factor)
local min = (skill * 1.28) + (attack * 1.12)
local max = (skill * 1.92) + (attack * 1.68)
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onUseWeapon(player, var)
return combat:execute(player, var)
end
E funciona perfeitamente, mas essa fórmula que eu calculei é uma alteração baseada na fórmula para offensive stance. Tem também a balanced stance (75% do dano) e defensive stance (50%). Minhas dúvidas:
1. Como adiciono as stances na fórmula?
2. Do jeito que eu fiz precisaria adicionar script="melee.lua" em toda arma nova. Como eu faço pra, no lugar disso, substituir a fórmula padrão? Em outras palavras, fazer com que toda arma melee, mesmo as adicionadas depois, funcionem pela mesma fórmula?
3. Tem como fazer isso pra wands também? Todas as wands dando o mesmo dano por fórmula (não fixo), mudando apenas o elemento dela?
EDIT: 4: O que é o function="default" no weapons.xml? Quais outros comandos são úteis pra essa linha?
Agradeço qualquer ajuda. Se interessa alguém, tô finalizando uma série de alterações pra deixar o Tibia no estilo hack'n'slash. Tá excelente, vou postar dia desses.