rafaeru
Active Member
I have strange bug with spells where is addEvent (TFS 0.3.6).
onCastSpell1 show only position where spell will shoot and after 2 seconds onCastSpell2 deal damage but this damage depends on second attack "melee" in range = 1. When i change time in addEvent on >250 ms all works fine. I traced cobat.cpp, spells.cpp and monsters.cpp but i dont have idea what is wrong.
(White damage is spell damage, red is melee)
Deal ~3000 when range = 1 and ~20000 when range > 1
Example monster attacks:
Spell script:
onCastSpell1 show only position where spell will shoot and after 2 seconds onCastSpell2 deal damage but this damage depends on second attack "melee" in range = 1. When i change time in addEvent on >250 ms all works fine. I traced cobat.cpp, spells.cpp and monsters.cpp but i dont have idea what is wrong.
(White damage is spell damage, red is melee)
Deal ~3000 when range = 1 and ~20000 when range > 1
Example monster attacks:
XML:
<attacks>
<attack name="spell" interval="3000" chance="50" min="-28200" max="-35250"/>
<attack name="melee" interval="1200" range="1" chance="100" min="-3000" max="-7500"/>
</attacks>
Spell script:
Lua:
local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 2000)
setConditionFormula(condition, -10.7, 0, -10.8, 0)
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 181)
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 4)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -2.0, 1, -2.9, 1)
local arr1 = {
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 3, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
}
local arr2 = {
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 3, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
local function onCastSpell1(parameters)
doCombat(parameters.cid, parameters.combat1, parameters.var)
end
local function onCastSpell2(parameters)
doCombat(parameters.cid, parameters.combat2, parameters.var)
end
function onCastSpell(cid, var)
doAddCondition(cid, condition)
local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2}
onCastSpell1(parameters)
addEvent(onCastSpell2, 2000, parameters)
return true
end