for the past few hours I was trying to figure out why my spells behave that way, here is an example video. Followed by the actual script. If anyone has solution, please let me know. Thank you
XML:
<instant group="attack" name="testb" words="testb" lvl="0" mana="0" prem="0" direction="1" blockwalls="1" exhaustion="2000" groupcooldown="1000" needlearn="0" script="test.lua">
<vocation name="Elder Druid"/>
</instant>
Lua:
local combat = {}
local area = {
{
{0,0,0},
{0,0,0},
{0,0,0},
{1,3,1},
{1,0,1}
},
{
{0,0,0},
{0,0,0},
{0,0,0},
{1,1,1},
{0,2,0}
},
{
{0,0,0},
{0,0,0},
{1,1,1},
{0,0,0},
{0,2,0}
},
{
{0,0,0},
{1,1,1},
{0,0,0},
{0,0,0},
{0,2,0}
},
{
{1,1,1},
{0,0,0},
{0,0,0},
{0,0,0},
{0,2,0}
}
}
for i = 1, #area do
combat[i] = Combat()
combat[i]:setParameter(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
combat[i]:setParameter(COMBAT_PARAM_EFFECT, 38)
combat[i]:setArea(createCombatArea(area[i]))
combat[i]:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
function onGetFormulaValues(cid, level, maglevel)
min = -((level / 5) + (maglevel * 10) + 25)
max = -((level / 5) + (maglevel * 20) + 50)
return min, max
end
end
local function myLoop(myArray, combatType)
local player = Player(myArray.cid)
if not player then
return false
end
return combatType:execute(myArray.cid, myArray.var)
end
function onCastSpell(cid, var)
local player = Player(cid)
local myArray = {
cid = cid,
var = var
}
addEvent(myLoop, 100, myArray, combat[2])
addEvent(myLoop, 200, myArray, combat[3])
addEvent(myLoop, 300, myArray, combat[4])
addEvent(myLoop, 400, myArray, combat[5])
return combat[1]:execute(cid, var)
end