local combat = createCombatObject() -- Define o tipo de dano azul (energia) e os efeitos visuais setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 100) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 0) -- Define a fórmula de dano para causar 100 de dano (constante) -- Fórmula: dano mínimo = (level * 0) - 100 e dano máximo = (level * 0) - 100 setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -100, 0, -100) -- Cria a área de efeito 5x5 com o centro marcado como "2" local area = createCombatArea({ {1, 1, 1, 1, 1}, {1, 1, 1, 1, 1}, {1, 1, 2, 1, 1}, {1, 1, 1, 1, 1}, {1, 1, 1, 1, 1} }) setCombatArea(combat, area) -- Função para manter o efeito visual reaplicando-o a cada 'interval' ms local function persistEffect(pos, effectId, interval, stopFlag) if not stopFlag.value then doSendMagicEffect(pos, effectId) addEvent(persistEffect, interval, pos, effectId, interval, stopFlag) end end function onCastSpell(creature, var) local casterPos = getCreaturePosition(creature) -- Troca o looktype para 43 no início da conjuração doCreatureChangeOutfit(creature, {lookType = 43}) -- Calcula a posição central onde a área 5x5 será aplicada local areaPos = {x = casterPos.x + 4, y = casterPos.y + 4, z = casterPos.z} -- Cria o objeto Variant que une a posição do conjurador com a área 5x5 local variant = Variant(casterPos, area) -- Cria a condição de slow (60% de redução de velocidade) local slowCondition = createConditionObject(CONDITION_HASTE) setConditionParam(slowCondition, CONDITION_PARAM_SPEEDPERCENT, -60) -- Define a duração para cobrir toda a conjuração (por exemplo, 3000ms) setConditionParam(slowCondition, CONDITION_PARAM_TICKS, 3000) -- Aplica a condição slow e o efeito 85 aos alvos presentes na área (exceto o conjurador) for dx = -2, 2 do for dy = -2, 2 do local pos = {x = areaPos.x + dx, y = areaPos.y + dy, z = areaPos.z} local target = getTopCreature(pos) if target and target.uid ~= creature.uid then doAddCondition(target, slowCondition) doSendMagicEffect(getCreaturePosition(target), 85) end end end local stopFlag = {value = false} -- Inicia o efeito 102 na área, reaplicando-o a cada 600ms persistEffect(areaPos, 96, 1000, stopFlag) -- Aguarda 2 segundos para que o efeito 102 permaneça visível addEvent(function() stopFlag.value = true -- Para o loop do efeito 102 local damageIntervals = {0, 300, 600, 900} -- intervalos após os 2 segundos local damageEffects = {94, 237, 237, 237} -- efeitos a serem exibidos com cada dano local effectOffsets = { {x = 0, y = -3}, -- desloca o effect 97 {x = -3, y = -3}, -- desloca o effect 98 {x = -3, y = -3}, -- desloca o effect 103 {x = -3, y = -3} -- desloca o effect 99 } for i, delay in ipairs(damageIntervals) do addEvent(function() local effectPos = { x = areaPos.x + effectOffsets[i].x, y = areaPos.y + effectOffsets[i].y, z = areaPos.z } doSendMagicEffect(effectPos, damageEffects[i]) doCombat(creature, combat, variant) end, delay) end -- Após o último efeito, troca o looktype para 45 no final da conjuração addEvent(function() doCreatureChangeOutfit(creature, {lookType = 81}) end, 1000) end, 1000) return true end