Ir para conteúdo
  • 0

[Resolvido] ajuda com magia unown e air vortex


clebao666

Pergunta

eu preciso de uma ajuda pra cria 3 magias sao a (unown help , unown rush , air vortex do shiny fearow da pxg)

as magias do unow so achei um server que tem posso fazer um video delas ou entao se puder entra no ot do cara e me add que mostro as magias como devem ser feitas.

server www.pokedg.com (meu char > Clebao) desde ja agradeço

 

quero essas magias pra por no meu server tbm mais o dono conseguiu com um cara que nao deixa repassa-las.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

 

Zipter, quando eu adiciono a parte Miss, Silence, Slow etc, da esse erro:

[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
[13/06/2015 13:13:05] [Error - LuaScriptInterface::loadFile] data/lib/newStatusSyst.lua:1244: 'end' expected (to close 'function' at line 82) near '<eof>'
[13/06/2015 13:13:05] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

 

Provavelmente você errou alguma coisa nesta parte da instalação. Peço que refaça os passos e informe se o erro continua. Ou, se preferir, poste aqui seu newStatusSyst.lua que eu corrijo.

 

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Copiar uma spell como este Unown Rush, ou seja, uma spell cheia de mínimos detalhes, é algo bem chato. Demorei um bom tempo vendo e revendo o vídeo, tentando chegar num resultado semelhante dos intervalos de tempo entre as ações. Caso o resultado não lhe agrade, recomendo alterar as variáveis responsáveis pela manipulação do tempo, juntamente das áreas de dano e efeito.

Todas as 3 spells que postei neste tópico foram testadas e estão funcionando perfeitamente.

Primeiramente, em pokemon moves.lua:

elseif spell == "Unown Help" then
    local config = {
        summonPoke = "Unown",
        health = 5,                       --% de HP (baseada na HP máxima do pokémon) tirada do Unown Legion.
    }
    if isSummon(cid) then
        local pid = getCreatureMaster(cid)
        doSummonMonster(pid, config.summonPoke)
        local newPoke = getCreatureSummons(pid)[#getCreatureSummons(pid)]
        setPlayerStorageValue(newPoke, 1001, pokes[getCreatureName(newPoke)].offense * getPlayerLevel(pid))
        setPlayerStorageValue(newPoke, 1002, pokes[getCreatureName(newPoke)].defense)             
        setPlayerStorageValue(newPoke, 1003, pokes[getCreatureName(newPoke)].agility)
        setPlayerStorageValue(newPoke, 1004, pokes[getCreatureName(newPoke)].vitality * getPlayerLevel(pid))
        setPlayerStorageValue(newPoke, 1005, pokes[getCreatureName(newPoke)].specialattack * getPlayerLevel(pid))
        setCreatureMaxHealth(newPoke, getVitality(newPoke) * HPperVITsummon)
        doCreatureAddHealth(newPoke, getCreatureMaxHealth(newPoke))
        doCreatureAddHealth(cid, -getCreatureMaxHealth(cid) * (config.health / 100))
    end
elseif spell == "Unown Rush" then
    local config = {
        distEffect = xxx,            --Distance effect.
        effect = xxx,                --Efeito de invisibilidade.
        barrierEffect = xxx,         --Effect do Barrier.
        barrierTime = 8,             --Duração do Barrier, em segundos.
        barrierInterval = 500,       --Intervalo de tempo, em milésimos de segundo, entre cada efeito do Barrier.
        times = 4,                   --Quantas vezes a spell em área será "lançada" (também quantas vezes o efeito será "rebatido" entre Unown Legion e os Unowns).
        interval = 400,              --Intervalo de tempo entre as "rebatidas", em milésimos de segundo.
        intervalAOE = 200,           --Intervalo de tempo entre os "lances" da spell em área.
        combat = ghostDmg,           --Elemento da spell.
    }
    function barrierEffect(cid, time)
        if isCreature(cid) then
            if time < 0 then
                return true
            end
            doSendMagicEffect({x = getThingPos(cid).x + 1, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, config.barrierEffect)
            addEvent(barrierEffect, config.barrierInterval, cid, time - 1)
        end
    end
    local summons, t = getCreatureSummons(getCreatureMaster(cid)), {}
    doDisapear(cid)
    doSendMagicEffect(getThingPos(cid), config.effect)
    for i = 1, config.times do
        for j = 2, #summons do
            if isCreature(summons[j]) and isCreature(cid) then
                t[#t + 1] = summons[j]
                addEvent(function()
                    doSendDistanceShoot(getThingPos(cid), getThingPos(summons[j]), config.distEffect)
                    addEvent(function()
                        doSendDistanceShoot(getThingPos(summons[j]), getThingPos(cid), config.distEffect)
                    end, 100)
                end, i * config.interval + 100)
            end
        end
    end
    addEvent(function()
        barrierEffect(cid, math.floor(config.barrierTime * 1000 / config.barrierInterval))
        if isCreature(cid) then
            for i = 1, #t do
                if isCreature(t[i]) then
                    doRemoveCreature(t[i])
                end
            end
            for i = 1, config.times do
                addEvent(function()
                    if isCreature(cid) then
                        local area = getPosfromArea(cid, rushAreaEffect)
                        for j = 1, #area do
                            doSendDistanceShoot(getThingPos(cid), area[j], config.distEffect)
                        end
                        doDanoWithProtect(cid, config.combat, getThingPos(cid), rushAreaDamage, -min, -max, 0)
                        if i == config.times then
                            doAppear(cid)
                            setPlayerStorageValue(cid, 9658783, 1)
                            addEvent(function()
                                if isCreature(cid) then
                                    setPlayerStorageValue(cid, 9658783, -1)
                                end
                            end, config.barrierTime * 1000 - (config.times * (config.interval + config.intervalAOE)))
                        end
                    end
                end, i * config.intervalAOE)
            end
        end
    end, config.times * config.interval + 100 * config.times)

Em areas.lua:

rushAreaEffect = {                           --Área do Unown Rush de efeito (até onde o efeito vai, a partir do usuário da spell).
    {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
    {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
    {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
    {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 
    {1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
    {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
    {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
    {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
}
rushAreaDamage = createCombatArea{           --Área do Unown Rush de dano.
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, 
    {0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
}
Depois, em data/actions/scripts, goback.lua:
Acima de:
local cd = getCD(item.uid, "blink", 30)
coloque:
    if #getCreatureSummons(cid) > 1 then
        for _, s in pairs(getCreatureSummons(cid)) do
            if getCreatureName(s) == "Unown" then
                doRemoveCreature(s)
            end
        end
    end
Depois, em data/talkactions/scripts, move1.lua:
Abaixo de:
if getPlayerStorageValue(mypoke, 93828) > os.time() then
    return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.")
end
coloque:
    local unownCount = 7           --Quantidade de Unowns máxima/quantidade de Unowns para usar o Unown Rush.
    if move.name == "Unown Help" then
        if #getCreatureSummons(cid) >= unownCount + 1 then
            return doPlayerSendCancel(cid, "You already have "..unownCount.." Unowns helping you.")
        end
    elseif move.name == "Unown Rush" then
        if #getCreatureSummons(cid) < unownCount + 1 then
            return doPlayerSendCancel(cid, "You need "..unownCount.." Unowns helping you to use this spell.")
        end
    end

 

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Copiar uma spell como este Unown Rush, ou seja, uma spell cheia de mínimos detalhes, é algo bem chato. Demorei um bom tempo vendo e revendo o vídeo, tentando chegar num resultado semelhante dos intervalos de tempo entre as ações. Caso o resultado não lhe agrade, recomendo alterar as variáveis responsáveis pela manipulação do tempo, juntamente das áreas de dano e efeito.

Todas as 3 spells que postei neste tópico foram testadas e estão funcionando perfeitamente.

Primeiramente, em pokemon moves.lua:

elseif spell == "Unown Help" then
    local config = {
        summonPoke = "Unown",
        health = 5,                       --% de HP (baseada na HP máxima do pokémon) tirada do Unown Legion.
    }
    if isSummon(cid) then
        local pid = getCreatureMaster(cid)
        doSummonMonster(pid, config.summonPoke)
        local newPoke = getCreatureSummons(pid)[#getCreatureSummons(pid)]
        setPlayerStorageValue(newPoke, 1001, pokes[getCreatureName(newPoke)].offense * getPlayerLevel(pid))
        setPlayerStorageValue(newPoke, 1002, pokes[getCreatureName(newPoke)].defense)             
        setPlayerStorageValue(newPoke, 1003, pokes[getCreatureName(newPoke)].agility)
        setPlayerStorageValue(newPoke, 1004, pokes[getCreatureName(newPoke)].vitality * getPlayerLevel(pid))
        setPlayerStorageValue(newPoke, 1005, pokes[getCreatureName(newPoke)].specialattack * getPlayerLevel(pid))
        setCreatureMaxHealth(newPoke, getVitality(newPoke) * HPperVITsummon)
        doCreatureAddHealth(newPoke, getCreatureMaxHealth(newPoke))
        doCreatureAddHealth(cid, -getCreatureMaxHealth(cid) * (config.health / 100))
    end
elseif spell == "Unown Rush" then
    local config = {
        distEffect = xxx,            --Distance effect.
        effect = xxx,                --Efeito de invisibilidade.
        barrierEffect = xxx,         --Effect do Barrier.
        barrierTime = 8,             --Duração do Barrier, em segundos.
        barrierInterval = 500,       --Intervalo de tempo, em milésimos de segundo, entre cada efeito do Barrier.
        times = 4,                   --Quantas vezes a spell em área será "lançada" (também quantas vezes o efeito será "rebatido" entre Unown Legion e os Unowns).
        interval = 400,              --Intervalo de tempo entre as "rebatidas", em milésimos de segundo.
        intervalAOE = 200,           --Intervalo de tempo entre os "lances" da spell em área.
        combat = ghostDmg,           --Elemento da spell.
    }
    function barrierEffect(cid, time)
        if isCreature(cid) then
            if time < 0 then
                return true
            end
            doSendMagicEffect({x = getThingPos(cid).x + 1, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, config.barrierEffect)
            addEvent(barrierEffect, config.barrierInterval, cid, time - 1)
        end
    end
    local summons, t = getCreatureSummons(getCreatureMaster(cid)), {}
    doDisapear(cid)
    doSendMagicEffect(getThingPos(cid), config.effect)
    for i = 1, config.times do
        for j = 2, #summons do
            if isCreature(summons[j]) and isCreature(cid) then
                t[#t + 1] = summons[j]
                addEvent(function()
                    doSendDistanceShoot(getThingPos(cid), getThingPos(summons[j]), config.distEffect)
                    addEvent(function()
                        doSendDistanceShoot(getThingPos(summons[j]), getThingPos(cid), config.distEffect)
                    end, 100)
                end, i * config.interval + 100)
            end
        end
    end
    addEvent(function()
        barrierEffect(cid, math.floor(config.barrierTime * 1000 / config.barrierInterval))
        if isCreature(cid) then
            for i = 1, #t do
                if isCreature(t[i]) then
                    doRemoveCreature(t[i])
                end
            end
            for i = 1, config.times do
                addEvent(function()
                    if isCreature(cid) then
                        local area = getPosfromArea(cid, rushAreaEffect)
                        for j = 1, #area do
                            doSendDistanceShoot(getThingPos(cid), area[j], config.distEffect)
                        end
                        doDanoWithProtect(cid, config.combat, getThingPos(cid), rushAreaDamage, -min, -max, 0)
                        if i == config.times then
                            doAppear(cid)
                            setPlayerStorageValue(cid, 9658783, 1)
                            addEvent(function()
                                if isCreature(cid) then
                                    setPlayerStorageValue(cid, 9658783, -1)
                                end
                            end, config.barrierTime * 1000 - (config.times * (config.interval + config.intervalAOE)))
                        end
                    end
                end, i * config.intervalAOE)
            end
        end
    end, config.times * config.interval + 100 * config.times)
Depois, em data/actions/scripts, goback.lua:
Acima de:
local cd = getCD(item.uid, "blink", 30)
coloque:
    if #getCreatureSummons(cid) > 1 then
        for _, s in pairs(getCreatureSummons(cid)) do
            if getCreatureName(s) == "Unown" then
                doRemoveCreature(s)
            end
        end
    end
Depois, em data/talkactions/scripts, move1.lua:
Abaixo de:
if getPlayerStorageValue(mypoke, 93828) > os.time() then
    return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.")
end
coloque:
    local unownCount = 7           --Quantidade de Unowns máxima/quantidade de Unowns para usar o Unown Rush.
    if move.name == "Unown Help" then
        if #getCreatureSummons(cid) >= unownCount + 1 then
            return doPlayerSendCancel(cid, "You already have "..unownCount.." Unowns helping you.")
        end
    elseif move.name == "Unown Rush" then
        if #getCreatureSummons(cid) < unownCount + 1 then
            return doPlayerSendCancel(cid, "You need "..unownCount.." Unowns helping you to use this spell.")
        end
    end

 

man nao consigo instala as magias nem a vortex nem a unow da 2000000 de erros no console e nem da pra ver o erro porq fica dando erro dmais. tem como vc me add skype pra ajuda nao demora. se merece todo resp da galera otimo scripter. meu skype é clebermoreno1

Editado por clebao666
Link para o comentário
Compartilhar em outros sites

  • 0

Poste aqui (ou por PM, se preferir) todos os arquivos que mencionei (pokemon moves.lua, move1.lua, newStatusSyst.lua, goback.lua, areas.lua) em spoiler (são arquivos grandes). Assim, posso instalar todos as spells para você, sobrando apenas a tarefa de configurar as spells em configuration.lua.

EDIT: Ops, agora que percebi ter esqueci de também postar as áreas da spell. Meu comentário anterior foi atualizado com elas.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

ae zipter nao sei vc manja de adicionar esse tipo de magia criada no spell creator mais vamo la.

criei a magia la no spell creator e agora nao sei como arrumala no ot. vo manda a magia ta a xml e a magia. eu nao se colocar ela com aquele botao entao vo taca ela toda ae, me desculpa.

 

-- SpellCreator generated.

-- =============== COMBAT VARS ===============
-- Areas/Combat for 0ms
local combat0_Brush = createCombatObject()
setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, 226)
setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_UNDEFINEDDAMAGE)
setCombatArea(combat0_Brush,createCombatArea({{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{1, 1, 1, 0, 2, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 0}}))
function getDmg_Brush(cid, level, maglevel)
return (200)*-1,(1000)*-1
end
setCombatCallback(combat0_Brush, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush")

local con___combat0_Brush = createConditionObject(0+CONDITION_PARALYZE)
addDamageCondition(con___combat0_Brush, 3, 1000, -400)
setCombatCondition(combat0_Brush, con___combat0_Brush)

-- Areas/Combat for 900ms
local combat9_Brush_2 = createCombatObject()
setCombatParam(combat9_Brush_2, COMBAT_PARAM_EFFECT, 91)
setCombatParam(combat9_Brush_2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatArea(combat9_Brush_2,createCombatArea({{0, 0, 0, 0, 1, 0, 1, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1},
{1, 0, 0, 0, 0, 2, 0, 0, 0, 0},
{0, 1, 0, 1, 0, 0, 0, 1, 0, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0}}))
function getDmg_Brush_2(cid, level, maglevel)
return (500)*-1,(1000)*-1
end
setCombatCallback(combat9_Brush_2, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_2")

-- Areas/Combat for 1600ms
local combat16_Brush_3 = createCombatObject()
setCombatParam(combat16_Brush_3, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat16_Brush_3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatArea(combat16_Brush_3,createCombatArea({{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0}}))
function getDmg_Brush_3(cid, level, maglevel)
return (200)*-1,(400)*-1
end
setCombatCallback(combat16_Brush_3, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_3")

-- Areas/Combat for 2500ms
local combat25_Brush_4 = createCombatObject()
setCombatParam(combat25_Brush_4, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
setCombatParam(combat25_Brush_4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatArea(combat25_Brush_4,createCombatArea({{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 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},
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1}}))
function getDmg_Brush_4(cid, level, maglevel)
return (10)*-1,(20)*-1
end
setCombatCallback(combat25_Brush_4, CALLBACK_PARAM_LEVELMAGICVALUE, "getDmg_Brush_4")

-- =============== CORE FUNCTIONS ===============
local function RunPart(c,cid,var,dirList,dirEmitPos) -- Part
if (isCreature(cid)) then
doCombat(cid, c, var)
if (dirList ~= nil) then -- Emit distance effects
local i = 2;
while (i < #dirList) do
doSendDistanceShoot(dirEmitPos,{x=dirEmitPos.x-dirList,y=dirEmitPos.y-dirList[i+1],z=dirEmitPos.z},dirList[1])
i = i + 2
end
end
end
end

function onCastSpell(cid, var)
local startPos = getCreaturePosition(cid)
RunPart(combat0_Brush,cid,var)
addEvent(RunPart,900,combat9_Brush_2,cid,var)
addEvent(RunPart,1600,combat16_Brush_3,cid,var)
addEvent(RunPart,2500,combat25_Brush_4,cid,var)
return true
end

 

 

 

e essa e a xml que gero la tbm

 

<instant name="teste" words="default" lvl="100" maglv="0" mana="0" exhaustion="30" prem="0" needlearn="0" blockwalls="0" aggressive="1" event="script" value="teste.lua">
</instant>

 

 

lembrabdo que criei essa magia pra testar agora so preciso aprender a colocala no ot uso pokecyan oq vc precisa e so fala que te mando ae vlw drnovo man.

 

 

Copiar uma spell como este Unown Rush, ou seja, uma spell cheia de mínimos detalhes, é algo bem chato. Demorei um bom tempo vendo e revendo o vídeo, tentando chegar num resultado semelhante dos intervalos de tempo entre as ações. Caso o resultado não lhe agrade, recomendo alterar as variáveis responsáveis pela manipulação do tempo, juntamente das áreas de dano e efeito.

Todas as 3 spells que postei neste tópico foram testadas e estão funcionando perfeitamente.

Primeiramente, em pokemon moves.lua:

elseif spell == "Unown Help" then
    local config = {
        summonPoke = "Unown",
        health = 5,                       --% de HP (baseada na HP máxima do pokémon) tirada do Unown Legion.
    }
    if isSummon(cid) then
        local pid = getCreatureMaster(cid)
        doSummonMonster(pid, config.summonPoke)
        local newPoke = getCreatureSummons(pid)[#getCreatureSummons(pid)]
        setPlayerStorageValue(newPoke, 1001, pokes[getCreatureName(newPoke)].offense * getPlayerLevel(pid))
        setPlayerStorageValue(newPoke, 1002, pokes[getCreatureName(newPoke)].defense)             
        setPlayerStorageValue(newPoke, 1003, pokes[getCreatureName(newPoke)].agility)
        setPlayerStorageValue(newPoke, 1004, pokes[getCreatureName(newPoke)].vitality * getPlayerLevel(pid))
        setPlayerStorageValue(newPoke, 1005, pokes[getCreatureName(newPoke)].specialattack * getPlayerLevel(pid))
        setCreatureMaxHealth(newPoke, getVitality(newPoke) * HPperVITsummon)
        doCreatureAddHealth(newPoke, getCreatureMaxHealth(newPoke))
        doCreatureAddHealth(cid, -getCreatureMaxHealth(cid) * (config.health / 100))
    end
elseif spell == "Unown Rush" then
    local config = {
        distEffect = xxx,            --Distance effect.
        effect = xxx,                --Efeito de invisibilidade.
        barrierEffect = xxx,         --Effect do Barrier.
        barrierTime = 8,             --Duração do Barrier, em segundos.
        barrierInterval = 500,       --Intervalo de tempo, em milésimos de segundo, entre cada efeito do Barrier.
        times = 4,                   --Quantas vezes a spell em área será "lançada" (também quantas vezes o efeito será "rebatido" entre Unown Legion e os Unowns).
        interval = 400,              --Intervalo de tempo entre as "rebatidas", em milésimos de segundo.
        intervalAOE = 200,           --Intervalo de tempo entre os "lances" da spell em área.
        combat = ghostDmg,           --Elemento da spell.
    }
    function barrierEffect(cid, time)
        if isCreature(cid) then
            if time < 0 then
                return true
            end
            doSendMagicEffect({x = getThingPos(cid).x + 1, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, config.barrierEffect)
            addEvent(barrierEffect, config.barrierInterval, cid, time - 1)
        end
    end
    local summons, t = getCreatureSummons(getCreatureMaster(cid)), {}
    doDisapear(cid)
    doSendMagicEffect(getThingPos(cid), config.effect)
    for i = 1, config.times do
        for j = 2, #summons do
            if isCreature(summons[j]) and isCreature(cid) then
                t[#t + 1] = summons[j]
                addEvent(function()
                    doSendDistanceShoot(getThingPos(cid), getThingPos(summons[j]), config.distEffect)
                    addEvent(function()
                        doSendDistanceShoot(getThingPos(summons[j]), getThingPos(cid), config.distEffect)
                    end, 100)
                end, i * config.interval + 100)
            end
        end
    end
    addEvent(function()
        barrierEffect(cid, math.floor(config.barrierTime * 1000 / config.barrierInterval))
        if isCreature(cid) then
            for i = 1, #t do
                if isCreature(t[i]) then
                    doRemoveCreature(t[i])
                end
            end
            for i = 1, config.times do
                addEvent(function()
                    if isCreature(cid) then
                        local area = getPosfromArea(cid, rushAreaEffect)
                        for j = 1, #area do
                            doSendDistanceShoot(getThingPos(cid), area[j], config.distEffect)
                        end
                        doDanoWithProtect(cid, config.combat, getThingPos(cid), rushAreaDamage, -min, -max, 0)
                        if i == config.times then
                            doAppear(cid)
                            setPlayerStorageValue(cid, 9658783, 1)
                            addEvent(function()
                                if isCreature(cid) then
                                    setPlayerStorageValue(cid, 9658783, -1)
                                end
                            end, config.barrierTime * 1000 - (config.times * (config.interval + config.intervalAOE)))
                        end
                    end
                end, i * config.intervalAOE)
            end
        end
    end, config.times * config.interval + 100 * config.times)

Em areas.lua:

rushAreaEffect = {                           --Área do Unown Rush de efeito (até onde o efeito vai, a partir do usuário da spell).
    {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
    {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
    {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
    {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 
    {1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1},
    {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
    {0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
    {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
    {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
    {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
}
rushAreaDamage = createCombatArea{           --Área do Unown Rush de dano.
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, 
    {0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
}
Depois, em data/actions/scripts, goback.lua:
Acima de:
local cd = getCD(item.uid, "blink", 30)
coloque:
    if #getCreatureSummons(cid) > 1 then
        for _, s in pairs(getCreatureSummons(cid)) do
            if getCreatureName(s) == "Unown" then
                doRemoveCreature(s)
            end
        end
    end
Depois, em data/talkactions/scripts, move1.lua:
Abaixo de:
if getPlayerStorageValue(mypoke, 93828) > os.time() then
    return doPlayerSendCancel(cid, "Your pokemon can't use moves right now.")
end
coloque:
    local unownCount = 7           --Quantidade de Unowns máxima/quantidade de Unowns para usar o Unown Rush.
    if move.name == "Unown Help" then
        if #getCreatureSummons(cid) >= unownCount + 1 then
            return doPlayerSendCancel(cid, "You already have "..unownCount.." Unowns helping you.")
        end
    elseif move.name == "Unown Rush" then
        if #getCreatureSummons(cid) < unownCount + 1 then
            return doPlayerSendCancel(cid, "You need "..unownCount.." Unowns helping you to use this spell.")
        end
    end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Não crie magias para o PDA usando este programa. Ele é direcionado a criação de spells tradicionais do Tibia.

Para a sua base, siga este tutorial. Para criação do código de magias, recomendo aprender Lua e/ou solicitá-las na área de pedidos e dúvidas de derivados (como por exemplo você fez aqui).

A propósito, e essas três spells que fiz? Você por acaso as testou? Depois do meu último comentário, parece que você simplesmente se esqueceu deste tópico.

Link para o comentário
Compartilhar em outros sites

  • 0

Poste aqui (ou por PM, se preferir) todos os arquivos que mencionei (pokemon moves.lua, move1.lua, newStatusSyst.lua, goback.lua, areas.lua) em [b]spoiler [/b](são arquivos grandes). Assim, posso instalar todos as spells para você, sobrando apenas a tarefa de configurar as spells em configuration.lua.
EDIT: Ops, agora que percebi ter esqueci de também postar as áreas da spell. Meu comentário anterior foi atualizado com elas.

vo postar oq vc pediu mais to tentando aq colocar as magias no ot e ate agora nadaaaaa.

[spoiler] const_distance_delay = 56

RollOuts = {
["Voltorb"] = {lookType = 638},
["Electrode"] = {lookType = 637},
["Sandshrew"] = {lookType = 635},
["Sandslash"] = {lookType = 636},
["Phanpy"] = {lookType = 1005},
["Donphan"] = {lookType = 1007},
["Miltank"] = {lookType = 1006},                
["Golem"] = {lookType = 639},
["Omastar"] = {lookType = 1579},
["Shiny Electrode"] = {lookType = 1387},
["Shiny Golem"] = {lookType = 1403},
["Shiny Voltorb"] = {lookType = 1388},
["Shiny Sandslash"] = {lookType = 1506}
}

--//////////////////////////////////////////////////////////////////////////////////////////////////////////--
local function getSubName(cid, target)
if not isCreature(cid) then return "" end
if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
   return getPlayerStorageValue(cid, 1010)
elseif pokeHaveReflect(cid) and isCreature(target) then
   return getCreatureName(target)
else                                                                --alterado v1.6.1
   return getCreatureName(cid)
end
end

local function getThingName(cid)
if not isCreature(cid) then return "" end   --alterado v1.6
return getCreatureName(cid)
end

function getTableMove(cid, move)               --alterado v1.6
local backup = {f = 0, t = ""}
if getThingName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
   name = getPlayerStorageValue(cid, 1010)
else
   name = getThingName(cid)
end
if not isCreature(cid) or name == "" or not move then return backup end
local x = movestable[name]
if not x then return "" end   
local z = {x.move1, x.move2, x.move3, x.move4, x.move5, x.move6, x.move7, x.move8, x.move9, x.move10, x.move11, x.move12, x.passive1, x.passive2, x.passive3}
if getPlayerStorageValue(cid, 21103) ~= -1 then
   local sto = getPlayerStorageValue(cid, 21103)
   setPlayerStorageValue(cid, 21103, -1)
   return {f = sto, t = ""}
end
for j = 1, 15 do
  if z[j] and z[j].name == move then
     return z[j]
  end
end
return movesinfo[move]
end

function getMasterTarget(cid)
if isCreature(cid) and getPlayerStorageValue(cid, 21101) ~= -1 then
   return getPlayerStorageValue(cid, 21101)     --alterado v1.6
end
    if isSummon(cid) then
        return getCreatureTarget(getCreatureMaster(cid))
    else
        return getCreatureTarget(cid)
    end
end
--////////////////////////////////////////////////////////////////////////////////////////////////////////--

function docastspell(cid, spell, mina, maxa)

local target = 0
local getDistDelay = 0
if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return false end  --alterado v1.6
if isSleeping(cid) and getPlayerStorageValue(cid, 21100) <= -1 then return true end  --alterado v1.6

if isCreature(getMasterTarget(cid)) then
    target = getMasterTarget(cid)
    getDistDelay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay
end

if isMonster(cid) and not isSummon(cid) then
    if getCreatureCondition(cid, CONDITION_EXHAUST) then
    return true
    end
    doCreatureAddCondition(cid, wildexhaust)
end

local mydir = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local table = getTableMove(cid, spell) --alterado v1.6

local min = 0
local max = 0                                                                                                                                                                                                                                                                     
                                                                                       --alterado v1.7 \/\/
if ehMonstro(cid) and isCreature(getMasterTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getMasterTarget(cid))) then
   local target = getMasterTarget(cid)
   if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then                                                                                      
      if isCreature(getMasterTarget(target)) then  --alterado v1.6
         doSendMagicEffect(getThingPosWithDebug(target), 211)
         doSendAnimatedText(getThingPosWithDebug(target), "TOO BAD", 215)                                 
         doTeleportThing(target, getClosestFreeTile(target, getThingPosWithDebug(cid)), false)
         doSendMagicEffect(getThingPosWithDebug(target), 211)
         doFaceCreature(target, getThingPosWithDebug(cid))
         return false    --alterado v1.8
      end
    end           
end

--- FEAR / ROAR / SILENCE ---
if (isWithFear(cid) or isSilence(cid)) and getPlayerStorageValue(cid, 21100) <= -1 then
return true                                      --alterado v1.6!!
end
----------------------------
    
if mina and maxa then
min = math.abs(mina)
max = math.abs(maxa)
elseif not isPlayer(cid) then
    if table ~= "" then   --alterado v1.6
    
        min = getSpecialAttack(cid) * table.f * 0.1   --alterado v1.6
        max = min + (isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid))
    
        if spell == "Selfdestruct" then
           min = getCreatureHealth(cid)  --alterado v1.6
           max = getCreatureHealth(cid)
        end

        if not isSummon(cid) and not isInArray({"Demon Puncher", "Demon Kicker", "Blaze Kicker"}, spell) then --alterado v1.7
            doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
        end
        if isNpcSummon(cid) then
            local mnn = {" use ", " "}
            local use = mnn[math.random(#mnn)]
            doCreatureSay(getCreatureMaster(cid), getPlayerStorageValue(cid, 1007)..","..use..""..doCorrectString(spell).."!", 1)
        end
    else
    print("Error trying to use move "..spell..", move not specified in the pokemon table.")
    end
    
end
--- FOCUS ----------------------------------           
if getPlayerStorageValue(cid, 253) >= 0 and table ~= "" and table.f ~= 0 then   --alterado v1.6
    min = min * 2
    max = max * 2
    setPlayerStorageValue(cid, 253, -1)
end
--- Shredder Team -------------------------------
if getPlayerStorageValue(cid, 637501) >= 1 then
   if #getCreatureSummons(cid) == 1 then
      docastspell(getCreatureSummons(cid)[1], spell)
   elseif #getCreatureSummons(cid) == 2 then
      docastspell(getCreatureSummons(cid)[1], spell)
      docastspell(getCreatureSummons(cid)[2], spell)
   end    
      
elseif getPlayerStorageValue(cid, 637500) >= 1 then
   min = 0
   max = 0                                     
end
------------------Miss System--------------------------
local cd = getPlayerStorageValue(cid, conds["Miss"])
local cd2 = getPlayerStorageValue(cid, conds["Confusion"])      --alterado v1.5
local cd3 = getPlayerStorageValue(cid, conds["Stun"])
if cd >= 0 or cd2 >= 0 or cd3 >= 0 then                                                         --alterado v1.7
   if not isInArray({"Shock-Counter", "Lava-Counter", "Counter Helix", "Demon Puncher", "Blaze Kicker", "Demon Kicker", "Stunning Confusion", "Electric Charge", "Melody", "Mirror Coat", "Mega Drain",
"Aromateraphy", "Heal Bell", "Emergency Call", "Magical Leaf", "Sunny Day", "Taunt", "Skull Bash", "Safeguard", "Rain Dance", "Spores Reaction", "Giroball", "Counter Claw", "Counter Spin", "Dragon Fury",
"Amnesia", "Zen Mind", "Bone Spin"}, spell) and getPlayerStorageValue(cid, 21100) <= -1 then
      if math.random(1, 100) > 30 then                                                                               --alterado v1.6
         doSendAnimatedText(getThingPosWithDebug(cid), "MISS", 215)
         return false
      end
   end
end
---------------GHOST DAMAGE-----------------------
ghostDmg = GHOSTDAMAGE
psyDmg = PSYCHICDAMAGE

if getPlayerStorageValue(cid, 999457) >= 1 and table ~= "" and table.f ~= 0 then    --alterado v1.6
   psyDmg = MIRACLEDAMAGE                                                              
   ghostDmg = DARK_EYEDAMAGE
   addEvent(setPlayerStorageValue, 50, cid, 999457, -1)
end
--------------------REFLECT----------------------
setPlayerStorageValue(cid, 21100, -1)                --alterado v1.6
if not isInArray({"Psybeam", "Sand Attack", "Flamethrower", "Heal Bell"}, spell) then  --alterado v1.8
   setPlayerStorageValue(cid, 21101, -1)
end
setPlayerStorageValue(cid, 21102, spell)
---------------------------------------------------



if spell == "Reflect" or spell == "Mimic"  or spell == "Magic Coat" then

    if spell == "Magic Coat" then
      eff = 11
    else
      eff = 135
    end

    doSendMagicEffect(getThingPosWithDebug(cid), eff)
    setPlayerStorageValue(cid, 21099, 1)         
    
elseif spell == "Quick Attack" then

   doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 111)

elseif spell == "Razor Leaf" or spell == "Magical Leaf" then                      

local eff = spell == "Razor Leaf" and 8 or 21

local function throw(cid, target)
if not isCreature(cid) or not isCreature(target) then return false end
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), eff)
    doDanoInTargetWithDelay(cid, target, GRASSDAMAGE, min, max, 245)  --alterado v1.7
end

addEvent(throw, 0, cid, target)
addEvent(throw, 100, cid, target) --alterado v1.7
        
elseif spell == "Vine Whip" then

local area = getThingPosWithDebug(cid)
local dano = {}
local effect = 255

    if mydir == 0 then
        area.x = area.x + 1
        area.y = area.y - 1
        dano = whipn
        effect = 80
    elseif mydir == 1 then
        area.x = area.x + 2
        area.y = area.y + 1
        dano = whipe
        effect = 83
    elseif mydir == 2 then
        area.x = area.x + 1
        area.y = area.y + 2        
        dano = whips
        effect = 81
    elseif mydir == 3 then
        area.x = area.x - 1
        area.y = area.y + 1
        dano = whipw
        effect = 82
    end

        doSendMagicEffect(area, effect)
        doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), dano, -min, -max, 255)
        
elseif spell == "Headbutt" then
       
       doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 118)
       
elseif spell == "Leech Seed" then

    local ret = {}
    ret.id = target
    ret.attacker = cid
    ret.cd = 5
    ret.check = getPlayerStorageValue(target, conds["Leech"])
    ret.damage = isSummon(cid) and getMasterLevel(cid)+getPokemonBoost(cid) or getPokemonLevel(cid)
    ret.cond = "Leech"
    
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 1)
    addEvent(doMoveDano2, 1000, cid, target, GRASSDAMAGE, 0, 0, ret, spell)
    
elseif spell == "Protection" then

    local pos = getPosfromArea(cid, heal)
    local n = 0
    
    while n < #pos do
    n = n+1
    thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}
    local pid = getThingFromPosWithProtect(thing)
    local pospid = getThingPosWithDebug(pid)
    local poscid = getThingPosWithDebug(cid)

    doSendMagicEffect(pos[n], 12)
    for i = 0, 9 do
    if isCreature(pid) then
        if isSummon(cid) and (isSummon(pid) or isPlayer(pid)) then
            if canAttackOther(cid, pid) == "Cant" then
                doCreatureSetNoMove(pid, true)
                doCreatureSetNoMove(cid, true)
                setPlayerStorageValue(pid, 9658783, 1)
                setPlayerStorageValue(cid, 9658783, 1)
                addEvent(doSendMagicEffect, i*800, pospid, 117)
                addEvent(doSendMagicEffect, i*800, poscid, 117)
                addEvent(setPlayerStorageValue, 8000, pid, 9658783, -1)
                addEvent(setPlayerStorageValue, 8000, cid, 9658783, -1)
                addEvent(doCreatureSetNoMove, 8000, pid, false)
                addEvent(doCreatureSetNoMove, 8000, cid, false)
            end
        elseif ehMonstro(cid) and ehMonstro(pid) then
            doCreatureSetNoMove(pid, true)
            doCreatureSetNoMove(cid, true)
            setPlayerStorageValue(pid, 9658783, 1)
            setPlayerStorageValue(cid, 9658783, 1)
            addEvent(doSendMagicEffect, i*800, pospid, 117)
            addEvent(doSendMagicEffect, i*800, poscid, 117)
            addEvent(setPlayerStorageValue, 8000, pid, 9658783, -1)
            addEvent(setPlayerStorageValue, 8000, cid, 9658783, -1)
            addEvent(doCreatureSetNoMove, 8000, pid, false)
            addEvent(doCreatureSetNoMove, 8000, cid, false)
        end
    end
    end
    end

elseif spell == "Solar Beam" then
    
local function useSolarBeam(cid)
        if not isCreature(cid) then
        return true
        end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
        return true
        end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
        return true
        end
            local effect1 = 255
            local effect2 = 255
            local effect3 = 255
            local effect4 = 255
            local effect5 = 255
            local area = {}
            local pos1 = getThingPosWithDebug(cid)
            local pos2 = getThingPosWithDebug(cid)
            local pos3 = getThingPosWithDebug(cid)
            local pos4 = getThingPosWithDebug(cid)
            local pos5 = getThingPosWithDebug(cid)
        if getCreatureLookDir(cid) == 1 then
            effect1 = 4
            effect2 = 10
            effect3 = 10
            effect4 = 10
            effect5 = 0
            pos1.x = pos1.x + 2
            pos1.y = pos1.y + 1
            pos2.x = pos2.x + 3
            pos2.y = pos2.y + 1
            pos3.x = pos3.x + 4
            pos3.y = pos3.y + 1
            pos4.x = pos4.x + 5
            pos4.y = pos4.y + 1
            pos5.x = pos5.x + 6
            pos5.y = pos5.y + 1
            area = solare
        elseif getCreatureLookDir(cid) == 0 then
            effect1 = 36
            effect2 = 37
            effect3 = 37
            effect4 = 38
            pos1.x = pos1.x + 1
            pos1.y = pos1.y - 1
            pos2.x = pos2.x + 1
            pos2.y = pos2.y - 3
            pos3.x = pos3.x + 1
            pos3.y = pos3.y - 4
            pos4.x = pos4.x + 1
            pos4.y = pos4.y - 5
            area = solarn
        elseif getCreatureLookDir(cid) == 2 then
            effect1 = 46
            effect2 = 50
            effect3 = 50
            effect4 = 59
            pos1.x = pos1.x + 1
            pos1.y = pos1.y + 2
            pos2.x = pos2.x + 1
            pos2.y = pos2.y + 3
            pos3.x = pos3.x + 1
            pos3.y = pos3.y + 4
            pos4.x = pos4.x + 1
            pos4.y = pos4.y + 5
            area = solars
        elseif getCreatureLookDir(cid) == 3 then
            effect1 = 115
            effect2 = 162
            effect3 = 162
            effect4 = 162
            effect5 = 163
            pos1.x = pos1.x - 1
            pos1.y = pos1.y + 1
            pos2.x = pos2.x - 3
            pos2.y = pos2.y + 1
            pos3.x = pos3.x - 4
            pos3.y = pos3.y + 1
            pos4.x = pos4.x - 5
            pos4.y = pos4.y + 1
            pos5.x = pos5.x - 6
            pos5.y = pos5.y + 1
            area = solarw
        end

        if effect1 ~= 255 then
            doSendMagicEffect(pos1, effect1)
        end
        if effect2 ~= 255 then
            doSendMagicEffect(pos2, effect2)
        end
        if effect3 ~= 255 then
            doSendMagicEffect(pos3, effect3)
        end
        if effect4 ~= 255 then
            doSendMagicEffect(pos4, effect4)
        end
        if effect5 ~= 255 then
            doSendMagicEffect(pos5, effect5)
        end
    
        doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), area, -min, -max, 255)    
        doRegainSpeed(cid)
        setPlayerStorageValue(cid, 3644587, -1)
    end

    local function ChargingBeam(cid)
        if not isCreature(cid) then
        return true
        end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
        return true
        end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
        return true
        end
        local tab = {}

        for x = -2, 2 do
            for y = -2, 2 do
                local pos = getThingPosWithDebug(cid)
                pos.x = pos.x + x
                pos.y = pos.y + y
                    if pos.x ~= getThingPosWithDebug(cid).x and pos.y ~= getThingPosWithDebug(cid).y then
                    table.insert(tab, pos)
                    end
            end
        end
    doSendDistanceShoot(tab[math.random(#tab)], getThingPosWithDebug(cid), 37)
    end

doChangeSpeed(cid, -getCreatureSpeed(cid))
setPlayerStorageValue(cid, 3644587, 1)          --alterado v1.6  n sei pq mas tava dando debug o.O

doSendMagicEffect(getThingPosWithDebug(cid), 132)
addEvent(useSolarBeam, 650, cid)

elseif spell == "Sleep Powder" then

local ret = {}
ret.id = 0
ret.cd = math.random(6, 9)
ret.check = 0
ret.first = true                        --alterado v1.6
ret.cond = "Sleep"
    
doMoveInArea2(cid, 27, confusion, NORMALDAMAGE, 0, 0, spell, ret)

elseif spell == "Stun Spore" then
        
    local ret = {}
    ret.id = 0
    ret.cd = 9
    ret.eff = 0
    ret.check = 0
    ret.spell = spell
    ret.cond = "Stun"
    
    doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret)

elseif spell == "Poison Powder" then                              

local ret = {}
ret.id = 0
ret.cd = math.random(6, 15)              --alterado v1.6
ret.check = 0
local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid)
ret.damage = math.floor((getPokemonLevel(cid)+lvl * 3)/2)
ret.cond = "Poison"                              

doMoveInArea2(cid, 84, confusion, NORMALDAMAGE, 0, 0, spell, ret)
    
elseif spell == "Bullet Seed" then
               --cid, effDist, effDano, areaEff, areaDano, element, min, max
doMoveInAreaMulti(cid, 1, 45, bullet, bulletDano, GRASSDAMAGE, min, max)

elseif spell == "Body Slam" then
    
       doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 118)
    
elseif spell == "Leaf Storm" or tonumber(spell) == 73 then

    addEvent(doDanoWithProtect, 150, cid, GRASSDAMAGE, getThingPosWithDebug(cid), grassarea, -min, -max, 0)

    local pos = getThingPosWithDebug(cid)

    local function doSendLeafStorm(cid, pos)              --alterado!!
        if not isCreature(cid) then return true end
        doSendDistanceShoot(getThingPosWithDebug(cid), pos, 8)
    end

    for a = 1, 100 do
        local lugar = {x = pos.x + math.random(-6, 6), y = pos.y + math.random(-5, 5), z = pos.z}
        addEvent(doSendLeafStorm, a * 2, cid, lugar)
    end
    
elseif spell == "Scratch" then

    doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 142)
    
elseif spell == "Iron Head" then

    doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 77)
    
elseif spell == "Ember" then

        doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
        doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 15)  --alterado v1.7

elseif spell == "Flamethrower" then

    local flamepos = getThingPosWithDebug(cid)
    local effect = 255
    local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

    if a == 0 then
        flamepos.x = flamepos.x+1
        flamepos.y = flamepos.y-1
        effect = 106
    elseif a == 1 then
        flamepos.x = flamepos.x+3
        flamepos.y = flamepos.y+1
        effect = 109
    elseif a == 2 then
        flamepos.x = flamepos.x+1
        flamepos.y = flamepos.y+3
        effect = 107
    elseif a == 3 then
        flamepos.x = flamepos.x-1
        flamepos.y = flamepos.y+1
        effect = 108
    end

        doMoveInArea2(cid, 0, flamek, FIREDAMAGE, min, max, spell)
        doSendMagicEffect(flamepos, effect)  
     

elseif spell == "Fireball" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
    addEvent(doDanoWithProtect, 200, cid, FIREDAMAGE, getThingPosWithDebug(target), waba, min, max, 5)
    
elseif spell == "Fire Fang" then

    doSendMagicEffect(getThingPosWithDebug(target), 138)
    doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 15) --alterado v1.7
    
elseif spell == "Fire Blast" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area, eff)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, FIREDAMAGE, area, 0, 0, 0, eff)
   doAreaCombatHealth(cid, FIREDAMAGE, area, whirl3, -min, -max, 35)
end
end

for a = 0, 4 do

local t = {
[0] = {60, {x=p.x, y=p.y-(a+1), z=p.z}},           --alterado v1.4
[1] = {61, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {62, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {63, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end
    
elseif spell == "Rage" then

   local ret = {}
   ret.id = cid
   ret.cd = 15
   ret.eff = 13
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)
      
elseif spell == "Raging Blast" then

                 --cid, effDist, effDano, areaEff, areaDano, element, min, max
       doMoveInAreaMulti(cid, 3, 6, bullet, bulletDano, FIREDAMAGE, min, max)
       
elseif spell == "Dragon Claw" then

       doDanoWithProtect(cid, DRAGONDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 141)
       
elseif spell == "Wing Attack" or spell == "Steel Wing" then

local effectpos = getThingPosWithDebug(cid)
local effect = 255
local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

    if a == 0 then
        effect = spell == "Steel Wing" and 251 or 128
        effectpos.x = effectpos.x + 1
        effectpos.y = effectpos.y - 1                   --alterado v1.4
    elseif a == 1 then
        effectpos.x = effectpos.x + 2
        effectpos.y = effectpos.y + 1
        effect = spell == "Steel Wing" and 253 or 129
    elseif a == 2 then
        effectpos.x = effectpos.x + 1
        effectpos.y = effectpos.y + 2
        effect = spell == "Steel Wing" and 252 or 131
    elseif a == 3 then
        effectpos.x = effectpos.x - 1
        effectpos.y = effectpos.y + 1
        effect = spell == "Steel Wing" and 254 or 130
    end

        doSendMagicEffect(effectpos, effect)
        doMoveInArea2(cid, 0, wingatk, FLYINGDAMAGE, min, max, spell)
        
elseif spell == "Magma Storm" then

local eff = {6, 35, 35, 6}
local area = {flames1, flames2, flames3, flames4}

addEvent(doMoveInArea2, 2*450, cid, 2, flames0, FIREDAMAGE, min, max, spell)
for i = 0, 3 do
    addEvent(doMoveInArea2, i*450, cid, eff[i+1], area[i+1], FIREDAMAGE, min, max, spell)
end


elseif spell == "Ice Storm" then

local eff = {52, 179, 179, 52}
local area = {flames1, flames2, flames3, flames4}

addEvent(doMoveInArea2, 2*450, cid, 2, flames0, ICEDAMAGE, min, max, spell)
for i = 0, 3 do
    addEvent(doMoveInArea2, i*450, cid, eff[i+1], area[i+1], ICEDAMAGE, min, max, spell)
end


elseif spell == "Bubbles" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
    doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 68) --alterado v1.7
    
elseif spell == "Clamp" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
    doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 53)  --alterado v1.7

elseif spell == "Water Gun" then

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {69, {x=p.x, y=p.y-1, z=p.z}},
[1] = {70, {x=p.x+6, y=p.y, z=p.z}},      --alterado v1.8
[2] = {71, {x=p.x, y=p.y+6, z=p.z}},
[3] = {72, {x=p.x-1, y=p.y, z=p.z}},
}

doMoveInArea2(cid, 0, triplo6, WATERDAMAGE, min, max, spell)
doSendMagicEffect(t[a][2], t[a][1])
    
elseif spell == "Waterball" then
                     
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
    doDanoWithProtectWithDelay(cid, target, WATERDAMAGE, min, max, 68, waba)
    
elseif spell == "Aqua Tail" then

    local function rebackSpd(cid, sss)
        if not isCreature(cid) then return true end
        doChangeSpeed(cid, sss)
        setPlayerStorageValue(cid, 446, -1)
    end

    local x = getCreatureSpeed(cid)
    doFaceOpposite(cid)
    doChangeSpeed(cid, -x)
    addEvent(rebackSpd, 400, cid, x)
    setPlayerStorageValue(cid, 446, 1)
    doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 68)
    
elseif spell == "Hydro Cannon" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area, eff)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, WATERDAMAGE, area, 0, 0, 0, eff)
   doAreaCombatHealth(cid, WATERDAMAGE, area, whirl3, -min, -max, 68)
end
end

for a = 0, 4 do

local t = {                                     --alterado v1.4
[0] = {64, {x=p.x, y=p.y-(a+1), z=p.z}},
[1] = {65, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {66, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {67, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end
    
elseif spell == "Harden" or spell == "Calm Mind" or spell == "Defense Curl" or spell == "Charm" then    
                                                                    --alterado v1.4
    if spell == "Calm Mind" then
       eff = 133
    elseif spell == "Charm" then
       eff = 147                --efeito n eh esse.. e n sei se eh soh bonus de def, ou sp.def tb.. ;x
    else                             
       eff = 144
    end
    
    local ret = {}
    ret.id = cid
    ret.cd = 8
    ret.eff = eff
    ret.check = 0
    ret.buff = spell
    ret.first = true
   
    doCondition2(ret)

elseif spell == "Bubble Blast" then

                 --cid, effDist, effDano, areaEff, areaDano, element, min, max
       doMoveInAreaMulti(cid, 2, 68, bullet, bulletDano, WATERDAMAGE, min, max)
      
elseif spell == "Skull Bash" then
local ret = {}
ret.id = 0
ret.cd = 9                        --alterado v1.6
ret.eff = 118
ret.check = 0
ret.first = true
ret.cond = "Paralyze"

       doMoveInArea2(cid, 118, reto5, NORMALDAMAGE, min, max, spell, ret)              

elseif spell == "Hydropump" then

local pos = getThingPosWithDebug(cid)

    local function doSendBubble(cid, pos)
        if not isCreature(cid) then return true end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        doSendDistanceShoot(getThingPosWithDebug(cid), pos, 2)
        doSendMagicEffect(pos, 53)
    end
                                                              --alterado!!
    for a = 1, 20 do
        local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
        addEvent(doSendBubble, a * 25, cid, lugar)
    end
    addEvent(doDanoWithProtect, 150, cid, WATERDAMAGE, pos, waterarea, -min, -max, 0)

elseif spell == "Giga Impact" then

local tempo = 3    --Tempo, em segundos.
local a = {}
local ret1 = {}
    ret1.id = 0
    ret1.cd = 5
    ret1.eff = 0
    ret1.check = 0
    ret1.first = true
    ret1.cond = "Slow"
local ret2 = {}
    ret2.id = 0
    ret2.cd = 5                   
    ret2.eff = 0
    ret2.check = 0
    ret2.first = true
    ret2.cond = "Miss"
    a.speed = getCreatureSpeed(cid)
    doChangeSpeed(cid, -getCreatureSpeed(cid))
    doChangeSpeed(cid, a.speed*2)
    addEvent(function()
        if not isCreature(cid) then return true end
        doRegainSpeed(cid)
        doMoveInArea2(cid, 118, quake, NORMALDAMAGE, min, max, spell, ret1)
        doMoveInArea2(cid, 118, quake, NORMALDAMAGE, 0, 0, spell, ret2)
    end, tempo*1000)

elseif spell == "String Shot" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23)
   
   local ret = {}
   ret.id = target
   ret.cd = 6
   ret.eff = 137
   ret.check = getPlayerStorageValue(target, conds["Stun"])
   ret.spell = spell
   ret.cond = "Stun"
   
   addEvent(doMoveDano2, 100, cid, target, BUGDAMAGE, 0, 0, ret, spell)

elseif spell == "Bug Bite" then

    doSendMagicEffect(getThingPosWithDebug(target), 244)
    doDanoInTargetWithDelay(cid, target, BUGDAMAGE, min, max, 8) --alterado v1.7

elseif spell == "Super Sonic" then

    local rounds = math.random(4, 7)
    rounds = rounds + math.floor(getPokemonLevel(cid) / 35)

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
    local ret = {}
    ret.id = target
    ret.cd = rounds
    ret.check = getPlayerStorageValue(target, conds["Confusion"])
    ret.cond = "Confusion"
    
    addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)

elseif spell == "Whirlwind" then

area = {SL1, SL2, SL3, SL4}

for i = 0, 3 do
    addEvent(doMoveInArea2, i*300, cid, 42, area[i+1], FLYINGDAMAGE, min, max, spell)
end
    
    elseif spell == "Razor Wind" then

area = {SL1, SL2, SL3, SL4}

for i = 0, 3 do
    addEvent(doMoveInArea2, i*300, cid, 131, area[i+1], NORMALDAMAGE, min, max, spell)
end
    
elseif spell == "Psybeam" then

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local t = {
[0] = 58,       --alterado v1.6
[1] = 234,
[2] = 58,
[3] = 209,
}

doMoveInArea2(cid, t[a], reto4, psyDmg, min, max, spell)     --alterado v1.4

elseif spell == "Sand Attack" then

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local t = {
[0] = 120,
[1] = 121,
[2] = 122,
[3] = 119,
}

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

doCreatureSetLookDir(cid, a)  --sera? '-'
stopNow(cid, 1000)  
doMoveInArea2(cid, t[a], reto5, GROUNDDAMAGE, 0, 0, spell, ret)

elseif spell == "Confusion" or spell == "Night Shade" then

    local rounds = math.random(4, 7)       --rever area...
    rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
    
    if spell == "Confusion" then
       dano = psyDmg             --alterado v1.4
    else
       dano = ghostDmg
    end

    local ret = {}
    ret.id = 0
    ret.check = 0
    ret.cd = rounds
    ret.cond = "Confusion"

    doMoveInArea2(cid, 136, selfArea1, dano, min, max, spell, ret)
    
elseif spell == "Horn Attack" then
       
       doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
       doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v1.7

elseif spell == "Poison Sting" then
       
       doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
       doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 8) --alterado v1.7
        
elseif spell == "Fury Cutter" or spell == "Red Fury" then

       local effectpos = getThingPosWithDebug(cid)
       local effect = 255
       local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

    if a == 0 then
        if getSubName(cid, target) == "Scizor" then  --alterado v1.6.1
           effect = 236
        else
           effect = 128
        end
        effectpos.x = effectpos.x + 1
        effectpos.y = effectpos.y - 1
    elseif a == 1 then
        effectpos.x = effectpos.x + 2
        effectpos.y = effectpos.y + 1
        if getSubName(cid, target) == "Scizor" then   --alterado v1.6.1
           effect = 232
        else
           effect = 129
        end
    elseif a == 2 then
        effectpos.x = effectpos.x + 1
        effectpos.y = effectpos.y + 2
        if getSubName(cid, target) == "Scizor" then   --alterado v1.6.1
           effect = 233
        else
           effect = 131
        end
    elseif a == 3 then
        effectpos.x = effectpos.x - 1
        effectpos.y = effectpos.y + 1
        if getSubName(cid, target) == "Scizor" then   --alterado v1.6.1
           effect = 224
        else
           effect = 130
        end
    end
        local function doFury(cid, effect)
        if not isCreature(cid)  then return true end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
           doSendMagicEffect(effectpos, effect)
           doMoveInArea2(cid, 2, wingatk, BUGDAMAGE, min, max, spell)
        end                               
        
        addEvent(doFury, 0, cid, effect)
        addEvent(doFury, 350, cid, effect)
        
elseif spell == "Pin Missile" then

       doMoveInAreaMulti(cid, 13, 7, bullet, bulletDano, BUGDAMAGE, min, max)
       
elseif spell == "Strafe" or spell == "Agility" then

   local ret = {}
   ret.id = cid
   ret.cd = 15
   ret.eff = 14
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)
    
elseif spell == "Gust" then

       doMoveInArea2(cid, 42, reto5, FLYINGDAMAGE, min, max, spell)
       
elseif spell == "Drill Peck" then
    
doDanoWithProtect(cid, FLYINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 148)

elseif spell == "Tornado" then

    local pos = getThingPosWithDebug(cid)

    local function doSendTornado(cid, pos)
        if not isCreature(cid) then return true end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
        doSendDistanceShoot(getThingPosWithDebug(cid), pos, 22)
        doSendMagicEffect(pos, 42)
    end

    for b = 1, 3 do
        for a = 1, 20 do
            local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
            addEvent(doSendTornado, a * 75, cid, lugar)
        end
    end
    doDanoWithProtect(cid, FLYINGDAMAGE, pos, waterarea, -min, -max, 0)
    
elseif spell == "Bite" or tonumber(spell) == 5 then

    doDanoWithProtect(cid, DARKDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 146)
    
elseif spell == "Super Fang" then

    doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 244)
    
elseif spell == "Poison Fang" then

    doSendMagicEffect(getThingPosWithDebug(target), 244)
    doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 114) --alterado v1.7
    
elseif spell == "Sting Gun" then
       
       local function doGun(cid, target)
       if not isCreature(cid) or not isCreature(target) then return true end    --alterado v1.7
          doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 13)
          doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 8)  --alterado v1.7
       end

       setPlayerStorageValue(cid, 3644587, 1)
       addEvent(setPlayerStorageValue, 200, cid, 3644587, 1)
       for i = 0, 2 do
           addEvent(doGun, i*100, cid, target)
       end
       
elseif spell == "Acid" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 14)
    doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 20)    --alterado v1.7
    
elseif spell == "Fear" or spell == "Roar" then

    local ret = {}
    ret.id = 0
    ret.cd = 5
    ret.check = 0
    ret.skill = spell
    ret.cond = "Fear"
    
    doMoveInArea2(cid, 0, confusion, DARKDAMAGE, 0, 0, spell, ret)
    
elseif spell == "Iron Tail" then

    local function rebackSpd(cid, sss)
        if not isCreature(cid) then return true end
        doChangeSpeed(cid, sss)
        setPlayerStorageValue(cid, 446, -1)
    end

    local x = getCreatureSpeed(cid)
    doFaceOpposite(cid)
    doChangeSpeed(cid, -x)
    addEvent(rebackSpd, 400, cid, x)
    setPlayerStorageValue(cid, 446, 1)
    doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 160)
    
elseif spell == "Thunder Shock" then
                                     
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 40)
    doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48)   --alterado v1.7

elseif spell == "Thunder Bolt" then

        --alterado v1.7
        local function doThunderFall(cid, frompos, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local ry = math.abs(frompos.y - pos.y)
        doSendDistanceShoot(frompos, getThingPosWithDebug(target), 41)
        addEvent(doDanoInTarget, ry * 11, cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v1.7
        end

        local function doThunderUp(cid, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local mps = getThingPosWithDebug(cid)
        local xrg = math.floor((pos.x - mps.x) / 2)
        local topos = mps
        topos.x = topos.x + xrg
        local rd =  7
        topos.y = topos.y - rd
        doSendDistanceShoot(getThingPosWithDebug(cid), topos, 41)
        addEvent(doThunderFall, rd * 49, cid, topos, target)
        end        

    setPlayerStorageValue(cid, 3644587, 1)
    addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
    for thnds = 1, 2 do
        addEvent(doThunderUp, thnds * 155, cid, target)
    end
    
elseif spell == "Thunder Wave" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 48
ret.spell = spell
ret.cond = "Stun"

doMoveInArea2(cid, 48, db1, ELECTRICDAMAGE, min, max, spell, ret) --alterado v1.8

elseif spell == "Thunder" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 48
ret.spell = spell
ret.cond = "Stun"

doMoveInArea2(cid, 48, thunderr, ELECTRICDAMAGE, min, max, spell, ret)

elseif spell == "Web Shot" then
                                                  
local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 26
ret.check = 0
ret.spell = spell
ret.cond = "Paralyze"

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23)
    addEvent(doMoveDano2, 100, cid, target, BUGDAMAGE, -min, -max, ret, spell)

elseif spell == "Mega Kick" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113)   --alterado v1.7
    
elseif spell == "Thunder Punch" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    doSendMagicEffect(getThingPosWithDebug(target), 112)
    doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v1.7
    
elseif spell == "Electric Storm" then             

local master = isSummon(cid) and getCreatureMaster(cid) or cid

local function doFall(cid)
for rocks = 1, 42 do
    addEvent(fall, rocks*35, cid, master, ELECTRICDAMAGE, 41, 48)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, 41)
end
addEvent(doFall, 450, cid)

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 48
ret.spell = spell
ret.cond = "Stun"

addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ELECTRICDAMAGE, min, max, spell, ret)

elseif spell == "Web Rain" then             

local master = isSummon(cid) and getCreatureMaster(cid) or cid

local function doFall(cid)
for rocks = 1, 42 do
    addEvent(fall, rocks*35, cid, master, BUGDAMAGE, 23)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, 23)
end
addEvent(doFall, 450, cid)

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 26
ret.spell = spell
ret.cond = "Silence"

addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, BUGDAMAGE, min, max, spell, ret)

elseif spell == "Spider Web" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 26
ret.cond = "Silence"

doMoveInAreaMulti(cid, 23, 26, multi, multiDano, BUGDAMAGE, min, max)
doMoveInArea2(cid, 0, multiDano, BUGDAMAGE, 0, 0, spell, ret)
    
    
elseif spell == "Mud Shot" or spell == "Mud Slap" then

if isCreature(target) then                                    --alterado v1.8
local contudion = spell == "Mud Shot" and "Miss" or "Stun"                                                   
local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 34
ret.check = getPlayerStorageValue(target, conds[contudion])
ret.spell = spell
ret.cond = contudion

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)
    addEvent(doMoveDano2, 100, cid, target, GROUNDDAMAGE, -min, -max, ret, spell)
end
 
elseif spell == "Rollout" then

    local function setOutfit(cid, outfit)
          if isCreature(cid) and getCreatureCondition(cid, CONDITION_OUTFIT) == true then
             if getCreatureOutfit(cid).lookType == outfit then
                doRemoveCondition(cid, CONDITION_OUTFIT)
                if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
                   if isSummon(cid) then
                      local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
                      doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)   --alterado v1.8
                   end
                end
             end
          end
    end
    
    if RollOuts[getSubName(cid, target)] then
        doSetCreatureOutfit(cid, RollOuts[getSubName(cid, target)], -1)   --alterado v1.6.1
    end

    local outfit = getCreatureOutfit(cid).lookType

    local function roll(cid, outfit)
    if not isCreature(cid) then return true end
    if isSleeping(cid) then return true end
       if RollOuts[getSubName(cid, target)] then
          doSetCreatureOutfit(cid, RollOuts[getSubName(cid, target)], -1)   --alterado v1.6.1
       end
       doDanoWithProtect(cid, ROCKDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)
    end

    setPlayerStorageValue(cid, 3644587, 1)
    addEvent(setPlayerStorageValue, 9000, cid, 3644587, -1)
    for r = 1, 11 do  --8
        addEvent(roll, 750 * r, cid, outfit)
    end
    addEvent(setOutfit, 9050, cid, outfit)
    
elseif spell == "Shockwave" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area, areaEff, eff)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end                                             --testar o atk!!
   doAreaCombatHealth(cid, GROUNDDAMAGE, areaEff, 0, 0, 0, eff)    
   doAreaCombatHealth(cid, GROUNDDAMAGE, area, whirl3, -min, -max, 255)     
end
end

for a = 0, 5 do

local t = {
[0] = {126, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}},           
[1] = {124, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+1), y=p.y+1, z=p.z}},
[2] = {125, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+1), z=p.z}},
[3] = {123, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}}
}   
addEvent(sendAtk, 325*a, cid, t[d][2], t[d][3], t[d][1])
end                          
    
elseif spell == "Earthshock" then

local eff = getSubName(cid, target) == "Shiny Onix" and 179 or 127 --alterado v1.6.1              

    doAreaCombatHealth(cid, GROUNDDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)

    local sps = getThingPosWithDebug(cid)
    sps.x = sps.x+1
    sps.y = sps.y+1
    doSendMagicEffect(sps, eff)
    
elseif spell == "Earthquake" then

local eff = getSubName(cid, target) == "Shiny Onix" and 175 or 118  --alterado v1.6.1
 
local function doQuake(cid)
if not isCreature(cid) then return false end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   doMoveInArea2(cid, eff, confusion, GROUNDDAMAGE, min, max, spell)
end

times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}

setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)
for i = 1, #times do                   --alterado v1.4
    addEvent(doQuake, times[i], cid)
end
    
    
elseif spell == "Stomp" then
    
    local ret = {}
    ret.id = 0
    ret.cd = 9
    ret.check = 0
    ret.eff = 34
    ret.spell = spell
    ret.cond = "Stun"   
       
    doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret)
       
elseif spell == "Toxic Spikes" then
       
       local function doToxic(cid, target)
       if not isCreature(cid) or not isCreature(target) then return true end  --alterado v1.7
          doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
          doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 114) --alterado v1.7
       end

       setPlayerStorageValue(cid, 3644587, 1)
       addEvent(setPlayerStorageValue, 300, cid, 3644587, -1)
       addEvent(doToxic, 0, cid, target)
       addEvent(doToxic, 300, cid, target)
       
elseif spell == "Horn Drill" then
       
       local function doHorn(cid, target)
       if not isCreature(cid) or not isCreature(target) then return true end   --alterado v1.7
          doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 25)
          doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3)  --alterado v1.7
       end

       setPlayerStorageValue(cid, 3644587, 1)
       addEvent(setPlayerStorageValue, 300, cid, 3644587, -1)
       addEvent(doHorn, 0, cid, target)
       addEvent(doHorn, 300, cid, target)
       
elseif spell == "Doubleslap" then
       
    doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 148)
    
elseif spell == "Lovely Kiss" then
   
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 16)
    
    local ret = {}
    ret.id = target
    ret.cd = 9
    ret.check = getPlayerStorageValue(target, conds["Stun"])
    ret.eff = 147
    ret.spell = spell
    ret.cond = "Stun"  
    
    addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
    
elseif spell == "Sing" then

local ret = {}
ret.id = 0
ret.cd = math.random(6, 10)
ret.check = 0
ret.first = true
ret.cond = "Sleep"                 --alterado v1.6
    
doMoveInArea2(cid, 33, selfArea1, NORMALDAMAGE, 0, 0, spell, ret)
    
elseif spell == "Multislap" then

       doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 3)
       
elseif spell == "Metronome" then

local spells = {"Shadow Storm", "Electric Storm", "Ice Storm", "Magma Storm", "Blizzard", "Meteor Mash", "Leaf Storm", "Hydropump", "Falling Rocks"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 161)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 1" then

local spells = {"Psy Pulse", "Shadow Ball", "Thunder Bolt", "Ember", "Rock Throw", "Razor Leaf", "Bubbles", "Ice Shards", "Egg Bomb", "Poison Bomb"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 2" then

local spells = {"Mud Bomb", "Cyber Pulse", "Dark Pulse", "Rock Slide", "Magical Leaf", "Fireball", "Waterball", "Feather Dance"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 3" then

local spells = {"Poison Gas", "Earthquake", "Divine Punch", "Petal Tornado", "Electro Field", "Flame Wheel"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 4" then

local spells = {"Thunder", "Night Slash", "Confusion", "Air Slash", "Confusion", "Night Shade"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 5" then

local spells = {"Solar Beam", "Bullet Seed", "Raging Blast", "Fire Blast", "Bubble Blast", "Hydro Cannon", "Pin Missile"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
    elseif spell == "Sketch 6" then

local spells = {"Shockwave", "Petal Dance", "Hyper Beam", "Zap Cannon", "Aurora Beam", "Ice Beam", "Ground Chop"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 7" then

local spells = {"Fear", "Sunny Day", "Scary Face", "Skull Bash", "Cotton Spore", "Sleep Powder"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 8" then

local spells = {"Reflect", "Charm", "Agility", "Safeguard", "Synthesis", "Emergency Call", "Healarea", "Sing"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 9" then

local spells = {"Psychic", "Epicenter", "Mortal Gas", "Hydropump", "Muddy Water"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Sketch 10" then

local spells = {"Meteor Rain", "Focus Blast", "Ice Storm", "Blizzard", "Shadow Storm", "Falling Rocks", "Meteor Mash", "Electric Storm", "Hydro Dance", "Magma Storm", "Draco Meteor", "Psy Impact"}

    local random = math.random(1, #spells)

    local randommove = spells[random]
    local pos = getThingPosWithDebug(cid)
    pos.y = pos.y - 1

    doSendMagicEffect(pos, 0)
    
    local function doMetronome(cid, skill)
    if not isCreature(cid) then return true end
       docastspell(cid, skill)
    end
    
    addEvent(doMetronome, 200, cid, randommove)
    
elseif spell == "Focus" or spell == "Charge" or spell == "Swords Dance" then
                                                    --alterado v1.4
       if spell == "Charge" then
          doSendAnimatedText(getThingPosWithDebug(cid), "CHARGE", 168)
          doSendMagicEffect(getThingPosWithDebug(cid), 177)
       elseif spell == "Swords Dance" then
           doSendMagicEffect(getThingPosWithDebug(cid), 132)
       else
           doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144)
           doSendMagicEffect(getThingPosWithDebug(cid), 132)
       end
       setPlayerStorageValue(cid, 253, 1)
       
       elseif spell == "Growth" then
                                                    --alterado v1.4
       if spell == "Growth" then
          doSendAnimatedText(getThingPosWithDebug(cid), "Growth", 168)
          doSendMagicEffect(getThingPosWithDebug(cid), 177)
       end
       setPlayerStorageValue(cid, 253, 1)
       
       
       
--[[elseif spell == "Flame Wheel" then
                                                    --alterado v1.8 o atk ta la pra baixo agora...
    local function sendFireEff(cid, dir)
    if not isCreature(cid) then return true end
    if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
    if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
       doDanoWithProtect(cid, FIREDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 15)
    end

    local function doWheel(cid)
    if not isCreature(cid) then return true end
    local t = {
          [1] = SOUTH,
          [2] = SOUTHEAST,
          [3] = EAST,
          [4] = NORTHEAST,
          [5] = NORTH,        --alterado!
          [6] = NORTHWEST,
          [7] = WEST,
          [8] = SOUTHWEST,
        }
        for a = 1, 8 do
            addEvent(sendFireEff, a * 140, cid, t[a])
        end
    end

    doWheel(cid, false, cid)    ]]
    
elseif spell == "Hyper Voice" then

    local ret = {}
    ret.id = 0
    ret.cd = 9
    ret.check = 0
    ret.eff = 22
    ret.spell = spell
    ret.cond = "Stun"   
       
    doMoveInArea2(cid, 22, tw1, NORMALDAMAGE, min, max, spell, ret)

elseif spell == "Restore" or spell == "Selfheal" then
    
    local min = (getCreatureMaxHealth(cid) * 75) / 100
    local max = (getCreatureMaxHealth(cid) * 85) / 100
    
    local function doHealArea(cid, min, max)
    local amount = math.random(min, max)
    if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
        amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
    end
    if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
       doCreatureAddHealth(cid, amount)
       doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
    end
    end
    
    doSendMagicEffect(getThingPosWithDebug(cid), 132)
    doHealArea(cid, min, max)
    
    elseif spell == "Aqua Ring"  then
    
    local min = (getCreatureMaxHealth(cid) * 75) / 100
    local max = (getCreatureMaxHealth(cid) * 85) / 100
    
    local function doHealArea(cid, min, max)
    local amount = math.random(min, max)
    if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
        amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
    end
    if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
       doCreatureAddHealth(cid, amount)
       doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
    end
    end
    
    doSendMagicEffect(getThingPosWithDebug(cid), 132)
    doHealArea(cid, min, max)
    
    
elseif spell == "Healarea" then
    
    local min = (getCreatureMaxHealth(cid) * 50) / 100
    local max = (getCreatureMaxHealth(cid) * 60) / 100
    
    local function doHealArea(cid, min, max)
    local amount = math.random(min, max)
    if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
        amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
    end
    if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
       doCreatureAddHealth(cid, amount)
       doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
    end
    end
    
    local pos = getPosfromArea(cid, heal)
    local n = 0
    doHealArea(cid, min, max)
    
    while n < #pos do
    n = n+1
    thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}
    local pid = getThingFromPosWithProtect(thing)
    
    doSendMagicEffect(pos[n], 12)
    if isCreature(pid) then
       if isSummon(cid) and (isSummon(pid) or isPlayer(pid)) then
          if canAttackOther(cid, pid) == "Cant" then
             doHealArea(pid, min, max)
          end
       elseif ehMonstro(cid) and ehMonstro(pid) then
          doHealArea(pid, min, max)
       end
    end
    end
    
elseif spell == "Milk Drink" then
    
    local min = (getCreatureMaxHealth(cid) * 50) / 100
    local max = (getCreatureMaxHealth(cid) * 60) / 100
    
    local function doHealArea(cid, min, max)
    local amount = math.random(min, max)
    if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
        amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
    end
    if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
       doCreatureAddHealth(cid, amount)
       doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
    end
    end
    
    local pos = getPosfromArea(cid, heal)
    local n = 0
    doHealArea(cid, min, max)
    
    while n < #pos do
    n = n+1
    thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}
    local pid = getThingFromPosWithProtect(thing)
    
    doSendMagicEffect(pos[n], 12)
    if isCreature(pid) then
       if isSummon(cid) and (isSummon(pid) or isPlayer(pid)) then
          if canAttackOther(cid, pid) == "Cant" then
             doHealArea(pid, min, max)
          end
       elseif ehMonstro(cid) and ehMonstro(pid) then
          doHealArea(pid, min, max)
       end
    end
    end
    
elseif spell == "Toxic" then
 
  doMoveInArea2(cid, 114, reto5, POISONDAMAGE, min, max, spell)

elseif spell == "Absorb" then

    local life = getCreatureHealth(target)

    doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)
    
    local newlife = life - getCreatureHealth(target)

    doSendMagicEffect(getThingPosWithDebug(cid), 14)
    if newlife >= 1 then
       doCreatureAddHealth(cid, newlife)
       doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32)
    end  
    
elseif spell == "Poison Bomb" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 14)
    doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 20, bombWee2)

elseif spell == "Poison Gas" then

local dmg = isSummon(cid) and getMasterLevel(cid)+getPokemonBoost(cid) or getPokemonLevel(cid)

local ret = {id = 0, cd = 13, eff = 34, check = 0, spell = spell, cond = "Miss"}
local ret2 = {id = 0, cd = 13, check = 0, damage = dmg, cond = "Poison"}                          --rever isso ainda!!
 
    local function gas(cid)
           doMoveInArea2(cid, 114, confusion, POISONDAMAGE, 0, 0, spell, ret)
           doMoveInArea2(cid, 0, confusion, POISONDAMAGE, min, max, spell)
    end
        
times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}

for i = 1, #times do
    addEvent(gas, times[i], cid)                            
end
    
elseif spell == "Petal Dance" then

       doMoveInAreaMulti(cid, 21, 245, bullet, bulletDano, GRASSDAMAGE, min, max)
       

elseif spell == "Dynamic Punch" then

local pos = getThingPosWithDebug(cid)
local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}

for i = 0, 9 do
    addEvent(doMoveInArea2, i*400, cid, 112, areas[i+1], FIGHTINGDAMAGE, min, max, spell)
    addEvent(doMoveInArea2, i*410, cid, 112, areas[i+1], FIGHTINGDAMAGE, 0, 0, spell)
end


elseif spell == "Revenge" then

local function doRevenge(cid)
if not isCreature(cid) then return false end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
local rev = getThingPosWithDebug(cid)
rev.x = rev.x+1
rev.y = rev.y+1
doSendMagicEffect(rev, 99)
    doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)

end

times = {0, 500, 1000, 1500, 2300}

setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)
for i = 1, #times do                   --alterado v1.4
addEvent(doRevenge, times[i], cid)
end
    
    
elseif spell == "Close Combat" then
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 26)
    doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 237)  --alterado v1.7
       doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144)   
       setPlayerStorageValue(cid, 253, 1)

elseif spell == "Sand Storm" then

local master = isSummon(cid) and getCreatureMaster(cid) or cid
------------
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 34
ret.cond = "Silence"
---
local function doFall(cid)
for rocks = 1, 42 do --62
    addEvent(fall, rocks*35, cid, master, GROUNDDAMAGE, 22, 158)
end
end
---
local function doRain(cid)
if isSummon(cid) then
   doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end                                                      --cura status
doCureStatus(cid, "all")
---
setPlayerStorageValue(cid, 253, 1)  --focus
doSendMagicEffect(getThingPosWithDebug(cid), 132)
---
doMoveInArea2(cid, 0, confusion, GROUNDDAMAGE, 0, 0, spell, ret)
end
---
addEvent(doFall, 200, cid)
addEvent(doRain, 1000, cid)

elseif spell == "Powder Snow" then
 
snowP = getThingPosWithDebug(cid)
    
    local ret = {}
    ret.id = 0
    ret.cd = 10
    ret.check = 0
    ret.eff = 43
    ret.spell = spell
    ret.cond = "Slow"   
 
    doMoveInArea2(cid, 0, check, ICEDAMAGE, min, max, spell, ret)
    doSendMagicEffect({x = snowP.x + 1, y = snowP.y, z = snowP.z}, 206)

elseif spell == "Slash" then

    doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 159)
    
elseif spell == "X-Scissor" then

local a = getThingPosWithDebug(cid)
 
local X = {
{{x = a.x+1, y = a.y, z = a.z}, 16}, --norte
{{x = a.x+2, y = a.y+1, z = a.z}, 221}, --leste
{{x = a.x+1, y = a.y+2, z = a.z}, 223}, --sul
{{x = a.x, y = a.y+1, z = a.z}, 243}, --oeste
}

local pos = X[mydir+1]

for b = 1, 3 do
    addEvent(doSendMagicEffect, b * 70, pos[1], pos[2])
end
    
doMoveInArea2(cid, 2, xScissor, BUGDAMAGE, min, max, spell)
    
elseif spell == "Psychic" then
                                    
    doDanoWithProtect(cid, psyDmg, getThingPosWithDebug(cid), selfArea2, min, max, 133)     
    
elseif spell == "Pay Day" then

        --alterado v1.7
        local function doThunderFall(cid, frompos, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local ry = math.abs(frompos.y - pos.y)
        doSendDistanceShoot(frompos, getThingPosWithDebug(target), 39)
        addEvent(doDanoInTarget, ry * 11, cid, target, NORMALDAMAGE, min, max, 28)  --alterado v1.7
        end

        local function doThunderUp(cid, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local mps = getThingPosWithDebug(cid)
        local xrg = math.floor((pos.x - mps.x) / 2)
        local topos = mps
        topos.x = topos.x + xrg
        local rd =  7
        topos.y = topos.y - rd
        doSendDistanceShoot(getThingPosWithDebug(cid), topos, 39)
        addEvent(doThunderFall, rd * 49, cid, topos, target)
        end        

    setPlayerStorageValue(cid, 3644587, 1)
    addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)          
    for thnds = 1, 2 do
        addEvent(doThunderUp, thnds * 155, cid, target)
    end
    
elseif spell == "Psywave" then

doMoveInArea2(cid, 133, db1, psyDmg, min, max, spell)      

elseif spell == "Triple Kick" or spell == "Triple Kick Lee" then

    doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 110)
    
elseif spell == "Karate Chop" then
    
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 113)  --alterado v1.7
    
elseif spell == "Ground Chop" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area, area2, eff)  --alterado v1.6
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, FIGHTINGDAMAGE, area, 0, 0, 0, eff)    
   doAreaCombatHealth(cid, FIGHTINGDAMAGE, area2, whirl3, -min, -max, 255)  --alterado v1.6   
end
end

for a = 0, 4 do

local t = {
[0] = {99, {x=p.x+1, y=p.y-(a+1), z=p.z}, {x=p.x, y=p.y-(a+1), z=p.z}},           --alterado v1.6
[1] = {99, {x=p.x+(a+2), y=p.y+1, z=p.z}, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {99, {x=p.x+1, y=p.y+(a+2), z=p.z}, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {99, {x=p.x-(a+1), y=p.y+1, z=p.z}, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 270*a, cid, t[d][2], t[d][3], t[d][1]) --alterado v1.6
end    
      
elseif spell == "Mega Punch" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 112)  --alterado v1.7
    
elseif spell == "Tri Flames" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 39
ret.cond = "Silence"

       doMoveInArea2(cid, 6, triflames, FIREDAMAGE, min, max, spell, ret)
          
elseif spell == "War Dog" then

   local ret = {}
   ret.id = cid
   ret.cd = 15
   ret.eff = 28
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)
            
elseif spell == "Hypnosis" then

local ret = {}
ret.id = target
ret.cd = math.random(6, 9)
ret.check = getPlayerStorageValue(target, conds["Sleep"])
ret.first = true                                                --alterado v1.6
ret.cond = "Sleep"

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 24)
   addEvent(doMoveDano2, 150, cid, target, PSYCHICDAMAGE, 0, 0, ret, spell)

elseif spell == "Dizzy Punch" then

   local rounds = getPokemonLevel(cid) / 12
   rounds = rounds + 2
   
   local ret = {}
   ret.id = target
   ret.check = getPlayerStorageValue(target, conds["Confusion"])
   ret.cd = rounds
   ret.cond = "Confusion"
   
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 26)
   doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 112)    
   addEvent(doMoveDano2, 50, cid, target, NORMALDAMAGE, 0, 0, ret, spell)

elseif spell == "Ice Punch" then
                   
local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 43
ret.check = getPlayerStorageValue(target, conds["Slow"])
ret.first = true
ret.cond = "Slow"

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28)
    doSendMagicEffect(getThingPosWithDebug(target), 112)
    doDanoWithProtectWithDelay(cid, target, ICEDAMAGE, min, max, 43)
    addEvent(doMoveDano2, 50, cid, target, ICEDAMAGE, 0, 0, ret, spell)
    
elseif spell == "Ice Beam" then

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {97, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {96, {x=p.x+6, y=p.y+1, z=p.z}},
[2] = {97, {x=p.x+1, y=p.y+6, z=p.z}},
[3] = {96, {x=p.x-1, y=p.y+1, z=p.z}},
}

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"

doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret)
doSendMagicEffect(t[a][2], t[a][1])
    
    
elseif spell == "Psy Pulse" or spell == "Cyber Pulse" or spell == "Dark Pulse" then

damage = skill == "Dark Pulse" and DARKDAMAGE or psyDmg

local function doPulse(cid, eff)
if not isCreature(cid) then return true end
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
   doDanoInTargetWithDelay(cid, target, damage, min, max, eff)      --alterado v1.7
end

   if spell == "Cyber Pulse" then
      eff = 11
   elseif spell == "Dark Pulse" then
      eff = 47  --efeito n eh esse mas... ;p
   else
      eff = 133
   end
   
   addEvent(doPulse, 0, cid, eff)                
   addEvent(doPulse, 250, cid, eff)
    
elseif spell == "Psyusion" then

       local rounds = math.random(4, 7)
       rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
       local eff = {136, 133, 136, 133, 137}
       local area = {psy1, psy2, psy3, psy4, psy5}

       local ret = {}
       ret.id = 0
       ret.check = 0
       ret.cd = rounds
       ret.cond = "Confusion"

       setPlayerStorageValue(cid, 3644587, 1)
       addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1)
       for i = 0, 4 do
           addEvent(doMoveInArea2, i*400, cid, eff[i+1], area[i+1], psyDmg, min, max, spell, ret)
       end
       
elseif spell == "Triple Punch" then

    doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 110)
    
elseif spell == "Fist Machine" then

    local mpos = getThingPosWithDebug(cid)
    local b = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
    local effect = 0
    local xvar = 0
    local yvar = 0

    if b == SOUTH then
        effect = 218
        yvar = 2
    elseif b == NORTH then
        effect = 217
    elseif b == WEST then
        effect = 216
    elseif b == EAST then
        effect = 215
        xvar = 2
    end

    mpos.x = mpos.x + xvar
    mpos.y = mpos.y + yvar         

    doSendMagicEffect(mpos, effect)
    doMoveInArea2(cid, 0, machine, FIGHTINGDAMAGE, min, max, spell)
    
elseif spell == "Destroyer Hand" then

       doMoveInAreaMulti(cid, 26, 111, bullet, bulletDano, FIGHTINGDAMAGE, min, max)
       
elseif spell == "Rock Throw" then

local effD = getSubName(cid, target) == "Shiny Onix" and 0 or 11
local eff = getSubName(cid, target) == "Shiny Onix" and 176 or 44  --alterado v1.6.1

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), effD)
    doDanoInTargetWithDelay(cid, target, ROCKDAMAGE, min, max, eff) --alterado v1.7
    
elseif spell == "Rock Slide" or spell == "Stone Edge" then

atk = {
["Rock Slide"] = {11, 44, 0, 176},
["Stone Edge"] = {11, 239}
}                          

local effD = getSubName(cid, target) == "Shiny Onix" and atk[spell][3] or atk[spell][1]
local eff = getSubName(cid, target) == "Shiny Onix" and atk[spell][4] or atk[spell][2]  --alterado v1.6.1

        --alterado v1.7
        local function doRockFall(cid, frompos, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local ry = math.abs(frompos.y - pos.y)
        doSendDistanceShoot(frompos, getThingPosWithDebug(target), effD)
        addEvent(doDanoInTarget, ry * 11, cid, target, ROCKDAMAGE, min, max, eff) --alterado v1.7
        end

        local function doRockUp(cid, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local mps = getThingPosWithDebug(cid)
        local xrg = math.floor((pos.x - mps.x) / 2)
        local topos = mps
        topos.x = topos.x + xrg
        local rd =  7
        topos.y = topos.y - rd
        doSendDistanceShoot(getThingPosWithDebug(cid), topos, effD)
        addEvent(doRockFall, rd * 49, cid, topos, target)
        end        

    setPlayerStorageValue(cid, 3644587, 1)
    addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
    for thnds = 1, 2 do
        addEvent(doRockUp, thnds * 155, cid, target)
    end
    
elseif spell == "Falling Rocks" then

local effD = getSubName(cid, target) == "Shiny Onix" and 0 or 11
local eff = getSubName(cid, target) == "Shiny Onix" and 176 or 44  --alterado v1.6.1

local master = isSummon(cid) and getCreatureMaster(cid) or cid
------------

local function doFall(cid)
for rocks = 1, 62 do
    addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff)
end
end

for up = 1, 10 do                                                            
    addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, ROCKDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)

elseif spell == "Selfdestruct" then
                                         
        local function death(cid)
            if isCreature(cid) then
               if pokeHaveReflect(cid) then return true end    --alterado v1.6
               doCreatureAddHealth(cid, -getCreatureMaxHealth(cid))
            end
        end

        doMoveInArea2(cid, 5, selfArea1, NORMALDAMAGE, min, max, spell)    --alterado v1.6
        addEvent(death, 300, cid)
        
elseif spell == "Crusher Stomp" then
       
local pL = getThingPosWithDebug(cid)
pL.x = pL.x+5
pL.y = pL.y+1
-----------------
local pO = getThingPosWithDebug(cid)
pO.x = pO.x-3
pO.y = pO.y+1
------------------
local pN = getThingPosWithDebug(cid)
pN.x = pN.x+1
pN.y = pN.y+5
-----------------
local pS = getThingPosWithDebug(cid)
pS.x = pS.x+1
pS.y = pS.y-3

local po = {pL, pO, pN, pS}
local po2 = {
{x = pL.x, y = pL.y-1, z = pL.z},
{x = pO.x, y = pO.y-1, z = pO.z},
{x = pN.x-1, y = pN.y, z = pN.z},
{x = pS.x-1, y = pS.y, z = pS.z},
}

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 34
ret.spell = spell
ret.cond = "Stun"

for i = 1, 4 do
    doSendMagicEffect(po[i], 127)
    doAreaCombatHealth(cid, GROUNDDAMAGE, po2[i], crusher, -min, -max, 255)
end
doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret)  

elseif spell == "Water Pulse" then
                                    
    doDanoWithProtect(cid, WATERDAMAGE, getThingPosWithDebug(cid), selfArea2, min, max, 155)     
    
elseif spell == "Sonicboom" then

local function doBoom(cid)
if not isCreature(cid) then return true end
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 33)
   doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3)   --alterado v1.7
end

   addEvent(doBoom, 0, cid)
   addEvent(doBoom, 250, cid)
   
elseif spell == "Stickmerang" then   

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 34)
   doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 212)  --alterado v1.7

elseif spell == "Stickslash" then

    local function sendStickEff(cid, dir)
    if not isCreature(cid) then return true end
       doAreaCombatHealth(cid, FLYINGDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 212)
    end

    local function doStick(cid)
    if not isCreature(cid) then return true end
    local t = {
          [1] = SOUTHWEST,
          [2] = SOUTH,
          [3] = SOUTHEAST,
          [4] = EAST,
          [5] = NORTHEAST,
          [6] = NORTH,
          [7] = NORTHWEST,
          [8] = WEST,
          [9] = SOUTHWEST,
        }
        for a = 1, 9 do
            addEvent(sendStickEff, a * 140, cid, t[a])
        end
    end

    doStick(cid, false, cid)
    
elseif spell == "Stick Throw" then

local area = {Throw01, Throw02, Throw03, Throw04, Throw03, Throw02, Throw01}

for i = 0, 6 do
    addEvent(doMoveInArea2, i*400, cid, 212, area[i+1], FLYINGDAMAGE, min, max, spell)
end    

elseif spell == "Cannon Ball" then

local area = {Throw01, Throw02, Throw03, Throw04, Throw03, Throw02, Throw01}

for i = 0, 6 do
    addEvent(doMoveInArea2, i*400, cid, 100, area[i+1], GROUNDDAMAGE, min, max, spell)
end    


elseif spell == "Pluck" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
   doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 111)  --alterado v1.7

elseif spell == "Tri-Attack" then

   --alterado v1.7
   setPlayerStorageValue(cid, 3644587, 1)
   addEvent(setPlayerStorageValue, 600, cid, 3644587, -1)
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 42)  --alterado v1.6
   for i = 0, 2 do
       addEvent(doDanoInTargetWithDelay, i*300, cid, target, NORMALDAMAGE, min, max, 238)      --alterado v1.7
   end
    
elseif spell == "Fury Attack" then

    --alterado v1.7
    setPlayerStorageValue(cid, 3644587, 1)
    addEvent(setPlayerStorageValue, 600, cid, 3644587, -1)
    for i = 0, 2 do
       addEvent(doDanoInTargetWithDelay, i*300, cid, target, NORMALDAMAGE, min, max, 110)    --alterado v1.7
    end  
   
elseif spell == "Ice Shards" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28)
    doDanoInTargetWithDelay(cid, target, ICEDAMAGE, min, max, 43)  --alterado v1.7
    
elseif spell == "Icy Wind" then                   

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"
    
  doMoveInArea2(cid, 17, db1, ICEDAMAGE, min, max, spell, ret)
 
elseif spell == "Aurora Beam" then

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {186, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {57, {x=p.x+6, y=p.y+1, z=p.z}},   --alterado v1.6
[2] = {186, {x=p.x+1, y=p.y+6, z=p.z}},
[3] = {57, {x=p.x-1, y=p.y+1, z=p.z}},  --alterado v1.6
}

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"

doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret)
doSendMagicEffect(t[a][2], t[a][1])

elseif spell == "Rest" then

   local ret = {}
   ret.id = cid
   ret.cd = 6
   ret.eff = 0
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)
    
elseif spell == "Sludge" then

        --alterado v1.7
        local function doSludgeFall(cid, frompos, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local ry = math.abs(frompos.y - pos.y)
        doSendDistanceShoot(frompos, getThingPosWithDebug(target), 6)
        addEvent(doDanoInTargetWithDelay, ry * 11, cid, target, POISONDAMAGE, min, max, 116) --alterado v1.7
        end

        local function doSludgeUp(cid, target)
            if not isCreature(target) or not isCreature(cid) then return true end
        local pos = getThingPosWithDebug(target)
        local mps = getThingPosWithDebug(cid)
        local xrg = math.floor((pos.x - mps.x) / 2)
        local topos = mps
        topos.x = topos.x + xrg
        local rd =  7
        topos.y = topos.y - rd
        doSendDistanceShoot(getThingPosWithDebug(cid), topos, 6)
        addEvent(doSludgeFall, rd * 49, cid, topos, target)
        end        

    setPlayerStorageValue(cid, 3644587, 1)
    addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
    for thnds = 1, 2 do
        addEvent(doSludgeUp, thnds * 155, cid, target)
    end                                               --alterado v1.5

elseif spell == "Mud Bomb" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)  --alterado v1.8
   doDanoWithProtectWithDelay(cid, target, MUDBOMBDAMAGE, min, max, 116, bombWee2)

elseif spell == "Mortal Gas" then

    local pos = getThingPosWithDebug(cid)

    local function doSendAcid(cid, pos)
        if not isCreature(cid) then return true end
        doSendDistanceShoot(getThingPosWithDebug(cid), pos, 14)
        doSendMagicEffect(pos, 114)
    end
 
    for b = 1, 3 do
        for a = 1, 20 do
            local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
            addEvent(doSendAcid, a * 75, cid, lugar)
        end
    end
    doDanoWithProtect(cid, POISONDAMAGE, pos, waterarea, -min, -max, 0)
    
elseif spell == "Rock Drill" or spell == "Megahorn" or spell == "Rock Blast" then

local damage = spell == "Megahorn" and BUGDAMAGE or ROCKDAMAGE
local eff = spell == "Megahorn" and 8 or 44
local effD = spell == "Rock Blast" and 11 or 25                    
                --cid, effDist, effDano, areaEff, areaDano, element, min, max
doMoveInAreaMulti(cid, effD, eff, bullet, bulletDano, damage, min, max)

elseif spell == "Egg Bomb" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 12)
    doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 5, crusher)
    
elseif spell == "Super Vines" then

    stopNow(cid, 200)           --alterado v1.6
    doCreatureSetLookDir(cid, 2)

    local effect = 0
    local pos = getThingPosWithDebug(cid)
    pos.x = pos.x + 1
    pos.y = pos.y + 1
    
    local effect = getSubName(cid, target) == "Tangela" and 213 or 229  --alterado v1.6.1

    doSendMagicEffect(pos, effect)
    doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)
    
elseif spell == "Epicenter" then

        doMoveInArea2(cid, 127, epicenter, GROUNDDAMAGE, min, max, spell)
        
elseif spell == "Bubblebeam" then

local function sendBubbles(cid)
if not isCreature(cid) or not isCreature(target) then return true end
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
   doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 68)  --alterado v1.7
end

sendBubbles(cid)
addEvent(sendBubbles, 250, cid)

elseif  spell == "Swift" then

local function sendSwift(cid, target)
if not isCreature(cid) or not isCreature(target) then return true end
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
   doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3)   --alterado v1.7
end

addEvent(sendSwift, 100, cid, target)
addEvent(sendSwift, 200, cid, target)

elseif spell == "Spark" then
       
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
   doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48)    --alterado v1.7
   

elseif  spell == "Mimic Wall" then

local p = getThingPosWithDebug(cid)
local dirr = getCreatureLookDir(cid)

if dirr == 0 or dirr == 2 then
   item = 11439
else
   item = 11440
end

local wall = {
[0] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}},
[2] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}},
[1] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}},
[3] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}},
}

function removeAllActionIDs(pos, onlyOne)
if onlyOne then
    local thing1 = {x=pos.x,y=pos.y,z=pos.z,stackpos=0}
    local tile1 = getTileThingWithProtect(thing1).uid
    doSetItemActionId(tile1, 0)
end  
n = 0
for i = 1, #pos do
    n = n + 1
    thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=0}
    local tile = getTileThingWithProtect(thing).uid
    doSetItemActionId(tile, 0)
end
end   


for i = 1, 3 do
    if wall[dirr] then
       local t = wall[dirr]
       if hasTile(t[i]) and canWalkOnPos2(t[i], true, true, true, true, false) then  --alterado v1.6
          doCreateItem(item, 1, t[i])
          --
          local Tile = getTileThingWithProtect({x=t[i].x,y=t[i].y,z=t[i].z,stackpos=0})
          doSetItemActionId(Tile.uid, 88072)
          addEvent(removeAllActionIDs, 15000, t[i], true)
          --
          addEvent(doRemoveItemFromPos, 15000, t[i], item, 1)
       end
    end
end

local pos = getPosfromArea(cid, wall_1)
local pos2 = getPosfromArea(cid, wall_2)

if hasTile({x=p.x,y=p.y,z=p.z,stackpos=0}) then
   tile0 = getTileThingWithProtect({x=p.x,y=p.y,z=p.z,stackpos=0}).uid
end
doSetItemActionId(tile0, 88070)
addEvent(removeAllActionIDs, 15000, p, true)

n = 0

while n < #pos do
   if not isCreature(cid) then return true end
      n = n+1
      local tile1 = getTileThingWithProtect({x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=0}).uid
      ---
      local tile2 = getTileThingWithProtect({x=pos2[n].x,y=pos2[n].y,z=pos2[n].z,stackpos=0}).uid
      
      doSetItemActionId(tile1, 88071)
      doSetItemActionId(tile2, 88070)
end
addEvent(removeAllActionIDs, 15000, pos)
addEvent(removeAllActionIDs, 15000, pos2)   
   
elseif spell == "Shredder Team" then     --alterado v1.8 \/

local team = {
["Scyther"] = "ScytherTeam",
["Shiny Scyther"] = "Shiny ScytherTeam",
["Scizor"] = "ScizorTeam",
}

local function RemoveTeam(cid)
if isCreature(cid) then
  doSendMagicEffect(getThingPosWithDebug(cid), 211)
  doRemoveCreature(cid)
end
end

local function sendEff(cid, master, t)
if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then
   doSendMagicEffect(getThingPosWithDebug(cid), 86, master)
   addEvent(sendEff, 1000, cid, master, t-1)                        --alterado v1.9
end
end

if getPlayerStorageValue(cid, 637500) >= 1 then
return true
end

local master = getCreatureMaster(cid)
local item = getPlayerSlotItem(master, 8)
local life, maxLife = getCreatureHealth(cid), getCreatureMaxHealth(cid)
local name = getItemAttribute(item.uid, "poke")
local pos = getThingPosWithDebug(cid)
local time = 21

doItemSetAttribute(item.uid, "hp", (life/maxLife))

local num = getSubName(cid, target) == "Scizor" and 4 or 3
local pk = {}

doTeleportThing(cid, {x=4, y=3, z=10}, false)

if team[name] then
   pk[1] = cid
   for b = 2, num do
       pk[b] = doSummonCreature(team[name], pos)
       doConvinceCreature(master, pk[b])
   end

   for a = 1, num do
      addEvent(doTeleportThing, math.random(0, 5), pk[a], getClosestFreeTile(pk[a], pos), false)
      addEvent(doAdjustWithDelay, 5, master, pk[a], true, true, true)
      doSendMagicEffect(getThingPosWithDebug(pk[a]), 211)
   end
   sendEff(cid, master, time)     --alterado v1.9
   setPlayerStorageValue(master, 637501, 1)
   addEvent(setPlayerStorageValue, time * 1000, master, 637501, -2)
   -----
   setPlayerStorageValue(pk[2], 637500, 1)
   addEvent(RemoveTeam, time * 1000, pk[2])
   -----
   setPlayerStorageValue(pk[3], 637500, 1)
   addEvent(RemoveTeam, time * 1000, pk[3])
   ----
   if getSubName(cid, target) == "Scizor" then  
      setPlayerStorageValue(pk[4], 637500, 1)
      addEvent(RemoveTeam, time * 1000, pk[4])
   end
end


elseif spell == "Team Slice" or spell == "Team Claw" then

local master = getCreatureMaster(cid)
if #getCreatureSummons(master) < 2 or not isCreature(target) then return true end

local summons = getCreatureSummons(master)
local posis = {[1] = pos1, [2] = pos2, [3] = pos3, [4] = pos4}

if getSubName(cid, target) == "Scyther" then  --alterado v1.6.1
 eff = 39
elseif getSubName(cid, target) == "Shiny Scyther" then  --alterado v1.6.1
 eff = 39
else
 eff = 42  --alterado v1.5
end

   if #getCreatureSummons(master) >= 2 and isCreature(target) then
      if isCreature(cid) then
         addEvent(doDanoInTarget, 500, cid, target, BUGDAMAGE, -min, -max, 0) --alterado v1.7
         for i = 1, #summons do
             posis[i] = getThingPosWithDebug(summons[i])
             doDisapear(summons[i])
             stopNow(summons[i], 670)
             addEvent(doSendMagicEffect, 300, posis[i], 211)
             addEvent(doSendDistanceShoot, 350, posis[i], getThingPosWithDebug(target), eff)
             addEvent(doSendDistanceShoot, 450, getThingPosWithDebug(target), posis[i], eff)
             addEvent(doSendDistanceShoot, 600, posis[i], getThingPosWithDebug(target), eff)
             addEvent(doSendDistanceShoot, 650, getThingPosWithDebug(target), posis[i], eff)
             addEvent(doAppear, 670, summons[i])
         end
      end
    end
    
elseif spell == "Blizzard" then

local master = isSummon(cid) and getCreatureMaster(cid) or cid
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"

local function doFall(cid)
for rocks = 1, 42 do
    addEvent(fall, rocks*35, cid, master, ICEDAMAGE, 28, 52)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, 28)
end                                         --alterado v1.4
addEvent(doFall, 450, cid)
addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ICEDAMAGE, min, max, spell, ret)

elseif spell == "Meteor Mash" then

local effD = 5
local eff = 249
local master = isSummon(cid) and getCreatureMaster(cid) or cid

local function doFall(cid)
for rocks = 5, 42 do
    addEvent(fall, rocks*35, cid, master, STEELDAMAGE, effD, eff)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, STEELDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)





elseif spell == "Great Love" then

local master = getCreatureMaster(cid) or 0
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 147
ret.check = 0
ret.spell = spell
ret.cond = "Stun"
    
for rocks = 1, 62 do
    addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 147)
end

addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)

elseif spell == "Fire Punch" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    doSendMagicEffect(getThingPosWithDebug(target), 112)
    doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 35) --alterado v1.7
    
elseif spell == "Guillotine" then

doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 146)

elseif spell ==  "Hyper Beam" then  --alterado v1.7 \/

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {149, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {150, {x=p.x+6, y=p.y+1, z=p.z}},   
[2] = {149, {x=p.x+1, y=p.y+6, z=p.z}},
[3] = {150, {x=p.x-1, y=p.y+1, z=p.z}},  
}

doMoveInArea2(cid, 0, triplo6, NORMALDAMAGE, min, max, spell)
doSendMagicEffect(t[a][2], t[a][1])
    
elseif spell ==  "Signal Beam" then  --alterado v1.7 \/

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {262, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {263, {x=p.x+6, y=p.y+1, z=p.z}},   
[2] = {264, {x=p.x+1, y=p.y+6, z=p.z}},
[3] = {265, {x=p.x-1, y=p.y+1, z=p.z}},  
}

doMoveInArea2(cid, 0, triplo6, BUGDAMAGE, min, max, spell)
doSendMagicEffect(t[a][2], t[a][1])
    

elseif spell ==  "Flash Cannon" then  --alterado v1.7 \/

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {260, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {259, {x=p.x+6, y=p.y+1, z=p.z}},   
[2] = {260, {x=p.x+1, y=p.y+6, z=p.z}},
[3] = {259, {x=p.x-1, y=p.y+1, z=p.z}},  
}

doMoveInArea2(cid, 0, triplo6, STEELDAMAGE, min, max, spell)
doSendMagicEffect(t[a][2], t[a][1])
    

elseif spell == "Thrash" then

                --cid, effDist, effDano, areaEff, areaDano, element, min, max
doMoveInAreaMulti(cid, 10, 111, bullet, bulletDano, NORMALDAMAGE, min, max)

elseif spell == "Splash" or tonumber(spell) == 7 then

    doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)
    doSendMagicEffect(getThingPosWithDebug(cid), 53)
    
elseif spell == "Dragon Breath" then     

    doMoveInArea2(cid, 143, db1, DRAGONDAMAGE, min, max, spell)
       
elseif spell == "Muddy Water" then

local pos = getThingPosWithDebug(cid)

doMoveInArea2(cid, 55, doSurf1, GROUNDDAMAGE, 0, 0, spell)
addEvent(doDanoWithProtect, math.random(100, 400), cid, GROUNDDAMAGE, pos, doSurf2, -min, -max, 0)

elseif spell == "Venom Motion" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

   doMoveInArea2(cid, 114, muddy, POISONDAMAGE, min, max, spell, ret)
       
elseif spell == "Thunder Fang" then

    doSendMagicEffect(getThingPosWithDebug(target), 146)
    doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48)  --alterado v1.7
    
elseif spell == "Zap Cannon" then

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {73, {x=p.x, y=p.y-1, z=p.z}},
[1] = {74, {x=p.x+6, y=p.y, z=p.z}},      --alterado v1.8
[2] = {75, {x=p.x, y=p.y+6, z=p.z}},
[3] = {76, {x=p.x-1, y=p.y, z=p.z}},
}

doMoveInArea2(cid, 0, triplo6, ELECTRICDAMAGE, min, max, spell)
doMoveInArea2(cid, 177, reto6, ELECTRICDAMAGE, 0, 0, "Zap Cannon Eff")
doSendMagicEffect(t[a][2], t[a][1])
    
elseif spell == "Charge Beam" then

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {73, {x=p.x, y=p.y-1, z=p.z}},
[1] = {74, {x=p.x+6, y=p.y, z=p.z}},      --alterado v1.8
[2] = {75, {x=p.x, y=p.y+6, z=p.z}},
[3] = {76, {x=p.x-1, y=p.y, z=p.z}},
}

doMoveInArea2(cid, 0, triplo6, ELECTRICDAMAGE, min, max, spell)
doSendMagicEffect(t[a][2], t[a][1])
    
elseif spell == "Sacred Fire" then

     doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
     doDanoWithProtectWithDelay(cid, target, SACREDDAMAGE, min, max, 143, sacred)    --alterado v1.6
            
elseif spell == "Blaze Kick" then

doMoveInArea2(cid, 6, blaze, FIREDAMAGE, min, max, spell)
addEvent(doMoveInArea2, 200, cid, 6, kick, FIREDAMAGE, min, max, spell)

elseif spell == "Cross Chop" then

doMoveInArea2(cid, 118, blaze, FIGHTINGDAMAGE, min, max, spell)
addEvent(doMoveInArea2, 200, cid, 118, kick, FIGHTINGDAMAGE, min, max, spell)

elseif spell == "Overheat" then

   doMoveInArea2(cid, 5, reto5, FIREDAMAGE, min, max, spell)
   
elseif spell == "Ancient Power" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area, eff)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, ROCKDAMAGE, area, 0, 0, 0, eff)
   doAreaCombatHealth(cid, ROCKDAMAGE, area, whirl3, -min, -max, 137)
end
end

for a = 0, 4 do

local t = {
[0] = {18, {x=p.x, y=p.y-(a+1), z=p.z}},           --alterado v1.4
[1] = {18, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {18, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {18, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end
    
elseif spell == "Twister" then

doMoveInAreaMulti(cid, 28, 42, bullet, bulletDano, DRAGONDAMAGE, min, max)

elseif spell == "Multi-Kick" then

doMoveInAreaMulti(cid, 39, 113, multi, multiDano, FIGHTINGDAMAGE, min, max)

elseif spell == "Multi-Punch" then

doMoveInAreaMulti(cid, 39, 112, multi, multiDano, FIGHTINGDAMAGE, min, max)

elseif spell == "Squisky Licking" then
                                                      
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 0
ret.spell = spell
ret.cond = "Stun"

local areas = {SL1, SL2, SL3, SL4}

for i = 0, 3 do
    addEvent(doMoveInArea2, i*200, cid, 145, areas[i+1], NORMALDAMAGE, min, max, spell, ret)
end

elseif spell == "Lick" then

local ret = {}
ret.id = target
ret.cd = 9
ret.check = getPlayerStorageValue(target, conds["Stun"])
ret.eff = 0
ret.spell = spell
ret.cond = "Stun"

   doSendMagicEffect(getThingPosWithDebug(target), 145)      --alterado v1.4!
   addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)

elseif spell == "Bonemerang" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7)
   doDanoInTargetWithDelay(cid, target, GROUNDDAMAGE, min, max, 227)  --alterado v1.7
   addEvent(doSendDistanceShoot, 250, getThingPosWithDebug(target), getThingPosWithDebug(cid), 7)

elseif spell == "Bone Club" then

  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7)
  doDanoInTargetWithDelay(cid, target, GROUNDDAMAGE, min, max, 118)  --alterado v1.7
    
elseif spell == "Bone Slash" then

local function sendStickEff(cid, dir)
    if not isCreature(cid) then return true end
       doAreaCombatHealth(cid, GROUNDDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 227)
    end

    local function doStick(cid)
    if not isCreature(cid) then return true end
    local t = {
          [1] = SOUTHWEST,
          [2] = SOUTH,
          [3] = SOUTHEAST,
          [4] = EAST,
          [5] = NORTHEAST,
          [6] = NORTH,
          [7] = NORTHWEST,
          [8] = WEST,
          [9] = SOUTHWEST,
        }
        for a = 1, 9 do
            addEvent(sendStickEff, a * 140, cid, t[a])
        end
    end

    doStick(cid, false, cid)
                                                                            --alterado v1.4
elseif spell == "Furious Legs" or spell == "Ultimate Champion" or spell == "Fighter Spirit" then

   local ret = {}
   ret.id = cid
   ret.cd = 15
   ret.eff = 13
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)      
            
elseif spell == "Sludge Wave" then                

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

local master = isSummon(cid) and getCreatureMaster(cid) or cid
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"   

function sendAtk(cid, area, eff)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, POISONDAMAGE, area, 0, 0, 0, eff)
   doAreaCombatHealth(cid, POISONDAMAGE, area, whirl3, -min, -max, 114)
end
end

for a = 0, 4 do

local t = {
[0] = {114, {x=p.x, y=p.y-(a+1), z=p.z}},           --alterado v1.4
[1] = {114, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {114, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {114, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end
    
elseif spell == "Sludge Rain" then

local master = isSummon(cid) and getCreatureMaster(cid) or cid
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

local function doFall(cid)
for rocks = 1, 42 do
    addEvent(fall, rocks*35, cid, master, POISONDAMAGE, 6, 116)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, 6)
end         
                               
addEvent(doFall, 450, cid)
addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, POISONDAMAGE, min, max, spell, ret)  

elseif spell == "Shadow Ball" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 18)

    local function doDamageWithDelay(cid, target)
    if not isCreature(cid) or not isCreature(target) then return true end
    if isSleeping(cid) then return false end
    if getPlayerStorageValue(cid, conds["Fear"]) >= 1 then return true end
       doAreaCombatHealth(cid, ghostDmg, getThingPosWithDebug(target), 0, -min, -max, 255)
       local pos = getThingPosWithDebug(target)
       pos.x = pos.x + 1
       doSendMagicEffect(pos, 140)
    end

    addEvent(doDamageWithDelay, 100, cid, target)
    
elseif spell == "Shadow Punch" then

    local pos = getThingPosWithDebug(target)
    doSendMagicEffect(pos, 112)

        local function doPunch(cid, target)
            if not isCreature(cid) or not isCreature(target) then return true end
               doAreaCombatHealth(cid, ghostDmg, getThingPosWithDebug(target), 0, -min, -max, 255)
               pos.x = pos.x + 1
               doSendMagicEffect(pos, 140)
        end

    addEvent(doPunch, 200, cid, target)


elseif spell == "Brick Beak" then

local ret = {}
ret.id = 0
ret.cd = 9                        
ret.eff = 88
ret.check = 0
ret.first = true
ret.cond = "Paralyze"
ret.id = 0
ret.cd = 9                        
ret.eff = 88
ret.check = 0
ret.first = true
ret.cond = "Silence"

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {90, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {90, {x=p.x+2, y=p.y+1, z=p.z}},   
[2] = {90, {x=p.x+1, y=p.y+2, z=p.z}},
[3] = {90, {x=p.x-1, y=p.y+1, z=p.z}},  
}

doMoveInArea2(cid, 0, BrickBeak, FIGHTINGDAMAGE, min, max, spell, ret)
doSendMagicEffect(t[a][2], t[a][1])


elseif spell == "Shadow Storm" then

local master = isSummon(cid) and getCreatureMaster(cid) or cid

local function doFall(cid)
for rocks = 1, 42 do   --62
    addEvent(fall, rocks*35, cid, master, ghostDmg, 18, 140)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, 18)
end
addEvent(doFall, 450, cid)
addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, ghostDmg, min, max, spell)

elseif spell == "Invisible" then

doDisapear(cid)
doSendMagicEffect(getThingPosWithDebug(cid), 134)
if isMonster(cid) then
  local pos = getThingPosWithDebug(cid)                           --alterei!
  doTeleportThing(cid, {x=4, y=3, z=10}, false)
  doTeleportThing(cid, pos, false)
end
addEvent(doAppear, 4000, cid)
        
elseif spell == "Nightmare" then

    if not isSleeping(target) then
        doSendMagicEffect(getThingPosWithDebug(target), 3)
        doSendAnimatedText(getThingPosWithDebug(target), "FAIL", 155)
    return true
    end
    
doDanoWithProtectWithDelay(cid, target, ghostDmg, -min, -max, 138)  

elseif spell == "Dream Eater" then

    if not isSleeping(target) then
        doSendMagicEffect(getThingPosWithDebug(target), 3)
        doSendAnimatedText(getThingPosWithDebug(target), "FAIL", 155)
    return true
    end
                                                              --alterado v1.6
    setPlayerStorageValue(cid, 95487, 1)
    doSendMagicEffect(getThingPosWithDebug(cid), 132)
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    doDanoWithProtectWithDelay(cid, target, psyDmg, -min, -max, 138)
    
elseif spell == "Dark Eye" or spell == "Miracle Eye" then

doSendMagicEffect(getThingPosWithDebug(cid), 47)
setPlayerStorageValue(cid, 999457, 1)  

elseif spell == "Elemental Hands" then

if getCreatureOutfit(cid).lookType == 1301 then
print("Error occurred with move 'Elemental Hands', outfit of hitmonchan is wrong")
doPlayerSendTextMessage(getCreatureMaster(cid), MESSAGE_STATUS_CONSOLE_BLUE, "A error are ocurred... A msg is sent to gamemasters!")
return true
end        --proteçao pra n usar o move com o shiny hitmonchan com outfit diferente da do elite monchan do PO...

local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
local hands = getItemAttribute(getPlayerSlotItem(e, 8).uid, "hands")

       if hands == 4 then
       doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", 0)
       doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][0].eff)
       doSetCreatureOutfit(cid, {lookType = hitmonchans[name][0].out}, -1)
       else
       doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", hands+1)
       doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][hands+1].eff)
       doSetCreatureOutfit(cid, {lookType = hitmonchans[name][hands+1].out}, -1)
       end
       
elseif spell == "Crabhammer" then

doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 225)

elseif spell == "Ancient Fury" then

   local ret = {}
   ret.id = cid
   ret.cd = 15
   ret.eff = 0
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)
   
elseif spell == "Divine Punishment" then

local roardirections = {            
[NORTH] = {SOUTH},
[SOUTH] = {NORTH},
[WEST] = {EAST},
[EAST] = {WEST}}

local function divineBack(cid)
if not isCreature(cid) then return true end
local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1)
      for _,pid in pairs(uid) do
          dirrr = getCreatureDirectionToTarget(pid, cid)
          delay = getNextStepDelay(pid, 0)
          if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then
             setPlayerStorageValue(pid, 654878, 1)
             doChangeSpeed(pid, -getCreatureSpeed(pid))
             doChangeSpeed(pid, 100)
             doPushCreature(pid, roardirections[dirrr][1], 1, 0)
             doChangeSpeed(pid, -getCreatureSpeed(pid))
             addEvent(setPlayerStorageValue, 6450, pid, 654878, -1)
             addEvent(doRegainSpeed, 6450, pid)
           elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
             setPlayerStorageValue(pid, 654878, 1)
             doChangeSpeed(pid, -getCreatureSpeed(pid))
             doChangeSpeed(pid, 100)
             doPushCreature(pid, roardirections[dirrr][1], 1, 0)
             doChangeSpeed(pid, -getCreatureSpeed(pid))
             addEvent(doRegainSpeed, 6450, pid)
             addEvent(setPlayerStorageValue, 6450, pid, 654878, -1)
           end
       end    
end

local function doDivine(cid, min, max, spell, rounds, area)
if not isCreature(cid) then return true end
local ret = {}
ret.id = 0
ret.check = 0
ret.cd = rounds
ret.cond = "Confusion"
       
for i = 1, 9 do
    addEvent(doMoveInArea2, i*500, cid, 137, area[i], psyDmg, min, max, spell, ret)
end
end
       
       local rounds = math.random(9, 12)
       local area = {punish1, punish2, punish3, punish1, punish2, punish3, punish1, punish2, punish3}
       
       local posi = getThingPosWithDebug(cid)
       posi.x = posi.x+1
       posi.y = posi.y+1

       setPlayerStorageValue(cid, 2365487, 1)
       addEvent(setPlayerStorageValue, 6450, cid, 2365487, -1) --alterado v1.4
       doDisapear(cid)
       doChangeSpeed(cid, -getCreatureSpeed(cid))
       doSendMagicEffect(posi, 247)   
       addEvent(doAppear, 6450, cid)
       addEvent(doRegainSpeed, 6450, cid)
       
       local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1)
             for _,pid in pairs(uid) do
                 if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then
                    doChangeSpeed(pid, -getCreatureSpeed(pid))
                 elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
                    doChangeSpeed(pid, -getCreatureSpeed(pid))
                 end
             end
                        
       addEvent(divineBack, 2100, cid)
       addEvent(doDivine, 2200, cid, min, max, spell, rounds, area)
       
elseif isInArray({"Psychic Sight", "Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, spell) then

   local ret = {}
   ret.id = cid
   ret.cd = 10
   ret.eff = 0
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)        

elseif spell == "Shadowave" then

doMoveInArea2(cid, 222, db1, DARKDAMAGE, min, max, spell)

elseif spell == "Confuse Ray" then

    local rounds = math.random(4, 7)
    rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
    
    local ret = {}
    ret.id = target
    ret.cd = rounds
    ret.check = getPlayerStorageValue(target, conds["Confusion"])
    ret.cond = "Confusion"

    posi = getThingPosWithDebug(target)
         posi.y = posi.y+1
    ---
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    addEvent(doSendMagicEffect, 100, posi, 222)
    addEvent(doMoveDano2, 100, cid, target, GHOSTDAMAGE, -min, -max, ret, spell)

elseif spell == "Leaf Blade" then

local a = getThingPosWithDebug(target)
posi = {x = a.x+1, y = a.y+1, z = a.z}

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
addEvent(doSendMagicEffect, 200, posi, 240)
doDanoWithProtectWithDelay(cid, target, GRASSDAMAGE, -min, -max, 0, LeafBlade)

elseif spell == "Eruption" or spell == "Elecball" then


   local ret = {}
   ret.id = cid
   ret.cd = 15
   ret.eff = 14
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)
    
pos = getThingPosWithDebug(cid)
    pos.x = pos.x+1
    pos.y = pos.y+1
    
atk = {
["Eruption"] = {241, FIREDAMAGE},
["Elecball"] = {171, ELECTRICDAMAGE}
}

stopNow(cid, 1000)
doSendMagicEffect(pos, atk[spell][1])
doMoveInArea2(cid, 0, bombWee1, atk[spell][2], min, max, spell)

elseif spell == "Meteor Smash" then

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 20)
doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, -min, -max, 242) --alterado v1.7

elseif spell == "Draco Meteor" then

local effD = 5
local eff = 248
local master = isSummon(cid) and getCreatureMaster(cid) or cid

local function doFall(cid)
for rocks = 5, 42 do
    addEvent(fall, rocks*35, cid, master, DRAGONDAMAGE, effD, eff)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, DRAGONDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)

elseif spell == "Meteor Rain" then

local effD = 5
local eff = 241
local master = isSummon(cid) and getCreatureMaster(cid) or cid

local function doFall(cid)
for rocks = 5, 42 do
    addEvent(fall, rocks*35, cid, master, FIREDAMAGE, effD, eff)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, FIREDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)

elseif spell == "Dragon Pulse" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, DRAGONDAMAGE, area, pulse2, -min, -max, 255)
end
end

for a = 0, 3 do

local t = {
[0] = {249, {x=p.x, y=p.y-(a+1), z=p.z}},
[1] = {249, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {249, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {249, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 300*a, cid, t[d][2])
addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse2, 0, 0, 177)
addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
end

elseif spell == "Psy Ball" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
   doDanoInTargetWithDelay(cid, target, psyDmg, min, max, 250)  --alterado v1.7

elseif spell == "SmokeScreen" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

local function smoke(cid)
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   doMoveInArea2(cid, 34, confusion, NORMALDAMAGE, 0, 0, spell, ret)
end

setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 1000, cid, 3644587, -1)
for i = 0, 2 do
    addEvent(smoke, i*500, cid)                               
end

elseif spell == "Faint Attack" or spell == "Sucker Punch" then  --alterado v1.5

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
   doDanoInTargetWithDelay(cid, target, DARKDAMAGE, min, max, 237)  --alterado v1.7

elseif spell == "Assurance" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area1, area2, eff)
if isCreature(cid) then
   if not isSightClear(p, area1, false) then return true end
   if not isSightClear(p, area2, false) then return true end
   doAreaCombatHealth(cid, DARKDAMAGE, area1, 0, 0, 0, eff)
   doAreaCombatHealth(cid, DARKDAMAGE, area2, whirl3, -min, -max, 0)
end
end

for a = 0, 3 do

local t = {
[0] = {230, {x=p.x+1, y=p.y-(a+1), z=p.z}, {x=p.x, y=p.y-(a+1), z=p.z}},
[1] = {226, {x=p.x+(a+2), y=p.y+1, z=p.z}, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {235, {x=p.x+1, y=p.y+(a+1), z=p.z}, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {231, {x=p.x-(a+1), y=p.y+1, z=p.z}, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][3], t[d][1])
end

elseif spell == "Scary Face" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 0
ret.spell = spell
ret.cond = "Stun"


local p = getThingPosWithDebug(cid)
doSendMagicEffect({x=p.x+1, y=p.y+1, z=p.z}, 228)
doMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)

elseif spell == "Surf" then

local pos = getThingPosWithDebug(cid)

doMoveInArea2(cid, 246, doSurf1, WATERDAMAGE, 0, 0, spell)
addEvent(doDanoWithProtect, math.random(100, 400), cid, WATERDAMAGE, pos, doSurf2, -min, -max, 0)

elseif spell == "Sunny Day" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 39
ret.cond = "Silence"
----
local p = getThingPosWithDebug(cid)
doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 181)
---
if isSummon(cid) then
   doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")
setPlayerStorageValue(cid, 253, 1)  --focus
doMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)


elseif spell == "Taunt" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 136
ret.cond = "Silence"
----
local p = getThingPosWithDebug(cid)
doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 140)
---
if isSummon(cid) then
   doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")
setPlayerStorageValue(cid, 253, 1)  --focus
doMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)




elseif isInArray({"Pursuit", "ExtremeSpeed", "U-Turn", "Shell Attack"}, spell) then

local atk = {
["Pursuit"] = {17, DARKDAMAGE},
["ExtremeSpeed"] = {50, NORMALDAMAGE, 51},
["U-Turn"] = {19, BUGDAMAGE},
["Shell Attack"] = {45, BUGDAMAGE}      --alterado v1.5
}

local pos = getThingPosWithDebug(cid)
local p = getThingPosWithDebug(target)
local newPos = getClosestFreeTile(target, p)

local eff = getSubName(cid, target) == "Shiny Arcanine" and atk[spell][3] or atk[spell][1] --alterado v1.6.1

local damage = atk[spell][2]
-----------
doDisapear(cid)
doChangeSpeed(cid, -getCreatureSpeed(cid))
-----------
addEvent(doSendMagicEffect, 300, pos, 211)
addEvent(doSendDistanceShoot, 400, pos, p, eff)
addEvent(doSendDistanceShoot, 400, newPos, p, eff)
addEvent(doDanoInTarget, 400, cid, target, damage, -min, -max, 0) --alterado v1.7
addEvent(doSendDistanceShoot, 800, p, pos, eff)
addEvent(doSendMagicEffect, 850, pos, 211)
addEvent(doRegainSpeed, 1000, cid)
addEvent(doAppear, 1000, cid)

elseif spell == "Egg Rain" then

local effD = 12
local eff = 5
local master = isSummon(cid) and getCreatureMaster(cid) or cid
------------

local function doFall(cid)
for rocks = 1, 62 do
    addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, NORMALDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)


elseif spell == "Stampade" then

local master = getCreatureMaster(cid) or 0
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 0
ret.check = 0
ret.spell = spell
ret.cond = "Stun"
    
for rocks = 1, 42 do
    addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 187)
end

addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)

elseif spell == "Stampage" then

local master = getCreatureMaster(cid) or 0
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 0
ret.check = 0
ret.spell = spell
ret.cond = "Stun"
    
for rocks = 1, 42 do
    addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 194)
end

addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)

elseif spell == "Barrier" then
if not isCreature(getCreatureTarget(cid)) then
local function sendAtk(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 9658783, -1)
setPlayerStorageValue(cid, 734276, -1)
end
setPlayerStorageValue(cid, 734276, 1)
setPlayerStorageValue(cid, 9658783, 1)
pos = getThingPosWithDebug(cid)

local function doSendEff(cid)
if not isCreature(cid) then return true end
doSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 172)
end
for i = 0, 7 do
 addEvent(doSendEff, i*1000, cid)
end
addEvent(sendAtk, 8000, cid)  
stopNow(cid, 8 * 800)
else
local ret = {}
ret.id = target
ret.cd = 10
ret.check = getPlayerStorageValue(target, conds["Sleep"])
ret.eff = 0
ret.cond = "Sleep"

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 24)
pos = getThingPosWithDebug(target)
addEvent(doMoveDano2, 150, cid, target, PSYCHICDAMAGE, 0, 0, ret, spell)
local function doSendEff(cid)
if not isCreature(cid) then return true end
doSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 172)
end
for i = 0, 7 do
 addEvent(doSendEff, i*1000, cid)
end
stopNow(target, 8 * 800)
end

elseif spell == "Air Cutter" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, FLYINGDAMAGE, area, whirl3, -min, -max, 255)
end
end

for a = 0, 5 do

local t = {
[0] = {128, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}},
[1] = {129, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+2), y=p.y+1, z=p.z}},
[2] = {131, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+2), z=p.z}},
[3] = {130, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}}
}   
addEvent(doSendMagicEffect, 300*a, t[d][3], t[d][1])
addEvent(sendAtk, 300*a, cid, t[d][2])
end

elseif spell == "Venom Gale" then

local area = {gale1, gale2, gale3, gale4, gale3, gale2, gale1}

for i = 0, 6 do
    addEvent(doMoveInArea2, i*400, cid, 138, area[i+1], POISONDAMAGE, min, max, spell)
end    

elseif spell == "Crunch" then

doMoveInArea2(cid, 146, Crunch1, DARKDAMAGE, min, max, spell)
addEvent(doMoveInArea2, 300, cid, 146, Crunch2, DARKDAMAGE, min, max, spell)

elseif spell == "Ice Fang" then

doTargetCombatHealth(cid, target, ICEDAMAGE, 0, 0, 146)
addEvent(doDanoWithProtect, 250, cid, ICEDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 17)

elseif spell == "Psyshock" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area, eff)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, psyDmg, area, 0, 0, 0, eff)    --alterado v1.4
   doAreaCombatHealth(cid, psyDmg, area, whirl3, -min, -max, 255)     --alterado v1.4
end
end

for a = 0, 4 do

local t = {
[0] = {250, {x=p.x, y=p.y-(a+1), z=p.z}},           --alterado v1.4
[1] = {250, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {250, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {250, {x=p.x-(a+1), y=p.y, z=p.z}}
}   
addEvent(sendAtk, 370*a, cid, t[d][2], t[d][1])
end


elseif spell == "Hurricane" then

local function hurricane(cid)
        if not isCreature(cid) then return true end
        if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
        if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
           doMoveInArea2(cid, 42, bombWee1, FLYINGDAMAGE, min, max, spell)
    end

doSetCreatureOutfit(cid, {lookType = 1398}, 10000)

setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 17*600, cid, 3644587, -1)        
for i = 1, 17 do
    addEvent(hurricane, i*600, cid)                                --alterado v1.4
end

elseif spell == "Aromateraphy" or spell == "Emergency Call" then

eff = spell == "Aromateraphy" and 14 or 13

doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), bombWee3, 0, 0, eff)
if isSummon(cid) then
   doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")

local uid = checkAreaUid(getThingPosWithDebug(cid), confusion, 1, 1)
for _,pid in pairs(uid) do
    if isCreature(pid) then
       if ehMonstro(cid) and ehMonstro(pid) and pid ~= cid then
          doCureStatus(pid, "all")
       elseif isSummon(cid) and ((isSummon(pid) and canAttackOther(cid, pid) == "Cant") or (isPlayer(pid) and canAttackOther(cid, pid) == "Cant")) and pid ~= cid then
          if isSummon(pid) then
             doCureBallStatus(getPlayerSlotItem(getCreatureMaster(pid), 8).uid, "all")
          end
          doCureStatus(pid, "all")
       end
    end
end

elseif spell == "Synthesis" or spell == "Roost" then

    local min = (getCreatureMaxHealth(cid) * 45) / 100
    local max = (getCreatureMaxHealth(cid) * 60) / 100
    
    local function doHealArea(cid, min, max)
    local amount = math.random(min, max)
    if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
        amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
    end
    if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
       doCreatureAddHealth(cid, amount)
       doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
    end
    end
    
    doSendMagicEffect(getThingPosWithDebug(cid), 39)
    doHealArea(cid, min, max)
    
elseif spell == "Cotton Spore" then

    local ret = {}
    ret.id = 0
    ret.cd = 9
    ret.eff = 0
    ret.check = 0
    ret.spell = spell
    ret.cond = "Stun"
    
    doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret)

elseif spell == "Peck" then

sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 3)  --alterado v1.7

elseif spell == "Night Daze" then

local pos = getThingPosWithDebug(cid)
local eff = spell == "Night Daze" and 222 or 113
local dmg = spell == "Night Daze" and DARKDAMAGE or FIGHTINGDAMAGE

local out = getSubName(cid, target) == "Hitmontop" and 1193 or 1451 --alterado v1.6.1

    local function doSendBubble(cid, pos)
        if not isCreature(cid) then return true end
        doSendDistanceShoot(getThingPosWithDebug(cid), pos, 39)
        doSendMagicEffect(pos, eff)
    end
                                                              --alterado!!
    for a = 1, 20 do
        local r1 = math.random(-4, 4)
        local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3)
        --
        local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z}
        addEvent(doSendBubble, a * 25, cid, lugar)
    end
    if isInArray({"Hitmontop", "Shiny Hitmontop"}, getSubName(cid, target)) then  --alterado v1.6.1
       doSetCreatureOutfit(cid, {lookType = out}, 400)
    end
    addEvent(doDanoWithProtect, 150, cid, dmg, pos, waterarea, -min, -max, 0)
    
elseif spell == "Rolling Kick" then

local pos = getThingPosWithDebug(cid)
local eff = spell == "Night Daze" and 222 or 113
local dmg = spell == "Night Daze" and DARKDAMAGE or FIGHTINGDAMAGE

local out = getSubName(cid, target) == "Hitmontop" and 1193 or 1451 --alterado v1.6.1

    local function doSendBubble(cid, pos)
        if not isCreature(cid) then return true end
        doSendDistanceShoot(getThingPosWithDebug(cid), pos, 27)
        doSendMagicEffect(pos, eff)
    end
                                                              --alterado!!
    for a = 1, 20 do
        local r1 = math.random(-4, 4)
        local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3)
        --
        local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z}
        addEvent(doSendBubble, a * 25, cid, lugar)
    end
    if isInArray({"Hitmontop", "Shiny Hitmontop"}, getSubName(cid, target)) then  --alterado v1.6.1
       doSetCreatureOutfit(cid, {lookType = out}, 400)
    end
    addEvent(doDanoWithProtect, 150, cid, dmg, pos, waterarea, -min, -max, 0)
    
elseif spell == "Safeguard" then

doSendMagicEffect(getThingPosWithDebug(cid), 1)
if isSummon(cid) then
   doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")

elseif spell == "Air Slash" then

local p = getThingPosWithDebug(cid)

local t = {
{{128, {x = p.x+1, y = p.y-1, z = p.z}}, {16, {x = p.x+1, y = p.y-1, z = p.z}}},
{{129, {x = p.x+2, y = p.y+1, z = p.z}}, {221, {x = p.x+3, y = p.y+1, z = p.z}}},
{{131, {x = p.x+1, y = p.y+2, z = p.z}}, {223, {x = p.x+1, y = p.y+3, z = p.z}}},
{{130, {x = p.x-1, y = p.y+1, z = p.z}}, {243, {x = p.x-1, y = p.y+1, z = p.z}}},
}

for i = 1, 4 do
    doSendMagicEffect(t[i][2][2], t[i][2][1])
end
doDanoWithProtect(cid, FLYINGDAMAGE, getThingPosWithDebug(cid), airSlash, -min, -max, 0)    

for i = 1, 4 do
    addEvent(doSendMagicEffect, 400, t[i][1][2], t[i][1][1])
end
addEvent(doDanoWithProtect, 400, cid, FLYINGDAMAGE, getThingPosWithDebug(cid), bombWee2, -min, -max, 0)

elseif spell == "Feather Dance" then

local function doPulse(cid, eff)
if not isCreature(cid) or not isCreature(target) then return true end
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 9)
   doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, -min, -max, eff)   --alterado v1.7
end

   addEvent(doPulse, 0, cid, 137)                
   addEvent(doPulse, 100, cid, 137)


elseif spell == "Tailwind" then

   local ret = {}
   ret.id = cid
   ret.cd = 10
   ret.eff = 137
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)

elseif spell == "Double Team" then

  local function RemoveTeam(cid, master)
   if isCreature(cid) then
      local p = getThingPosWithDebug(cid)
      doSendMagicEffect(p, 211)
      doRemoveCreature(cid)
   end
   end
   
local function sendEff(cid, master, t)
if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then
   doSendMagicEffect(getThingPosWithDebug(cid), 86, master)
   addEvent(sendEff, 1000, cid, master, t-1)                        --alterado v1.9
end
end
         
   if getPlayerStorageValue(cid, 637500) >= 1 then
   return true
   end
   
   local s = {
   ["Xatu"] = "XatuTeam",
   ["Shiny Xatu"] = "Shiny XatuTeam",
   ["Yanma"] = "YanmaTeam",
   }
   
    local master = getCreatureMaster(cid)
    local item = getPlayerSlotItem(master, 8)
    local pos = getThingPosWithDebug(cid)
    local time = 20
    local pokelife = (getCreatureHealth(cid) / getCreatureMaxHealth(cid))
    local random = math.random(5, 10)
    local dir = getCreatureLookDir(cid)
    ---------
    doItemSetAttribute(item.uid, "hp", pokelife)
    ---------
    doDisapear(cid)
    doTeleportThing(cid, {x=4, y=3, z=10}, false)
    doAppear(cid)
    ---------
    doSummonMonster(master, s[getSubName(cid, target)]) --alterado v1.6.1
    local pk = getCreatureSummons(master)[2]
    adjustStatus(pk, item.uid, true, true, true)
    ---------
    doTeleportThing(pk, getClosestFreeTile(pk, pos), false)
    doTeleportThing(cid, getClosestFreeTile(cid, pos), false)
    doCreatureSetLookDir(pk, dir)
    doCreatureSetLookDir(cid, dir)
    doSendMagicEffect(getThingPosWithDebug(pk), 211)
    doSendMagicEffect(getThingPosWithDebug(cid), 211)
    if getPlayerStorageValue(cid, 9658783) >= 1 then          --gambiarra
       doSetCreatureOutfit(cid, {lookType = 1446}, -1)
    end
    sendEff(cid, master, time)      --alterado v1.9
    --------
    setPlayerStorageValue(pk, 637500, 1)
    setPlayerStorageValue(master, 637501, 1)
    addEvent(RemoveTeam, time*1000, pk, master)
    addEvent(setPlayerStorageValue, time*1000, master, 637501, -2) --alterado v1.6

elseif spell == "Tackle" then

   doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 111)

elseif spell == "Giga Drain" then

local life = getCreatureHealth(target)

    doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)
    
    local newlife = life - getCreatureHealth(target)

    doSendMagicEffect(getThingPosWithDebug(cid), 14)
    if newlife >= 1 then
    doCreatureAddHealth(cid, newlife)
    doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32)
    end  
    

elseif spell == "Leech Life" then

local life = getCreatureHealth(target)

    doDanoWithProtect(cid, BUGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)
    
    local newlife = life - getCreatureHealth(target)

    doSendMagicEffect(getThingPosWithDebug(cid), 14)
    if newlife >= 1 then
    doCreatureAddHealth(cid, newlife)
    doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32)
    end  
    
elseif spell == "Bug Fighter" then
    
   local ret = {}
   ret.id = cid
   ret.cd = 10
   ret.eff = 0
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)    
    
elseif spell == "Metal Claw" then

   doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 160)    
    
elseif spell == "Power Gem" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, ROCKDAMAGE, area, pulse2, -min, -max, 255)
end
end

for a = 0, 3 do

local t = {
[0] = {29, {x=p.x, y=p.y-(a+1), z=p.z}},     
[1] = {29, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {29, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {29, {x=p.x-(a+1), y=p.y, z=p.z}}                            
}   
addEvent(sendAtk, 400*a, cid, t[d][2])
addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, 103)
end    
    
elseif spell == "Octazooka" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 34
ret.cond = "Silence"

doMoveInAreaMulti(cid, 6, 116, multi, multiDano, WATERDAMAGE, min, max)
doMoveInArea2(cid, 0, multiDano, WATERDAMAGE, 0, 0, spell, ret)
    
    
elseif spell == "Take Down" then

    doMoveInArea2(cid, 111, reto5, NORMALDAMAGE, min, max, spell)

elseif spell == "Yawn" then

local ret = {}
ret.id = target
ret.cd = math.random(6, 9)
ret.check = getPlayerStorageValue(target, conds["Sleep"])
ret.first = true
ret.cond = "Sleep"

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 11)
    addEvent(doMoveDano2, 1500, cid, target, NORMALDAMAGE, 0, 0, ret, spell)

elseif spell == "Tongue Hook" then

sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38)
addEvent(doTeleportThing, 200, target, getClosestFreeTile(cid, getThingPosWithDebug(cid)), true)
addEvent(sendDistanceShootWithProtect, 200, cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38)


elseif spell == "Tongue Grap" then

local function distEff(cid, target)
if not isCreature(cid) or not isCreature(target) or not isSilence(target) then return true end  --alterado v1.6
   sendDistanceShootWithProtect(cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38)
end

local ret = {}
ret.id = target
ret.cd = 10
ret.check = getPlayerStorageValue(target, conds["Silence"])
ret.eff = 185
ret.cond = "Silence"

sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38)
addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
 
for i = 1, 10 do
    addEvent(distEff, i*930, cid, target)
end

elseif spell == "Struggle Bug" then

    local function sendFireEff(cid, dir)
    if not isCreature(cid) then return true end
       doDanoWithProtect(cid, BUGDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 105)
    end

    local function doWheel(cid)
    if not isCreature(cid) then return true end
    local t = {
          [1] = SOUTH,
          [2] = SOUTHEAST,
          [3] = EAST,
          [4] = NORTHEAST,
          [5] = NORTH,        --alterado v1.5
          [6] = NORTHWEST,
          [7] = WEST,
          [8] = SOUTHWEST,
        }
        for a = 1, 8 do
            addEvent(sendFireEff, a * 200, cid, t[a])
        end
    end

    doWheel(cid, false, cid)
    
elseif spell == "Low Kick" then
 
    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
    doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113)    --alterado v1.7

elseif spell == "Present" then

local function sendHeal(cid)
if isCreature(cid) and isCreature(target) then
   doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), crusher, min, max, 5)
   doSendAnimatedText(getThingPosWithDebug(target), "HEALTH!", 65)
end
end

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 31)
    if math.random(1, 100) >= 10 then
       doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 5, crusher)
    else
       addEvent(sendHeal, 100, cid)
    end
    
elseif spell == "Inferno" or spell == "Fissure" then
    
local pos = getThingPosWithDebug(cid)

atk = {
["Inferno"] = {101, FIREDAMAGE},
["Fissure"] = {102, GROUNDDAMAGE}
}

doMoveInArea2(cid, atk[spell][1], inferno1, atk[spell][2], 0, 0, spell)
addEvent(doDanoWithProtect, math.random(100, 400), cid, atk[spell][2], pos, inferno2, -min, -max, 0)


elseif spell == "Wrap" then

local ret = {}
ret.id = target
ret.cd = 10
ret.check = getPlayerStorageValue(target, conds["Silence"])
ret.eff = 104
ret.cond = "Silence"

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)

elseif spell == "Rock n'Roll" then

local pos = getThingPosWithDebug(cid)
local areas = {rock1, rock2, rock3, rock4, rock5, rock4, rock3, rock2, rock1}
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 1
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

for i = 0, 8 do
    addEvent(doMoveInArea2, i*400, cid, 1, areas[i+1], NORMALDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*410, cid, 1, areas[i+1], NORMALDAMAGE, 0, 0, spell)
end

elseif spell == "Power Wave" then
                                             
local pos = getThingPosWithDebug(cid)
local areas = {rock1, rock2, rock3, rock4, rock5}
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 103
ret.check = 0
ret.first = true
ret.cond = "Paralyze"

local function sendAtk(cid)
if isCreature(cid) then
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 9658783, -1)  
for i = 0, 4 do
    addEvent(doMoveInArea2, i*400, cid, 103, areas[i+1], psyDmg, min, max, spell, ret)
    addEvent(doMoveInArea2, i*410, cid, 103, areas[i+1], psyDmg, 0, 0, spell)
end
end
end

doSetCreatureOutfit(cid, {lookType = 1001}, -1)
setPlayerStorageValue(cid, 9658783, 1)
addEvent(sendAtk, 2000, cid)  


elseif spell == "Heal Bell" then

if isSummon(cid) then
   doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")

       local areas = {rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5}
   local ret = {}
   ret.id = cid
   ret.cd = 10
   ret.eff = 0
   ret.check = 0
   ret.buff = spell
   ret.first = true
   
   doCondition2(ret)    
 
       for i = 0, 22 do
    addEvent(doMoveInArea2, i*400, cid, 33, areas[i+1], NORMALDAMAGE, 0, 0, spell)
       end

elseif spell == "Ground Crusher" then

local pos = getThingPosWithDebug(cid)
local areas = {rock1, rock2, rock3, rock4, rock5}
local ret = {}
    ret.id = 0
    ret.cd = 12
    ret.eff = 0
    ret.check = 0
    ret.spell = spell
    ret.cond = "Stun"
    
local function endMove(cid)
if isCreature(cid) then
   doRemoveCondition(cid, CONDITION_OUTFIT)   
end
end

doSetCreatureOutfit(cid, {lookType = 1449}, -1)
stopNow(cid, 16*360)
addEvent(endMove, 16*360, cid)
----
for i = 0, 4 do
    addEvent(doMoveInArea2, i*350, cid, 100, areas[i+1], GROUNDDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*360, cid, 100, areas[i+1], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 4, 8 do
    local a = i-3
    addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 8, 12 do
    local a = i-7
    addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 12, 16 do
    local a = i-11
    addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 16, 20 do
    local a = i-15
    addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end

elseif spell == "Last Resort" then

local pos = getThingPosWithDebug(cid)
local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}

for i = 0, 9 do
    addEvent(doMoveInArea2, i*400, cid, 3, areas[i+1], NORMALDAMAGE, min, max, spell)
    addEvent(doMoveInArea2, i*410, cid, 3, areas[i+1], NORMALDAMAGE, 0, 0, spell)
end

elseif spell == "Psy Impact" then

local master = getCreatureMaster(cid) or 0
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 0
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
    
for rocks = 1, 42 do
    addEvent(fall, rocks*35, cid, master, psyDmg, -1, 98)
end

addEvent(doMoveInArea2, 500, cid, 0, BigArea2, psyDmg, min, max, spell, ret)

elseif spell == "Two Face Shock" then

local atk = {
[1] = {179, ICEDAMAGE},
[2] = {127, GROUNDDAMAGE}
}

    local rand = math.random(1, 2)

    doAreaCombatHealth(cid, atk[rand][2], getThingPosWithDebug(cid), splash, -min, -max, 255)

    local sps = getThingPosWithDebug(cid)
    sps.x = sps.x+1
    sps.y = sps.y+1
    doSendMagicEffect(sps, atk[rand][1])


elseif spell == "Aerial Ace" then

local eff = {16, 221, 223, 243}

for rocks = 1, 32 do
    addEvent(fall, rocks*22, cid, master, FLYINGDAMAGE, -1, eff[math.random(1, 4)])
end

addEvent(doMoveInArea2, 500, cid, 0, BigArea2, FLYINGDAMAGE, min, max, spell)

elseif spell == "Echoed Voice" then

local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

function sendAtk(cid, area)
if isCreature(cid) then
   if not isSightClear(p, area, false) then return true end
   doAreaCombatHealth(cid, NORMALDAMAGE, area, pulse2, -min, -max, 255)
end
end

for a = 0, 5 do

local t = {
[0] = {39, {x=p.x, y=p.y-(a+1), z=p.z}},     
[1] = {39, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {39, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {39, {x=p.x-(a+1), y=p.y, z=p.z}}                            
}   
addEvent(sendAtk, 400*a, cid, t[d][2])
addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
end    

elseif spell == "Electro Field" or spell == "Petal Tornado" or spell == "Waterfall" or spell == "Divine Punch" or spell == "Flame Wheel" then  --alterado v1.8

local p = getThingPos(cid)
local pos1 = {
[1] = {{x = p.x, y = p.y+4, z = p.z}, {x = p.x+1, y = p.y+4, z = p.z}, {x = p.x+2, y = p.y+3, z = p.z}, {x = p.x+3, y = p.y+2, z = p.z}, {x = p.x+4, y = p.y+1, z = p.z}, {x = p.x+4, y = p.y, z = p.z}},
[2] = {{x = p.x, y = p.y+3, z = p.z}, {x = p.x+1, y = p.y+3, z = p.z}, {x = p.x+2, y = p.y+2, z = p.z}, {x = p.x+3, y = p.y+1, z = p.z}, {x = p.x+3, y = p.y, z = p.z}},
[3] = {{x = p.x, y = p.y+2, z = p.z}, {x = p.x+1, y = p.y+2, z = p.z}, {x = p.x+2, y = p.y+1, z = p.z}, {x = p.x+2, y = p.y, z = p.z}},
[4] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y, z = p.z}},
}

local pos2 = {
[1] = {{x = p.x, y = p.y-4, z = p.z}, {x = p.x-1, y = p.y-4, z = p.z}, {x = p.x-2, y = p.y-3, z = p.z}, {x = p.x-3, y = p.y-2, z = p.z}, {x = p.x-4, y = p.y-1, z = p.z}, {x = p.x-4, y = p.y, z = p.z}},
[2] = {{x = p.x, y = p.y-3, z = p.z}, {x = p.x-1, y = p.y-3, z = p.z}, {x = p.x-2, y = p.y-2, z = p.z}, {x = p.x-3, y = p.y-1, z = p.z}, {x = p.x-3, y = p.y, z = p.z}},
[3] = {{x = p.x, y = p.y-2, z = p.z}, {x = p.x-1, y = p.y-2, z = p.z}, {x = p.x-2, y = p.y-1, z = p.z}, {x = p.x-2, y = p.y, z = p.z}},
[4] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y, z = p.z}},
}

local pos3 = {
[1] = {{x = p.x+4, y = p.y, z = p.z}, {x = p.x+4, y = p.y-1, z = p.z}, {x = p.x+3, y = p.y-2, z = p.z}, {x = p.x+2, y = p.y-3, z = p.z}, {x = p.x+1, y = p.y-4, z = p.z}, {x = p.x, y = p.y-4, z = p.z}},
[2] = {{x = p.x+3, y = p.y, z = p.z}, {x = p.x+3, y = p.y-1, z = p.z}, {x = p.x+2, y = p.y-2, z = p.z}, {x = p.x+1, y = p.y-3, z = p.z}, {x = p.x, y = p.y-3, z = p.z}},
[3] = {{x = p.x+2, y = p.y, z = p.z}, {x = p.x+2, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-2, z = p.z}, {x = p.x, y = p.y-2, z = p.z}},
[4] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x, y = p.y-1, z = p.z}},
}

local pos4 = {
[1] = {{x = p.x-4, y = p.y, z = p.z}, {x = p.x-4, y = p.y+1, z = p.z}, {x = p.x-3, y = p.y+2, z = p.z}, {x = p.x-2, y = p.y+3, z = p.z}, {x = p.x-1, y = p.y+4, z = p.z}, {x = p.x, y = p.y+4, z = p.z}},
[2] = {{x = p.x-3, y = p.y, z = p.z}, {x = p.x-3, y = p.y+1, z = p.z}, {x = p.x-2, y = p.y+2, z = p.z}, {x = p.x-1, y = p.y+3, z = p.z}, {x = p.x, y = p.y+3, z = p.z}},
[3] = {{x = p.x-2, y = p.y, z = p.z}, {x = p.x-2, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+2, z = p.z}, {x = p.x, y = p.y+2, z = p.z}},
[4] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x, y = p.y+1, z = p.z}},
}

local atk = {
--[atk] = {distance, eff, damage}
["Electro Field"] = {41, 207, ELECTRICDAMAGE},
["Petal Tornado"] = {14, 54, GRASSDAMAGE},
["Divine Punch"] = {90, 90, DRAGONDAMAGE},
["Flame Wheel"] = {-1, 6, FIREDAMAGE},     --alterado v1.9
["Waterfall"] = {-1, 155, WATERDAMAGE},
}

local function sendDist(cid, posi1, posi2, eff, delay)
if posi1 and posi2 and isCreature(cid) then
   addEvent(sendDistanceShootWithProtect, delay, cid, posi1, posi2, eff)   --alterado v1.6
end
end
                                                               
local function sendDano(cid, pos, eff, delay, min, max)
if pos and isCreature(cid) then
   addEvent(doDanoWithProtect, delay, cid, atk[spell][3], pos, 0, -min, -max, eff)  --alterado v1.6
end
end

local function doTornado(cid)
if isCreature(cid) then
for j = 1, 4 do
   for i = 1, 6 do                                                  --41/207  -- 14/54
       addEvent(sendDist, 350, cid, pos1[j][i], pos1[j][i+1], atk[spell][1], i*330)
       addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*300, min, max)
       addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*310, 0, 0)
       ---
       addEvent(sendDist, 350, cid, pos2[j][i], pos2[j][i+1], atk[spell][1], i*330)
       addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*300, min, max)
       addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*310, 0, 0)
       ----
       addEvent(sendDist, 800, cid, pos3[j][i], pos3[j][i+1], atk[spell][1], i*330)
       addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*300, min, max)
       addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*310, 0, 0)
       ---
       addEvent(sendDist, 800, cid, pos4[j][i], pos4[j][i+1], atk[spell][1], i*330)
       addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*300, min, max)
       addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*310, 0, 0)
   end
end
end
end

if spell == "Electro Field" then
   addEvent(doMoveInArea2, 1000, cid, 0, electro, ELECTRICDAMAGE, 0, 0, spell, ret)
end

if spell == "Waterfall" then
   addEvent(doMoveInArea2, 1000, cid, 0, electro, WATERDAMAGE, 0, 0, spell, ret)
end

if spell == "Flame Wheel" then   --alterado v1.8
   doTornado(cid)
else
    for b = 0, 2 do
        addEvent(doTornado, b*1500, cid)
    end
end

elseif spell == "Seed Bomb" then                  --alterado v1.6

local master = isSummon(cid) and getCreatureMaster(cid) or cid

local function doFall(cid)
for rocks = 1, 42 do   --62
    addEvent(fall, rocks*35, cid, master, SEED_BOMBDAMAGE, 1, 54)
end
end

for up = 1, 10 do
    addEvent(upEffect, up*75, cid, 1)
end
addEvent(doFall, 450, cid)
addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, SEED_BOMBDAMAGE, min, max, spell)


elseif spell == "Reverse Earthshock" then

local p = getThingPosWithDebug(cid)
p.x = p.x+1
p.y = p.y+1

sendEffWithProtect(cid, p, 151)   --send eff

local function doDano(cid)
local pos = getThingPosWithDebug(cid)

    local function doSendBubble(cid, pos)
        if not isCreature(cid) then return true end
        doSendDistanceShoot(getThingPosWithDebug(cid), pos, 39)
        doSendMagicEffect(pos, 239)
    end
                                                              --alterado!!
    for a = 1, 20 do
        local r1 = math.random(-4, 4)
        local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3)
        --
        local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z}
        addEvent(doSendBubble, a * 25, cid, lugar)
    end

    addEvent(doDanoWithProtect, 150, cid, ROCKDAMAGE, pos, waterarea, -min, -max, 0)
end

addEvent(doDano, 1250, cid)


elseif spell == "Fury Swipes" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23)
    doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 152)  
    
    
elseif spell == "Poison Jab" then

    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
    doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 153)

                       
elseif spell == "Cross Poison" then

doMoveInArea2(cid, 153, cross, POISONDAMAGE, -min, -max, spell)


elseif spell == "Hydro Dance" then

       local eff = {155, 154, 53, 155, 53}
       local area = {psy1, psy2, psy3, psy4, psy5}

       setPlayerStorageValue(cid, 3644587, 1)
       addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1)
       for i = 0, 4 do
           addEvent(doMoveInArea2, i*400, cid, eff[i+1], area[i+1], WATERDAMAGE, min, max, spell)
       end
       
elseif spell == "Gyro Ball" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 0
ret.spell = spell
ret.cond = "Stun"

stopNow(cid, 2000)
doMoveInArea2(cid, 156, reto5, STEELDAMAGE, min, max, spell, ret)

elseif spell == "Rock Tomb" then

local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 0
ret.check = getPlayerStorageValue(target, conds["Slow"])
ret.first = true
ret.cond = "Slow"

        local function doRockFall(cid, frompos, target)
            if not isCreature(target) or not isCreature(cid) then return true end
            local pos = getThingPosWithDebug(target)
            local ry = math.abs(frompos.y - pos.y)
            doSendDistanceShoot(frompos, pos, 39)
            addEvent(doMoveDano2, ry * 11, cid, target, ROCKDAMAGE, min, max, ret, spell)
            addEvent(sendEffWithProtect, ry*11, cid, pos, 157)
        end

        local function doRockUp(cid, target)
            if not isCreature(target) or not isCreature(cid) then return true end
            local pos = getThingPosWithDebug(target)
            local mps = getThingPosWithDebug(cid)
            local xrg = math.floor((pos.x - mps.x) / 2)
            local topos = mps
            topos.x = topos.x + xrg
            local rd =  7
            topos.y = topos.y - rd
            doSendDistanceShoot(getThingPosWithDebug(cid), topos, 39)
            addEvent(doRockFall, rd * 49, cid, topos, target)
        end        
    addEvent(doRockUp, 155, cid, target)
    
elseif spell == "Sand Tomb" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

doMoveInAreaMulti(cid, 22, 158, bullet, bulletDano, GROUNDDAMAGE, min, max, ret)

elseif spell == "Magnet Bomb" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 48
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

doMoveInAreaMulti(cid, 22, 171, bullet, bulletDano, ELECTRICDAMAGE, min, max, ret)

elseif spell == "Rain Dance" then

local master = isSummon(cid) and getCreatureMaster(cid) or cid
------------
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 1
ret.cond = "Silence"
---
local function doFall(cid)
for rocks = 1, 42 do --62
    addEvent(fall, rocks*35, cid, master, WATERDAMAGE, 52, 1)
end
end
---
local function doRain(cid)
if isSummon(cid) then
   doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end                                                      --cura status
doCureStatus(cid, "all")
---
setPlayerStorageValue(cid, 253, 1)  --focus
doSendMagicEffect(getThingPosWithDebug(cid), 132)
---
doMoveInArea2(cid, 0, confusion, WATERDAMAGE, 0, 0, spell, ret)
end
---
addEvent(doFall, 200, cid)
addEvent(doRain, 1000, cid)


elseif spell == "Night Slash" then

local p = getThingPosWithDebug(cid)

local t = {
{251, {x = p.x+1, y = p.y-1, z = p.z}},
{253, {x = p.x+2, y = p.y+1, z = p.z}},
{252, {x = p.x+1, y = p.y+2, z = p.z}},
{254, {x = p.x-1, y = p.y+1, z = p.z}},
}

doAreaCombatHealth(cid, DARKDAMAGE, p, scyther5, -min, -max, 165)
for a = 0, 1 do
    for i = 1, 4 do
        addEvent(doSendMagicEffect, a*400, t[i][2], t[i][1])          --alterado v1.8
    end
end
addEvent(doAreaCombatHealth, 400, cid, DARKDAMAGE, p, scyther5, -min, -max, 165)

elseif spell == "Heavy Slam" then

local p = getThingPosWithDebug(cid)

local t = {
{251, {x = p.x+1, y = p.y-1, z = p.z}},
{253, {x = p.x+2, y = p.y+1, z = p.z}},
{252, {x = p.x+1, y = p.y+2, z = p.z}},
{254, {x = p.x-1, y = p.y+1, z = p.z}},
}

doAreaCombatHealth(cid, STEELDAMAGE, p, confusion, -min, -max, 77)
for a = 0, 1 do
    for i = 1, 4 do
        addEvent(doSendMagicEffect, a*400, t[i][2], t[i][1])          --alterado v1.8
    end
end
addEvent(doAreaCombatHealth, 400, cid, STEELDAMAGE, p, confusion, -min, -max, 165)

elseif spell == "Wild Charge" then

local ret = {}                 
ret.id = 0
ret.cd = 9
ret.eff = 48
ret.check = 0
ret.spell = spell
ret.cond = "Stun"

local pos = getThingPosWithDebug(cid)
local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}

for i = 0, 14 do
    addEvent(doMoveInArea2, i*320, cid, 48, areas[i+1], ELECTRICDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*330, cid, 48, areas[i+1], ELECTRICDAMAGE, 0, 0, spell)
end

elseif spell == "Focus Blast" then

local ret = {}                 
ret.id = 0
ret.cd = 9
ret.eff = 136
ret.check = 0
ret.spell = spell
ret.cond = "Confusion"

local pos = getThingPosWithDebug(cid)
local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}

for i = 0, 14 do
    addEvent(doMoveInArea2, i*320, cid, 112, areas[i+1], FIGHTINGDAMAGE, min, max, spell, ret)
    addEvent(doMoveInArea2, i*330, cid, 112, areas[i+1], FIGHTINGDAMAGE, 0, 0, spell)
end

elseif spell == "Jump Kick" then   --ver essa

doMoveInAreaMulti(cid, 42, 113, bullet, bulletDano, FIGHTINGDAMAGE, min, max)

elseif spell == "Lava Plume" then                               --alterado v1.8 \/\/\/

doMoveInArea2(cid, 5, cross, FIREDAMAGE, -min, -max, spell)
doMoveInArea2(cid, 87, cross, FIREDAMAGE, 0, 0, spell)

elseif spell == "Silver Wind" then

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
doDanoWithProtectWithDelay(cid, target, BUGDAMAGE, min, max, 78, SilverWing)

elseif spell == "Bug Buzz" then

local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Stun"  

doMoveInArea2(cid, 86, db1, BUGDAMAGE, min, max, spell, ret)
addEvent(doMoveInArea2, 250, cid, 86, db1, BUGDAMAGE, 0, 0, spell)

elseif spell == "Whirlpool" then

local function setSto(cid)
if isCreature(cid) then
   setPlayerStorageValue(cid, 3644587, -1)
end
end

local function doDano(cid)
if isSleeping(cid) then return true end
      doDanoWithProtect(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, min, max, 89)
end

setPlayerStorageValue(cid, 3644587, 1)
for r = 0, 10 do  
    addEvent(doDano, 600 * r, cid)
end
addEvent(setSto, 600*10, cid)

elseif spell == "Iron Head" then

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
doDanoInTargetWithDelay(cid, target, STEELDAMAGE, -min, -max, 77)

elseif spell == "Brick Break" then

local ret = {}
ret.id = 0
ret.cd = 9                        
ret.eff = 88
ret.check = 0
ret.first = true
ret.cond = "Paralyze"

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {90, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {90, {x=p.x+2, y=p.y+1, z=p.z}},   
[2] = {90, {x=p.x+1, y=p.y+2, z=p.z}},
[3] = {90, {x=p.x-1, y=p.y+1, z=p.z}},  
}

doMoveInArea2(cid, 0, BrickBeak, FIGHTINGDAMAGE, min, max, spell, ret)
doSendMagicEffect(t[a][2], t[a][1])


elseif spell == "Volcano Burst" then

local pos = getThingPosWithDebug(cid)

doMoveInArea2(cid, 91, inferno1, FIREDAMAGE, 0, 0, spell)
addEvent(doDanoWithProtect, math.random(100, 400), cid, FIREDAMAGE, pos, inferno2, -min, -max, 0)

elseif spell == "Bone Rush" then

local area = {gale1, gale2, gale3, gale4, gale3, gale2, gale1}

for i = 0, 6 do
    addEvent(doMoveInArea2, i*400, cid, 227, area[i+1], ROCKDAMAGE, min, max, spell)
end    

elseif spell == "Hammer Arm" then

local ret = {}
ret.id = 0
ret.cd = 9                        
ret.eff = 88
ret.check = 0
ret.first = true
ret.cond = "Paralyze"

local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {92, {x=p.x, y=p.y-1, z=p.z}},
[1] = {94, {x=p.x+2, y=p.y, z=p.z}},   
[2] = {95, {x=p.x+1, y=p.y+2, z=p.z}},
[3] = {93, {x=p.x-1, y=p.y, z=p.z}},  
}

doMoveInArea2(cid, 0, BrickBeak, FIGHTINGDAMAGE, min, max, spell, ret)
doSendMagicEffect(t[a][2], t[a][1])


--///////////////////////   PASSIVAS /////////////////////////--

elseif spell == "Counter Helix" then
-- [nome] = {out = outfit girando, efeitos}
local OutFit = {
["Scyther"] = {out = 496, cima = 128, direita = 129, esquerda = 130, baixo = 131},  --scyther
["Scizor"] = {out = 918, cima = 128, direita = 129, esquerda = 130, baixo = 131},  --Scizor
["Shiny Scyther"] = {out = 849, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Scyther
["Hitmontop"] = {out = 1193, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Hitmontop
["Shiny Hitmontop"] = {out = 1451, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Hitmontop    
["Pineco"] = {out = 1194, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --pineco
["Forretress"] = {out = 1192, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Forretress
["Wobbuffet"] = {out = 924, cima = 128, direita = 129, esquerda = 130, baixo = 131},  --wobb
["Alakazam"] = {out = 569, cima = 128, direita = 129, esquerda = 130, baixo = 131},  --alaka
["Kadabra"] = {out = 570, cima = 128, direita = 129, esquerda = 130, baixo = 131},  --kadabra
["Shiny Abra"] = {out = 1257, cima = 128, direita = 129, esquerda = 130, baixo = 131},  --s abra
["Kangaskhan"] = {out = 549, cima = 251, direita = 253, esquerda = 254, baixo = 252},  --test
}
      
      if getPlayerStorageValue(cid, 32623) == 1 then  --proteçao pra n usar a passiva 2x seguidas...
      return true
      end
      
      
      local nome1 = getSubName(cid, target)   --alterado v1.6.1
      local outfitt = OutFit[nome1]   --alterado v1.6.1        

      local function damage(cid, min, max)
      if isCreature(cid) then
         if isInArray({"Scyther", "Shiny Scyther", "Pineco"}, nome1) then   --alterado v1.6
            damage = BUGDAMAGE  
         elseif isInArray({"Hitmontop", "Shiny Hitmontop", "Kangaskhan"}, nome1) then               
            damage = FIGHTINGDAMAGE                --alterado v1.6.1
         else                                        
            damage = STEELDAMAGE
         end
         doAreaCombatHealth(cid, damage, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE) --alterado v1.6.1
         ---
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe1, 0, 0, outfitt.cima) --cima
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe2, 0, 0, outfitt.baixo) --baixo
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe3, 0, 0, outfitt.direita) --direita
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe4, 0, 0, outfitt.esquerda)  --esquerda
      end
      end
      
      local function sendEff(cid)
      if isCreature(cid) then
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe1, 0, 0, outfitt.cima) --cima
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe2, 0, 0, outfitt.baixo) --baixo
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe3, 0, 0, outfitt.direita) --direita       --alterado v1.6
         doAreaCombatHealth(cid, null, getThingPos(cid), scythe4, 0, 0, outfitt.esquerda)  --esquerda
      end
      end   

      local function doChangeO(cid)
      if not isCreature(cid) then return true end
         setPlayerStorageValue(cid, 32623, 0)      
         if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
            doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
         else
             doRemoveCondition(cid, CONDITION_OUTFIT)
         end
      end
      
      local delay = 200 -- não mexe
      local master = isSummon(cid) and getCreatureMaster(cid) or cid                    --alterado v1.6
      local summons = getCreatureSummons(master)                                          
      
      if (isPlayer(master) and #summons >= 2) or (ehMonstro(master) and #summons >= 1) then
         for j = 1, #summons do
             setPlayerStorageValue(summons[j], 32623, 1)      
             doSetCreatureOutfit(summons[j], {lookType = outfitt.out}, -1)

             for i = 1, 2 do                                                                     --alterado v1.6
                 addEvent(sendEff, delay*i, summons[j])
             end
             addEvent(doChangeO, 2 * 300 + 10, summons[j])
         end
         for i = 1, 2 do
             addEvent(damage, delay*i, (isPlayer(master) and summons[1] or master), min, max)
         end
      else
         setPlayerStorageValue(cid, 32623, 1)    
   setPlayerStorageValue(cid, 98654, 1)        
         doSetCreatureOutfit(cid, {lookType = outfitt.out}, -1)
   
         for i = 1, 2 do                                                                 --alterado v1.6
             addEvent(damage, delay*i, cid, min, max)
         end
         addEvent(doChangeO, 2 * 300 + 10, cid)
      end
      
elseif spell == "Lava-Counter" then

local function sendStickEff(cid, dir)
    if not isCreature(cid) then return true end
       doAreaCombatHealth(cid, FIREDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 5)
    end

    local function doStick(cid)
    if not isCreature(cid) then return true end
    local t = {
          [1] = SOUTHWEST,
          [2] = SOUTH,
          [3] = SOUTHEAST,
          [4] = EAST,
          [5] = NORTHEAST,
          [6] = NORTH,
          [7] = NORTHWEST,
          [8] = WEST,
          [9] = SOUTHWEST,
        }
        for a = 1, 9 do
            addEvent(sendStickEff, a * 140, cid, t[a])
        end
    end

    doStick(cid, false, cid)
    setPlayerStorageValue(cid, 98654, 1)
                 
elseif spell == "Mega Drain" then

   local uid = checkAreaUid(getThingPos(cid), check, 1, 1)
   for _,pid in pairs(uid) do
       if isCreature(cid) and isCreature(pid) and pid ~= cid then
          if isPlayer(pid) and #getCreatureSummons(pid) >= 1 then return false end
        
          local life = getCreatureHealth(pid)

          doAreaCombatHealth(cid, GRASSDAMAGE, getThingPos(pid), 0, -min, -max, 14)

          local newlife = life - getCreatureHealth(pid)

          doSendMagicEffect(getThingPos(cid), 14)
             setPlayerStorageValue(cid, 98654, 1)
          if newlife >= 1 then
             doCreatureAddHealth(cid, newlife)
             doSendAnimatedText(getThingPos(cid), "+"..newlife.."", 32)
          end  
       end
   end
   
elseif spell == "Spores Reaction" then

local random = math.random(1, 3)

   if random == 1 then
      local ret = {}
      ret.id = 0
      ret.cd = math.random(2, 3)
      ret.check = 0                   --alterado v1.6
      ret.first = true
      ret.cond = "Sleep"
    
      doMoveInArea2(cid, 27, confusion, GRASSDAMAGE, 0, 0, "Spores Reaction", ret)
         setPlayerStorageValue(cid, 98654, 1)
   elseif random == 2 then
      local ret = {}
      ret.id = 0
      ret.cd = 6
      ret.eff = 0
      ret.check = 0
      ret.spell = spell
      ret.cond = "Stun"
    
      doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, "Spores Reaction", ret)   
   setPlayerStorageValue(cid, 98654, 1)      
   else
      local ret = {}
      ret.id = 0
      ret.cd = math.random(6, 10)
      ret.check = 0
      local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid)     --alterado v1.6
      ret.damage = math.floor((getPokemonLevel(cid)+lvl * 3)/2)
      ret.cond = "Poison"                              

      doMoveInArea2(cid, 84, confusion, POISONDAMAGE, 0, 0, "Spores Reaction", ret)
         setPlayerStorageValue(cid, 98654, 1)
   end

elseif spell == "Stunning Confusion" then

      if getPlayerStorageValue(cid, 32623) == 1 then  --proteçao pra n usar a spell 2x seguidas...
      return true
      end
      
      local function damage(cid)
      if isCreature(cid) then
         doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPosWithDebug(cid), bombWee3, -min, -max, 133)
      end
      end
          
      setPlayerStorageValue(cid, 32623, 1)        --proteçao
      for i = 1, 7 do
          addEvent(damage, i*500, cid)
      end
      addEvent(setPlayerStorageValue, 3500, cid, 32623, 0)        --proteçao
         setPlayerStorageValue(cid, 98654, 1)
      
elseif spell == "Bone-Spin" then

local function sendStickEff(cid, dir)
    if not isCreature(cid) then return true end
       doAreaCombatHealth(cid, GROUNDDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 227)
    end

    local function doStick(cid)
    if not isCreature(cid) then return true end
    local t = {
          [1] = SOUTHWEST,
          [2] = SOUTH,
          [3] = SOUTHEAST,
          [4] = EAST,
          [5] = NORTHEAST,
          [6] = NORTH,
          [7] = NORTHWEST,
          [8] = WEST,
          [9] = SOUTHWEST,
        }
        for a = 1, 9 do
            addEvent(sendStickEff, a * 140, cid, t[a])
        end
    end

    doStick(cid, false, cid)
        setPlayerStorageValue(cid, 98654, 1)
                                                                            --alterado v1.4
elseif spell == "Amnesia" then

   if getPlayerStorageValue(cid, 253) >= 1 then return true end
   
   doCreatureSay(cid, "????", 20)              
   doSendMagicEffect(getThingPosWithDebug(cid), 132)
   setPlayerStorageValue(cid, 253, 1)
   setPlayerStorageValue(cid, 98654, 1)
   
elseif spell == "Dragon Fury" then

   if getPlayerStorageValue(cid, 32623) == 1 then
   return true
   end

   setPlayerStorageValue(cid, 32623, 1)
   setPlayerStorageValue(cid, 98654, 1)

   if isInArray({"Persian", "Raticate", "Shiny Raticate"}, getSubName(cid, target)) then  --alterado v1.6.1
      doRaiseStatus(cid, 1.5, 0, 0, 10)
   else                                               --alterado v1.5
      doRaiseStatus(cid, 1.5, 1.5, 0, 10)     --ver isso
   end
            
   for t = 1, 7 do                  --alterado v1.5
       addEvent(sendMoveEffect, t*1500, cid, 12)
   end
   addEvent(setPlayerStorageValue, 10500, cid, 32623, 0) --alterado v1.8
   
elseif spell == "Electric Charge" then

   if getPlayerStorageValue(cid, 253) >= 1 then
   return true
   end
   
   setPlayerStorageValue(cid, 253, 1)
   setPlayerStorageValue(cid, 98654, 1)
   doSendMagicEffect(getThingPosWithDebug(cid), 207)
   doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144)
   
elseif spell == "Shock-Counter" then

local function sendStickEff(cid, dir)
    if not isCreature(cid) then return true end
       doAreaCombatHealth(cid, ELECTRICDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 207)
    end

    local function doStick(cid)
    if not isCreature(cid) then return true end
    local t = {
          [1] = SOUTHWEST,
          [2] = SOUTH,
          [3] = SOUTHEAST,
          [4] = EAST,
          [5] = NORTHEAST,
          [6] = NORTH,
          [7] = NORTHWEST,
          [8] = WEST,
          [9] = SOUTHWEST,
        }
        for a = 1, 9 do
            addEvent(sendStickEff, a * 140, cid, t[a])
        end
    end

    doStick(cid, false, cid)
    setPlayerStorageValue(cid, 98654, 1)
                 
elseif spell == "Mirror Coat" then

    if spell == "Magic Coat" then
      eff = 11
    else
      eff = 135
    end

    doSendMagicEffect(getThingPosWithDebug(cid), eff)
    setPlayerStorageValue(cid, 21099, 1)    
setPlayerStorageValue(cid, 98654, 1)    
    
elseif spell == "Zen Mind" then

   function doCure(cid)
   if not isCreature(cid) then return true end
   if isSummon(cid) then
      doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
   end
   doCureStatus(cid, "all")
   end
   
   addEvent(doCure, 1000, cid)
   doSetCreatureOutfit(cid, {lookType = 1001}, 2000)
   setPlayerStorageValue(cid, 98654, 1)
   
elseif spell == "Demon Kicker" then

--[outfit] = outfit chutando,
local hitmonlees = {
["Hitmonlee"] =  652,      --hitmonlee
["Shiny Hitmonlee"] = 878,  --shiny hitmonlee
}
   
   local nome = getCreatureName(cid)  
                                                --alterado v1.6                                        --alterado v1.7
if (not hitmonlees[nome] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Demon Kicker"][nome]) then
                                                         
      if getDistanceBetween(getThingPos(cid), getThingPos(target)) > 1 then
      return true
      end
      if getPlayerStorageValue(cid, 32623) == 1 then  --proteçao pra n usar a passiva 2x seguidas...
      return true
      end
      
      if not isSummon(cid) then       --alterado v1.7
         doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
      end
      
      local function doChangeHitmon(cid)
      if not isCreature(cid) then return true end
         setPlayerStorageValue(cid, 32623, 0)         --proteçao
         if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
            doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
         else
            doRemoveCondition(cid, CONDITION_OUTFIT)
         end
      end            
       
         setPlayerStorageValue(cid, 32623, 1)       --proteçao
         setPlayerStorageValue(cid, 98654, 1)
         
         local look = hitmonlees[nome] or getPlayerStorageValue(cid, 21104)  --alterado v1.6
   
         doCreatureSetLookDir(cid, getCreatureDirectionToTarget(cid, target))
         doSetCreatureOutfit(cid, {lookType = look}, -1)   --alterado v1.6
         doTargetCombatHealth(cid, target, FIGHTINGDAMAGE, -min, -max, 255)
         
         addEvent(doChangeHitmon, 700, cid)           
end

elseif spell == "Blaze Kicker" then

--[outfit] = outfit chutando,
local blazikens = {
["Blaziken"] =  1628,      --Blaziken
["Shiny Blaziken"] = 1629,  --shiny Blaziken
}
   
   local nome = getCreatureName(cid)  
                                                --alterado v1.6                                        --alterado v1.7
if (not blazikens[nome] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Blaze Kicker"][nome]) then
                                                         
      if getDistanceBetween(getThingPos(cid), getThingPos(target)) > 1 then
      return true
      end
      if getPlayerStorageValue(cid, 32623) == 1 then  --proteçao pra n usar a passiva 2x seguidas...
      return true
      end
      
      if not isSummon(cid) then       --alterado v1.7
         doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
      end
      
      local function doChangeHitmon(cid)
      if not isCreature(cid) then return true end
         setPlayerStorageValue(cid, 32623, 0)         --proteçao
         if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
            doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
         else
            doRemoveCondition(cid, CONDITION_OUTFIT)
         end
      end            
       
         setPlayerStorageValue(cid, 32623, 1)       --proteçao
         setPlayerStorageValue(cid, 98654, 1)
         
         local look = blazikens[nome] or getPlayerStorageValue(cid, 21104)  --alterado v1.6
   
         doCreatureSetLookDir(cid, getCreatureDirectionToTarget(cid, target))
         doSetCreatureOutfit(cid, {lookType = look}, -1)   --alterado v1.6
         doTargetCombatHealth(cid, target, FIREDAMAGE, -min, -max, 255)
         
         addEvent(doChangeHitmon, 700, cid)           
end


elseif spell == "Illusion" then

local team = {
["Misdreavus"] = "MisdreavusTeam",
["Shiny Stantler"] = "Shiny StantlerTeam",
["Stantler"] = "StantlerTeam",
}

local function RemoveTeam(cid)
if isCreature(cid) then
  doSendMagicEffect(getThingPosWithDebug(cid), 211)
  doRemoveCreature(cid)
end
end

local function sendEff(cid, master, t)
if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then
   doSendMagicEffect(getThingPosWithDebug(cid), 86, master)
   addEvent(sendEff, 1000, cid, master, t-1)                        --alterado v1.9
end
end

if getPlayerStorageValue(cid, 637500) >= 1 then
return true
end

local master = getCreatureMaster(cid)
local item = getPlayerSlotItem(master, 8)
local life, maxLife = getCreatureHealth(cid), getCreatureMaxHealth(cid)
local name = getItemAttribute(item.uid, "poke")
local pos = getThingPosWithDebug(cid)
local time = 5

doItemSetAttribute(item.uid, "hp", (life/maxLife))

local num = getSubName(cid, target) == "Misdreavus" and 3 or 2
local pk = {}

doTeleportThing(cid, {x=4, y=3, z=10}, true)

if team[name] then
   pk[1] = cid
   for b = 2, num do
       pk[b] = doSummonCreature(team[name], pos)
       doConvinceCreature(master, pk[b])
   end

   for a = 1, num do
      addEvent(doTeleportThing, math.random(0, 5), pk[a], getClosestFreeTile(pk[a], pos), true)
      addEvent(doAdjustWithDelay, 5, master, pk[a], true, true, true)
      doSendMagicEffect(getThingPosWithDebug(pk[a]), 211)
   end
   sendEff(cid, master, time)     --alterado v1.9
   setPlayerStorageValue(master, 637501, 1)
   addEvent(setPlayerStorageValue, time * 1000, master, 637501, -2)
   -----
   setPlayerStorageValue(pk[2], 637500, 1)
   addEvent(RemoveTeam, time * 1000, pk[2])
   -----
   setPlayerStorageValue(pk[3], 637500, 1)
   addEvent(RemoveTeam, time * 1000, pk[3])
   ----
   if getSubName(cid, target) == "Scizor" then  
      setPlayerStorageValue(pk[4], 637500, 1)
      addEvent(RemoveTeam, time * 1000, pk[4])
   end
end


elseif spell == "Demon Puncher" then

   local name = getCreatureName(cid)
                                                                                                             --alterado v1.7
if (not hitmonchans[name] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Demon Puncher"][name]) then
                                                        
       if getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) > 1 then
       return true
       end
       
       if not isSummon(cid) then       --alterado v1.7
         doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
       end                                 
         
         if ehMonstro(cid) or not hitmonchans[name] then
            hands = 0
         else
            hands = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "hands")
         end
         
         if not hitmonchans[name] then
            tabela = hitmonchans[getCreatureName(target)][hands]
         else
            tabela = hitmonchans[name][hands]
         end
          
         doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
         doTargetCombatHealth(cid, target, tabela.type, -min, -max, 255)
         
         local alvo = getThingPosWithDebug(target)
         alvo.x = alvo.x + 1                           ---alterado v1.7
         
         if hands == 4 then
            doSendMagicEffect(alvo, tabela.eff)
         else
            doSendMagicEffect(getThingPosWithDebug(target), tabela.eff)
         end
         
         if hands == 3 then
            local ret = {}
            ret.id = target
            ret.cd = 9                     --alterado v1.6
            ret.eff = 43
            ret.check = getPlayerStorageValue(target, conds["Slow"])
            ret.first = true
            ret.cond = "Slow"
         
            doMoveDano2(cid, target, FIGHTINGDAMAGE, 0, 0, ret, spell)
            setPlayerStorageValue(cid, 98654, 1)
         end  
end


end
return true
end [/spoiler]
[spoiler] move1

local msgs = {"use ", ""}

function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid, 8)
if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")
return true
end
local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
if not p or #p <= 0 then return true end
for a = 1, #p do
if getItemAttribute(p[a], cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")
return true
end
end
end

function onSay(cid, words, param, channel)


if param ~= "" then return true end
if string.len(words) > 3 then return true end

if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return 0
end
--alterado v1.5
local mypoke = getCreatureSummons(cid)[1]

if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end

if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
name = getPlayerStorageValue(mypoke, 1010) --edited
else
name = getCreatureName(mypoke)
end

--local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)

local it = string.sub(words, 2, 3)
local move = movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
cdzin = "cm_move"..it..""
else
cdzin = "move"..it.."" --alterado v1.5
end

if it == "2" then
move = movestable[name].move2
elseif it == "3" then
move = movestable[name].move3
elseif it == "4" then
move = movestable[name].move4
elseif it == "5" then
move = movestable[name].move5
elseif it == "6" then
move = movestable[name].move6
elseif it == "7" then
move = movestable[name].move7
elseif it == "8" then
move = movestable[name].move8
elseif it == "9" then
move = movestable[name].move9
elseif it == "10" then
move = movestable[name].move10
elseif it == "11" then
move = movestable[name].move11
elseif it == "12" then
move = movestable[name].move12
elseif it == "13" then
move = movestable[name].move13
end

if not move then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end

if getPlayerLevel(cid) < move.level then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")
return true
end

if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")
return true
end

if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return true
end

if getPlayerStorageValue(mypoke, 3894) >= 1 then
return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3
end
--alterado v1.6
if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then
doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
return true
end
--alterado v1.7 \/\/\/
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then
local target = getCreatureTarget(cid)
if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then
if isCreature(getMasterTarget(target)) then --alterado v1.6
doSendMagicEffect(getThingPos(target), 211)
doSendAnimatedText(getThingPos(target), "TOO BAD", 215)
doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
doSendMagicEffect(getThingPos(target), 211)
doFaceCreature(target, getThingPos(mypoke))
return true --alterado v1.6
end
end
end


if move.target == 1 then

if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")
return 0
end

if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end

if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")
return 0
end

if not isCreature(getCreatureSummons(cid)[1]) then
return true
end

if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end

if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end

local newid = 0

if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end

doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY)

local summons = getCreatureSummons(cid) --alterado v1.6

addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)

for i = 2, #summons do
if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then
docastspell(summons[i], move.name) --alterado v1.6
end
end

docastspell(mypoke, move.name)
doCreatureAddCondition(cid, playerexhaust)

if useKpdoDlls then
doUpdateCooldowns(cid)
end

return 0
end [/spoiler]

ae man ja cansei de enviar e essa porcaria de site fica caindo e nao manda as scripts nem o spoiler.

deixa pra la se nao der pra me add skype e nem mandar por email aq no site cansei ja de tenta postar e nada vlw ae por tentar ajudar.

 

skype clebermoreno1

se quiser me manda seu email que te mando os arquivos  vlw.

 

 


ae man ja cansei de enviar e essa porcaria de site fica caindo e nao manda as scripts nem o spoiler.

deixa pra la se nao der pra me add skype e nem mandar por email aq no site cansei ja de tenta postar e nada vlw ae por tentar ajudar.

 

skype clebermoreno1

se quiser me manda seu email que te mando os arquivos  vlw.

 

 

Editado por clebao666
Link para o comentário
Compartilhar em outros sites

  • 0

@zipter98 adicionei aki, funcionou perfeitamente... Ótimo trabalho...

 

se conseguiu adicionar manda um tuto adicionando certinho ae pra ve se consigo aq tbm.

 

Link para o comentário
Compartilhar em outros sites

  • 0

soh seguir o tutorial dele.... mas você não conseguiu porque? algum erro no console? você já adicionou spells antes?

Link para o comentário
Compartilhar em outros sites

  • 0

 

se conseguiu adicionar manda um tuto adicionando certinho ae pra ve se consigo aq tbm.

 

Adicionou na pasta spells??

Ops: os 3 estão funfando! mas o unown help, quando sumona o pokémon, da este erro :

 

[23/06/2015 18:30:53] [Error - TalkAction Interface]
[23/06/2015 18:30:53] data/talkactions/scripts/move1.lua:onSay
[23/06/2015 18:30:53] Description:
[23/06/2015 18:30:53] data/lib/pokemon moves.lua:5001: attempt to perform arithmetic on global 'HPperVITsummon' (a nil value)
[23/06/2015 18:30:53] stack traceback:
[23/06/2015 18:30:53] data/lib/pokemon moves.lua:5001: in function 'docastspell'
[23/06/2015 18:30:53] data/talkactions/scripts/move1.lua:245: in function <data/talkactions/scripts/move1.lua:20>
mas sumona o poke msm assim
e tbm quando eu uso as magias unown help e unown rush, aparece o player dizendo o nome m11 e m12, que no caso são os lugares para meu poke usar as 2 magias!
Editado por Zet0N0Murmurouu
Link para o comentário
Compartilhar em outros sites

  • 0

Deve ser a base que você está usando (escrevi estes códigos para PDA, sem level nos pokémons). Entretanto, se ela for a mesma, peço que poste aqui o código da função adjustStatus (data/lib, level system.lua).

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

function adjustStatus(pk, item, health, vite, conditions)
 
if not isCreature(pk) then return true end
 
local bonusoffense = getItemAttribute(item, boffense) or 0
local bonusdefense = getItemAttribute(item, bdefense) or 0
local bonusagility = getItemAttribute(item, bagility) or 0
local bonussattack = getItemAttribute(item, bsattack) or 0
 
if (getItemAttribute(item, "ehditto") == 1) then
setPlayerStorageValue(pk, 1000, getItemAttribute(item, "level"))
setPlayerStorageValue(pk, 1001, getItemAttribute(item, "offense") + bonusoffense * 0.75)
setPlayerStorageValue(pk, 1002, getItemAttribute(item, "defense") + bonusdefense * 0.75)
setPlayerStorageValue(pk, 1003, getItemAttribute(item, "speed") + bonusagility * 0.75)
setPlayerStorageValue(pk, 1005, getItemAttribute(item, "specialattack") + bonussattack * 0.75)
elseif (getItemAttribute(item, "ehshinyditto") == 1) then
setPlayerStorageValue(pk, 1000, getItemAttribute(item, "level"))
setPlayerStorageValue(pk, 1001, getItemAttribute(item, "offense") + bonusoffense * 0.50)
setPlayerStorageValue(pk, 1002, getItemAttribute(item, "defense") + bonusdefense * 0.50)
setPlayerStorageValue(pk, 1003, getItemAttribute(item, "speed") + bonusagility * 0.50)
setPlayerStorageValue(pk, 1005, getItemAttribute(item, "specialattack") + bonussattack * 0.50)
else
setPlayerStorageValue(pk, 1000, getItemAttribute(item, "level"))
setPlayerStorageValue(pk, 1001, getItemAttribute(item, "offense") + bonusoffense)
setPlayerStorageValue(pk, 1002, getItemAttribute(item, "defense") + bonusdefense)
setPlayerStorageValue(pk, 1003, getItemAttribute(item, "speed") + bonusagility)
setPlayerStorageValue(pk, 1005, getItemAttribute(item, "specialattack") + bonussattack)
end
 
local gender = getItemAttribute(item, "gender") and getItemAttribute(item, "gender") or 0
doCreatureSetSkullType(pk, gender)
 
if vite == true then
local pct = getCreatureHealth(pk) / getCreatureMaxHealth(pk)
local vit = getItemAttribute(item, "vitality") - getPlayerStorageValue(pk, 1004)
setCreatureMaxHealth(pk, getCreatureMaxHealth(pk) + ( vit * HPperVIT ))
doCreatureAddHealth(pk, pct * vit * HPperVIT)
end
 
setPlayerStorageValue(pk, 1004, getItemAttribute(item, "vitality"))
 
doRegainSpeed(pk)
 
local nick = getItemAttribute(item, "poke")
 
if string.find(tostring(nick), "Shiny") then
  nick = tostring(nick):match("(Shiny .*)")
    end
 
   if nick:find("Mega") then
        nick = nick:match("Mega (.*)")
        if not pokes[nick] then
            nick = nick:explode(" ")[1]
        end
    end
 
if getItemAttribute(item, "nick") then
nick = getItemAttribute(item, "nick")
end
 
setPlayerStorageValue(pk, 1007, nick)
 
local boostlevel = getItemAttribute(item, "boost") or 0
local boostshow = hideBoost and "]" or " + "..boostlevel.."]"
local lvlstr = ""
 
if showBoostSeparated then
boostshow = hideBoost and "]" or "] [+"..boostlevel.."]"
end
 
if hideSummonsLevel then
if not hideBoost then
nick = nick.." [+"..boostlevel.."]"
end
else
nick = nick.." ["..getItemAttribute(item, "level")..""..boostshow..""
end
 
 
if not getItemAttribute(item, "happy") then
doItemSetAttribute(item, "happy", 120)
end
 
if not getItemAttribute(item, "hunger") then
doItemSetAttribute(item, "hunger", 5)
end
 
local happy = getItemAttribute(item, "happy")
if happy < 0 then
happy = 1
end
setPlayerStorageValue(pk, 1008, happy)
 
local hunger = getItemAttribute(item, "hunger")
setPlayerStorageValue(pk, 1009, hunger)
 
if health == true then
local mh = getCreatureMaxHealth(pk) + HPperVIT * getVitality(pk)
local rd = 1 - (tonumber(getItemAttribute(item, "hp")))
setCreatureMaxHealth(pk, mh)
doCreatureAddHealth(pk, getCreatureMaxHealth(pk))
doCreatureAddHealth(pk, -(getCreatureMaxHealth(pk) * rd))
end
 
if isSummon(pk) and conditions then                        --alterado v2.5 daki pra baixo!!
local burn = getItemAttribute(item, "burn")   
if burn and burn >= 0 then
  local ret = {id = pk, cd = burn, check = false, damage = getItemAttribute(item, "burndmg"), cond = "Burn"}
  addEvent(doCondition2, 3500, ret)
end
 
local poison = getItemAttribute(item, "poison")
if poison and poison >= 0 then
  local ret = {id = pk, cd = poison, check = false, damage = getItemAttribute(item, "poisondmg"), cond = "Poison"}
  addEvent(doCondition2, 1500, ret)
end
 
        local confuse = getItemAttribute(item, "confuse")
if confuse and confuse >= 0 then
  local ret = {id = pk, cd = confuse, check = false, cond = "Confusion"}
  addEvent(doCondition2, 1200, ret)                                                --alterado v2.5
end
 
        local sleep = getItemAttribute(item, "sleep")
if sleep and sleep >= 0 then
  local ret = {id = pk, cd = sleep, check = false, first = true, cond = "Sleep"}
  doCondition2(ret)
end
 
local miss = getItemAttribute(item, "miss")     
if miss and miss >= 0 then      
          local ret = {id = pk, cd = miss, eff = getItemAttribute(item, "missEff"), check = false, spell = getItemAttribute(item, "missSpell"), cond = "Miss"}
          doCondition2(ret)
        end
        
        local fear = getItemAttribute(item, "fear")
        if fear and fear >= 0 then
           local ret = {id = pk, cd = fear, check = false, skill = getItemAttribute(item, "fearSkill"), cond = "Fear"}
           doCondition2(ret)
        end
        
        local silence = getItemAttribute(item, "silence")
        if silence and silence >= 0 then      
           local ret = {id = pk, cd = silence, eff = getItemAttribute(item, "silenceEff"), check = false, cond = "Silence"}
           doCondition2(ret)
        end                                     
        
        local stun = getItemAttribute(item, "stun")
        if stun and stun >= 0 then
           local ret = {id = pk, cd = stun, eff = getItemAttribute(item, "stunEff"), check = false, spell = getItemAttribute(item, "stunSpell"), cond = "Stun"}
           doCondition2(ret)
        end 
                                                       
        local paralyze = getItemAttribute(item, "paralyze")
        if paralyze and paralyze >= 0 then
           local ret = {id = pk, cd = paralyze, eff = getItemAttribute(item, "paralyzeEff"), check = false, first = true, cond = "Paralyze"}
           doCondition2(ret)
        end  
                                                     
        local slow = getItemAttribute(item, "slow")
        if slow and slow >= 0 then
           local ret = {id = pk, cd = slow, eff = getItemAttribute(item, "slowEff"), check = false, first = true, cond = "Slow"}
           doCondition2(ret)
        end                                              
        
        local leech = getItemAttribute(item, "leech")
        if leech and leech >= 0 then
           local ret = {id = pk, cd = leech, attacker = 0, check = false, damage = getItemAttribute(item, "leechdmg"), cond = "Leech"}
           doCondition2(ret)
        end                               
        
        for i = 1, 3 do
            local buff = getItemAttribute(item, "Buff"..i)
            if buff and buff >= 0 then
               local ret = {id = pk, cd = buff, eff = getItemAttribute(item, "Buff"..i.."eff"), check = false, 
               buff = getItemAttribute(item, "Buff"..i.."skill"), first = true, attr = "Buff"..i}
               doCondition2(ret)
            end
        end
               
end
                                                                  --alterado v2.9 
    if getItemAttribute(item, "boost") and getItemAttribute(item, "boost") >= 50 and getItemAttribute(item, "aura") then
       sendAuraEffect(pk, auraSyst[getItemAttribute(item, "aura")])        
    end
    
    if getPlayerStorageValue(getCreatureMaster(pk), 6598754) >= 1 then
        setPlayerStorageValue(pk, 6598754, 1)                               
    elseif getPlayerStorageValue(getCreatureMaster(pk), 6598755) >= 1 then
        setPlayerStorageValue(pk, 6598755, 1)
    end
 
return true
end

 

 

Editado por Zet0N0Murmurouu
Link para o comentário
Compartilhar em outros sites

  • 0

Ah, é com level mesmo. Você se importaria se os Unowns fossem "balanceados" de acordo com o Unown Legion? Porque, se não, vai ser bem chato arrumar essa spell.

PS: Se ajustados como mencionei, o nick deles, aura e status serão os mesmos do Unown Legion.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...