.• TFS 1.2
• Script: Spell / Lua Function
Original death strike:
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
function onGetFormulaValues(player, level, magicLevel)
local min = (level / 5) + (magicLevel * 1.4) + 8
local max = (level / 5) + (magicLevel * 2.2) + 14
return -min, -max
end
combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onCastSpell(creature, variant)
return combat:execute(creature, variant)
end
Eu preciso que o exori mort seja lançado no solo em que o alvo está, não instantaneamente no alvo, então se o alvo se mover da posição lançada, será possível evitar o hit.
Os ataques exori mort enviam um tiro à distância e um efeito mágico com dmg diretamente no alvo.
Preciso enviar um tiro à distância e o efeito no TILE que o alvo está, não diretamente no alvo. Então eu preciso de um delay por distância apenas no efeito de animação, NÃO NO DISTANCE SHOOT:
1 sqm: if distance between target is = 1 adicionar delay de ANIMAÇÃO QUE IRÁ SER EXECUTADO NO TILE (NÃO MUDAR DELAY DO DISTANCE SHOOT) + 0 miliseconds (instant)
2 sqm: if distance between target is = 2 adicionar delay de ANIMAÇÃO QUE IRÁ SER EXECUTADO NO TILE (NÃO MUDAR DELAY DO DISTANCE SHOOT) + 60 miliseconds
3 sqm: if distance between target is = 3 adicionar delay de ANIMAÇÃO QUE IRÁ SER EXECUTADO NO TILE (NÃO MUDAR DELAY DO DISTANCE SHOOT) + 120 miliseconds
4 sqm: só vou replicar
Essa é a função getDistanceBetween que tenho, só não sei como colocar e se irá funcionar usando ela:
function getDistanceBetween(pos1, pos2)
local xDif = math.abs(pos1.x - pos2.x)
local yDif = math.abs(pos1.y - pos2.y)
local posDif = math.max(xDif, yDif)
if (pos1.z ~= pos2.z) then
posDif = (posDif + 9 + 6)
end
return posDif
end
Basicamente:
Se o target está 1 sqm do player: return event1 (combat1, delay:0 [insta])
Se o target está 2 sqm do player: return event2 (combat2, delay:+60)
Se o target está 3 sqm do player: return event3 (combat3, delay:+120)
Então se quiser mudar o dano e a área ou tipo pela distância também será possível.
Obrigado desde já!