-- Função para mostrar o efeito centralizado no jogador local function showEffectCenter(creature, effect) if creature and not creature:isRemoved() then print("Efeito Centralizado: ", effect) -- Debug creature:getPosition():sendMagicEffect(effect) end end -- Função para exibir efeitos com reposicionamento do eixo local function showEffectAtOffset(creature, effect, offset) if creature and not creature:isRemoved() then local pos = creature:getPosition() pos.x = pos.x + offset.x pos.y = pos.y + offset.y print("Efeito Offset: ", effect, " na posição ", pos.x, pos.y) -- Debug pos:sendMagicEffect(effect) end end -- Função para aplicar o efeito 32 em jogadores paralisados por 2 segundos local function applyParalysisEffect(target) local duration = 2000 -- Duração total do efeito: 2 segundos local interval = 200 -- Intervalo entre as animações: 200ms local effect = 237 -- Efeito a ser exibido for i = 0, duration, interval do addEvent(function() if target and not target:isRemoved() then target:getPosition():sendMagicEffect(effect) end end, i) end end -- Função para aplicar dano em área (5x5) ao redor da criatura, com paralisia local function applyAreaDamage(creature) local pos = creature:getPosition() local damage = -100 local effect = 236 -- Configuração da condição de paralisia por 3 segundos local paralysis = Condition(CONDITION_PARALYZE) paralysis:setParameter(CONDITION_PARAM_TICKS, 3000) paralysis:setParameter(CONDITION_PARAM_SPEED, -1000) for x = -2, 2 do for y = -2, 2 do local targetPos = Position(pos.x + x, pos.y + y, pos.z) targetPos:sendMagicEffect(effect) local tile = Tile(targetPos) if tile then local target = tile:getTopCreature() if target and target ~= creature then target:addHealth(damage) target:addCondition(paralysis) applyParalysisEffect(target) end end end end end function onCastSpell(creature, var) local waittime = 1 local storage = 99916 if creature:getStorageValue(storage) > os.time() then creature:sendCancelMessage("Você só pode usar esta magia novamente em [" .. (creature:getStorageValue(storage) - os.time()) .. "] segundos.") return false end creature:setStorageValue(storage, os.time() + waittime) local originalOutfit = creature:getOutfit() -- Define as outfits para os frames da magia local outfits = { {lookType = 73}, {lookType = 74}, {lookType = 75}, {lookType = 76}, {lookType = 77}, {lookType = 78}, {lookType = 79}, {lookType = 80}, {lookType = 79}, {lookType = 80}, {lookType = 79}, {lookType = 80}, {lookType = 79}, {lookType = 80}, {lookType = 79}, {lookType = 45} } -- IDs dos efeitos para teste (use IDs conhecidos: 1 ou 2) local effect1 = {id = 237, offset = {x = 0, y = 0}} -- Testando com ID 1 local effect2 = {id = 237, offset = {x = 0, y = 0}} -- Testando com ID 2 local effectCenterId = 208 -- ID do efeito centralizado (confira se é válido) -- Teste: Mostra o efeito centralizado addEvent(function() showEffectCenter(creature, effectCenterId) end, 0) -- Teste: Mostra os efeitos com offset addEvent(function() showEffectAtOffset(creature, effect1.id, effect1.offset) showEffectAtOffset(creature, effect2.id, effect2.offset) end, 300) -- Aplica o dano na área ampliada (5x5) após 1s addEvent(function() if not creature or creature:isRemoved() then return end applyAreaDamage(creature) end, 700) -- Troca os outfits durante a execução da magia for i = 1, #outfits do addEvent(function() if creature and not creature:isRemoved() then creature:setOutfit(outfits[i]) end end, (i - 1) * 80) end -- Restaura o outfit original addEvent(function() if creature and not creature:isRemoved() then creature:setOutfit(originalOutfit) end end, (#outfits * 100) + 100) -- Reposiciona o som para tocar após todos os efeitos addEvent(function() if creature and not creature:isRemoved() then -- playSound(creature, "woodcutting.ogg") end end, 0) playSound(creature, "energy.ogg") return false end