o primeiro passo é aumentar a area que a spell acerta:
local arr = {
{1, 1, 1},
{1, 3, 1}, -- area que vai acertar a spell enquanto estiver rodando
{1, 1, 1},
}
O dano da spell só depende dessa area, todo o resto é só efeito.
Pra modificar os efeitos vc precisa modificar 3 funções: a init, a middle e a end effect.
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
local position = getCreaturePosition(cid)
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)
local position = getCreaturePosition(cid)
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
return true
end
tenta entender como elas funcionam, vai debugando o código na sua cabeça ou num papel pra entender o que cada função faz e como ela faz isso. Mas basicamente a primeira função solta 1 efeito até cada sqm norte, sul, leste e oeste. A segunda fica fazendo o efeito de ir de uma quina a outra e a terceira faz o contrário da primeira pra voltar o efeito e dar a sensação de que a magia saiu, ficou rodando e voltou...
Com esse entendimento e percebendo como cada for atua pra soltar esses efeitos você consegue editar pra aumentar a area;
Pra primeira função e a ultima função, tudo que vc precisa fazer é adicionar +1 sqm nessa função aqui:
local dir = getPosByDir(pos, i)
essa função tem 3 parametros, sendo o terceiro opcional:
1- a posição
2- a direção
3- a distancia.
pos é a posição e i é a direção, pra aumentar em +1 sqm temos que modificar isso para usar o terceiro parametro:
local dir = getPosByDir(pos, i, 2)
O processo é semelhante para a função middle, com a diferença de que ela utiliza duas posições ao invés de somente uma.
local dir = getPosByDir(pos, i, 2)
local dir2 = getPosByDir(pos2, i + 1 <= 3 and i + 1 or 0, 2)