local config = {
velocidade = 200, -- intervalo entre os giros (quanto menor, mais rapido)
hits = 40, -- quantos hits vai dar
msg = "Cyclone", -- msg ao soltar a spell
key = 13871, -- storage que sera utilizado pro cooldown
cooldown = 6, -- tempo em segundos de cooldown entre um uso da spell e outro.
effect1 = 22, -- efeito de distancia que vai ficar rodando
effect2 = 269, -- efeito no sqm do item
effect3 = 37, -- efeito ao castar a spell
effect4 = 341 -- efeito ao acertar a roda no player
}
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 255)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -150.0, 0, -260.0, 0)
local condition = createConditionObject(CONDITION_PARALYZE)
setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)
setConditionParam(condition, CONDITION_PARAM_SPEED, -1500)
setConditionFormula(condition, -0.2, 0, -0.2, 0)
setCombatCondition(combat1, condition)
function onTargetCreature(cid, target)
doSendMagicEffect(getCreaturePosition(target), config.effect4)
end
setCombatCallback(combat, 4, "onTargetCreature")
local arr = {
{1, 1, 1},
{1, 3, 1}, -- area que vai acertar a spell enquanto estiver rodando
{1, 1, 1},
}
local area = createCombatArea(arr)
setCombatArea(combat, area)
function initEffect(position)
for i = 0, 3 do
local pos = {x = position.x, y = position.y, z = position.z}
local dir = getPosByDir(pos, i)
doSendDistanceShoot(position, dir, config.effect1)
end
addEvent(doSendMagicEffect, 300, position, config.effect2)
return true
end
function middleEffect(cid, param, position, lim, count)
n = count or 0
if isCreature(cid) and n < lim then
for i = 0, 3 do
local pos = {x = position.x, y = position.y, z = position.z}
local pos2 = {x = position.x, y = position.y, z = position.z}
local dir = getPosByDir(pos, i)
local dir2 = getPosByDir(pos2, i + 1 <= 3 and i + 1 or 0)
doSendDistanceShoot(dir, dir2, config.effect1)
end
doCombat(cid, combat, param)
addEvent(middleEffect, config.velocidade, cid, param, position, lim, n + 1)
end
return true
end
function endEffect(position)
for i = 0, 3 do
local pos = {x = position.x, y = position.y, z = position.z}
local dir = getPosByDir(pos, i)
doSendDistanceShoot(dir, position, config.effect1)
end
local item = getTileItemById(position, 2180)
if item.uid > 0 then
doRemoveItem(item.uid)
end
return true
end
function onCastSpell(cid, var)
if getPlayerStorageValue(cid, config.key) - os.time() <= 0 then
setPlayerStorageValue(cid, config.key, os.time() + config.cooldown)
local position = getCreaturePosition(cid)
doCreatureSay(cid, config.msg, 20)
local orb = doCreateItem(2180, 1, position)
addEvent(endEffect, 8.55 * 1000, position)
doSendMagicEffect(position, config.effect3)
initEffect(position)
addEvent(middleEffect, 200, cid, var, position, config.hits)
else
doPlayerSendCancel(cid, "You're exhausted.")
return false
end
return true
end
setConditionParam(condition, CONDITION_PARAM_SPEED, -1500)
onde tá -1500 é a Speed que o alvo fica no caso vai zerar por que o maximo de speed é 1500 então ela vai ficar nula deixando o player Imovel... caso o player use spell que da speed ele ira remover parte da paralisia mas ela vai se renovar a cada hit que ele tomar
Qualquer coisa só comentar
Abraços VLW!