local combatConfig = {
[0] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_HITAREA , distanceEffect = CONST_ANI_WHIRLWINDSWORD},
[1] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_HITAREA , distanceEffect = CONST_ANI_WHIRLWINDAXE},
[2] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_HITAREA , distanceEffect = CONST_ANI_WHIRLWINDCLUB},
[3] = {type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_THUNDER , distanceEffect = CONST_ANI_LARGEROCK},
}
function onGetFormulaValues0(player, skill, attack, factor)
local min = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
local max = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
return -min, -max
end
function onGetFormulaValues1(player, skill, attack, factor)
local min = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
local max = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
return -min, -max
end
function onGetFormulaValues2(player, skill, attack, factor)
local min = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
local max = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
return -min, -max
end
function onGetFormulaValues3(player, skill, attack, factor)
local min = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
local max = (player:getLevel() * 0) + (skill * attack * 0.01) + 0
return -min, -max
end
function onTargetTile0(creature, position)
creature:getPosition():sendDistanceEffect(position, combatConfig[0].distanceEffect)
end
function onTargetTile1(creature, position)
creature:getPosition():sendDistanceEffect(position, combatConfig[1].distanceEffect)
end
function onTargetTile2(creature, position)
creature:getPosition():sendDistanceEffect(position, combatConfig[2].distanceEffect)
end
function onTargetTile3(creature, position)
creature:getPosition():sendDistanceEffect(position, combatConfig[3].distanceEffect)
end
function onTargetCreature0(creature, target)
return doChallengeCreature(creature, target)
end
function onTargetCreature1(creature, target)
return doChallengeCreature(creature, target)
end
function onTargetCreature2(creature, target)
return doChallengeCreature(creature, target)
end
function onTargetCreature3(creature, target)
return doChallengeCreature(creature, target)
end
local combat = {}
for i = 0, 3 do
combat[i] = Combat()
combat[i]:setParameter(COMBAT_PARAM_TYPE, combatConfig[i].type)
combat[i]:setParameter(COMBAT_PARAM_EFFECT, combatConfig[i].effect)
combat[i]:setArea(createCombatArea(AREA_CROSS1X1))
combat[i]:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues"..i)
combat[i]:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile"..i)
combat[i]:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature"..i)
end
local function combatCallBack(cid, id, variant)
local player = Player(cid)
if not player then
return false
end
return combat[id]:execute(player, variant)
end
function onCastSpell(creature, variant)
local cid = creature:getId()
for i = 0, 3 do
addEvent(combatCallBack, i * 250, cid, i, variant)
end
return true
end