Ir para conteúdo

[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP


Josegvb

Posts Recomendados

20 horas atrás, Josegvb disse:

acho q nao consegueu ne? @Drakopoulos como eu ja disse, é um bug bem critico, provavelmente seja na sources o erro... esse sistema de dano tem q ser refeito, para comprovar se for as sources poderia postar seu executavel pra eu testar

Realmente esse sistema tem q ser refeito, testei o que voce falou e se tiver + de 1 poke buga

Link para o comentário
Compartilhar em outros sites

59 minutos atrás, Drakopoulos disse:

Realmente esse sistema tem q ser refeito, testei o que voce falou e se tiver + de 1 poke buga

 

é bem dificil eu sei q vc esta em outros projeitos e tals mas teria como fazer isso? :( 

eu adoro a dxp mas só por esse bug fico com bontade de parar de usar ele :( tipo nao adianta balançar pokes pq com esse bug sempre quebra inmunidades e bate danos estranhos do msm jeito qndo coloca + de 2 no offense dos bixos :/

Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...

unica coisa q ta fazendo eu querer parar com o DxP é esse bug chato :/ ate agr nemhum programador soube como arrumar, ja perguntei pra mts e tds falam q nas sources paresce normal...

minha ultima esperança seria o @zipter98 me ajudo mt ja, se teria alguma ideia de como arrumar esse bug? :/ 

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Josegvb disse:

unica coisa q ta fazendo eu querer parar com o DxP é esse bug chato :/ ate agr nemhum programador soube como arrumar, ja perguntei pra mts e tds falam q nas sources paresce normal...

minha ultima esperança seria o @zipter98 me ajudo mt ja, se teria alguma ideia de como arrumar esse bug? :/ 

Pelo que testei aqui e até consegui arrumar foi tudo na source mesmo, maaaas.. teria q refazer o statsChange todo.

Link para o comentário
Compartilhar em outros sites

Agora, Drakopoulos disse:

Pelo que testei aqui e até consegui arrumar foi tudo na source mesmo, maaaas.. teria q refazer o statsChange todo.

 

boa mano parabens ^^ e você planeja me ajudar aqui com isso? eu disse pra tds q era pra refazer o sistema nas sources mas tds dizeram q nao q era no lua apenas :/ e esse melee bugando pela verificaçao dos spells e tals :/ sem sentido ter a dxp com esse bug q nao permite balançar os pokes, esse e aquele q nao pode ter mais de 2 no offense pq bate pacas u.u

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

Agora, Josegvb disse:

 

boa mano parabens ^^ e você planeja me ajudar aqui com isso? eu disse pra tds q era pra refazer o sistema nas sources mas tds dizeram q nao q era no lua apenas :/

sem sentido ter a dxp com esse bug q nao permite balançar os pokes, esse e aquele q nao pode ter mais de 2 no offense pq bate pacas u.u

Vou ver se nesse final de semana arrumo um tempo para refazer o script mas n é certeza n pois estou finalizando um projeto meu.

Link para o comentário
Compartilhar em outros sites

Em 12/7/2016 at 16:05, Drakopoulos disse:

Vou ver se nesse final de semana arrumo um tempo para refazer o script mas n é certeza n pois estou finalizando um projeto meu.

 

Obrigado, irei esperar anciosamente

Link para o comentário
Compartilhar em outros sites

Pelo que li, o seu servidor apresenta um problema com o combat, certo? Sem o uso deste argumento no código, o máximo que se pode conseguir num sistema de efetividade são gambiarras mal feitas.

A única spell que está causando problemas é o Earthquake (ou seja, uma spell de dano por tempo)? Seu servidor tem mais spells do tipo?

No caso da passiva do Electabuzz, após o fim do "giro" dela em volta do pokémon-origem, o ataque melee volta a dar dano ou continua sendo considerado um movimento do tipo elétrico?

Lendo o código, percebi que a cada execução do stats change o "elemento" do dano é o mesmo da última spell usada. Então, naturalmente, uma spell do elemento normal como Harden atrapalharia no dano de uma ground por tempo, como o Earthquake. Baseie-se nesta lógica para pensar se existe alguma outra combinação de spells que causaria problemas no cálculo de efetividade.

 

Finalmente, poderia postar o código da spell Earthquake e também onde a storage 21102 é setada? Podemos combater gambiarra com gambiarra.

Me basearei nos códigos originais que você postou, e não nas edições feitas ao longo dos comentários.

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

1 hora atrás, zipter98 disse:

Pelo que li, o seu servidor apresenta um problema com o combat, certo? Sem o uso deste argumento no código, o máximo que se pode conseguir num sistema de efetividade são gambiarras mal feitas.

A única spell que está causando problemas é o Earthquake (ou seja, uma spell de dano por tempo)? Seu servidor tem mais spells do tipo?

No caso da passiva do Electabuzz, após o fim do "giro" dela em volta do pokémon-origem, o ataque melee volta a dar dano ou continua sendo considerado um movimento do tipo elétrico?

Lendo o código, percebi que a cada execução do stats change o "elemento" do dano é o mesmo da última spell usada. Então, naturalmente, uma spell do elemento normal como Harden atrapalharia no dano de uma ground por tempo, como o Earthquake. Baseie-se nesta lógica para pensar se existe alguma outra combinação de spells que causaria problemas no cálculo de efetividade.

 

Finalmente, poderia postar o código da spell Earthquake e também onde a storage 11022 é setada? Podemos combater gambiarra com gambiarra.

Me basearei nos códigos originais que você postou, e não nas edições feitas ao longo dos comentários.

 

Apos a volta do buzz o melee continua sendo um movimento considerado electrico esta assim o melee, tb acontece q tipo voce spamma electric storm, sabe que ela demora uns 2 segundos em bater o dano, se no segundo 1 voce usa quick attack, a storm no segundo 2 ira fazer dano no pokemon. por alguma raçao qualquer ataque GROUND, bate em zard sendo q ele é fire/fly

 

enquanto a storage nao achei ela em nemhum local do server nem das sources, poderia estar no xammp? na criaçao de char

 

earthquake

Spoiler

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, cid)

end

 

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

Primeiramente, consideremos que o problema está em todas as spells que não sejam executadas "de uma vez" - o que inclui spells de dano por tempo, storms que demoram para cair, passivas como do Electabuzz (que suponho normalizar o auto ataque apenas após o uso de outro movimento, de outro elemento), etc.

Foquemo-nos, por enquanto, em corrigir o Earthquake. Você tem certeza que postou o código correto? Pois parece que o XTibia está cortando alguns caracteres de comentários. Se você puder postar este código por meio da ferramente de code (<>, logo acima), seria melhor para nossas conclusões.

 

Quanto à storage, parece que alucinei aquele número. lol

Mas enfim, a correta não está no script do Earthquake. Porém, imagino que tenha alguma relação com esta linha:

setPlayerStorageValue(cid, 3644587, 1)

O Notepad++ tem uma ferramenta de busca que analisa todos os arquivos dentro de uma pasta (CTRL + F -> Localizar em arquivos). Recomendo que a use para procurar por alguma menção ao número 21102 dentro da pasta data.

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

7 minutos atrás, zipter98 disse:

Primeiramente, consideremos que o problema está em todas as spells que não sejam executadas "de uma vez" - o que inclui spells de dano por tempo, storms que demoram para cair, passivas como do Electabuzz (que suponho normalizar o auto ataque apenas após o uso de outro movimento, de outro elemento), etc.

Foquemo-nos, por enquanto, em corrigir o Earthquake. Você tem certeza que postou o código correto? Parece que o XTibia está cortando alguns caracteres de comentários. Se você puder postar este código por meio da ferramente de code (<>, logo acima), seria melhor para nossas conclusões.

 

Quanto à storage, parece que alucinei aquele número. lol

Mas enfim, a correta não está no script do Earthquake. Imagino que ela tenha algo a ver com esta linha:

setPlayerStorageValue(cid, 3644587, 1)

O Notepad++ tem uma ferramenta de busca que analisa todos os arquivos dentro de uma pasta (CTRL + F -> Localizar em arquivos). Recomendo que a use para procurar por alguma menção ao número 21102 dentro da pasta data.

O problema zipter é que ele registra o nome da spell na storage sempre quando utiliza e como o Earthquake é em addEvent ele acaba n funcionando.

Ela é setada em pokemon moves

setPlayerStorageValue(cid, 21102, spell)
Spoiler
const_distance_delay = 56function doForceDanoSpeel(cid, moveName)local name = doCorrectString(getCreatureName(cid))local masterLevel = (isSummon(cid) and getPlayerLevel(getCreatureMaster(cid)) or getPokemonLevelByName(name))	    min = (getMoveForce(name, moveName) / 2) + (masterLevel * 1.5) --alterado v1.6	    max = getMoveForce(name, moveName) + (masterLevel * 1.5) --min + (isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid))		return math.random(min, max)endfunction doForceDano(cid)local name = doCorrectString(getCreatureName(cid))local masterLevel = (isSummon(cid) and getPlayerLevel(getCreatureMaster(cid)) or getPokemonLevelByName(name))	    min = (getMoveForce(name, moveName) / 2) + (masterLevel * 1.5) --alterado v1.6	    max = getMoveForce(name, moveName) + (masterLevel * 1.5) --min + (isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid))		return math.random(min, max)endfunction isShredTEAM(cid)	if getPlayerStorageValue(cid, 637505) == "eh" then	   return true 	end	return falseend--//////////////////////////////////////////////////////////////////////////////////////////////////////////--local function getSubName(cid, target)if not isCreature(cid) then return "" endif 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)endendlocal function getThingName(cid)if not isCreature(cid) then return "" end   --alterado v1.6return getCreatureName(cid)endfunction getMasterTarget(cid)if isCreature(cid) and getPlayerStorageValue(cid, 21101) ~= -1 then   return getPlayerStorageValue(cid, 21101)     --alterado v1.6end    if isSummon(cid) then	    return getCreatureTarget(getCreatureMaster(cid))	else	    return getCreatureTarget(cid)    endend--////////////////////////////////////////////////////////////////////////////////////////////////////////--function docastspell(cid, spell, reflectName)if isWildTrainerNPC(cid) then return true endlocal target = 0local getDistDelay = 0if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return false end  --alterado v1.6if isSleeping(cid) and getPlayerStorageValue(cid, 21100) <= -1 then return true end  --alterado v1.6if isCreature(getMasterTarget(cid)) then	target = getMasterTarget(cid)	getDistDelay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delayendif isMonster(cid) and not isSummon(cid) then	if getCreatureCondition(cid, CONDITION_EXHAUST) then	return true	end	doCreatureAddCondition(cid, wildexhaust)endlocal mydir = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)local name = getCreatureName(cid)	  if reflectName and reflectName ~= "" then		 name = reflectName	  end	  name = doCorrectString((name))	  	  if isMega(cid) then	     name = getPlayerStorageValue(cid, storages.isMega)	  elseif name:find("Smeargle") then		 name = getSmeargleAttackNameFromSkactch(cid, spell) -- retorna o nome do poke q tem essa magia      endif spell == "ataqueBasico1" then -- ataque basico    --doSendMagicEffect(getThingPos(cid), 3)    doDanoWithProtectWithDelay(cid, target, psyDmg, -100, -200, 0)	return trueelseif spell == "ataqueBasico2" then   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)   doDanoInTargetWithDelay(cid, target, psyDmg, -100, -200, 0)      --alterado v1.7   return trueendlocal pokesMetro = {"Smeargle", "Clefable", "Clefairy", "Mew", "Cleffa", "Togetic", "Togepi"}local spells = {"Shadow Storm", "Electric Storm", "Magma Storm", "Blizzard", "Meteor Mash", "Leaf Storm", "Hydropump", "Falling Rocks"}if isInArray(spells, spell) and isInArray(pokesMetro, doCorrectString(getCreatureName(cid))) then   name = getMetronomeName(spell)   end  local table = getTableMove(name, spell) --alterado v1.6	if table == nil then return true endlocal min = 0local max = 0--- FEAR / ROAR / SILENCE ---if (isWithFear(cid) or isSilence(cid)) and getPlayerStorageValue(cid, 21100) <= -1 thenreturn true                                      --alterado v1.6!!end----------------------------min= 1000 + 	if table ~= "" and table ~= nil then   --alterado v1.6		local masterLevel = (isSummon(cid) and getPlayerLevel(getCreatureMaster(cid)) or getPokemonLevelByName(doCorrectString(getCreatureName(cid))))		local mutiplay = 0.1				if masterLevel > 20 and masterLevel < 30 then -- 21 ao 29			mutiplay = 1.2		elseif masterLevel > 29 and masterLevel < 61 then -- 30 ao 60			mutiplay = 1.3		elseif  masterLevel > 60 and masterLevel < 86 then -- 61 ao 85			mutiplay = 1.4		elseif masterLevel > 85 and masterLevel < 121 then -- 86 ao 120			mutiplay = 1.5		elseif masterLevel > 120 and masterLevel < 181 then -- 121 ao 180			mutiplay = 1.6		elseif  masterLevel > 180 and masterLevel < 221 then -- 181 ao 220			mutiplay = 1.7		elseif masterLevel > 220 and masterLevel < 351 then -- 221 ao 350			mutiplay = 1.8		elseif masterLevel > 351 then -- 350++			mutiplay = 1.9		end				if string.find(getCreatureName(cid):lower(), "shiny") then			mutiplay = 2		end			    min = getSpecialAttack(cid) * table.f * mutiplay   --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"}, 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	local namePoke = doCorrectString(getCreatureName(cid))	local remover = removeSpellInXML(namePoke, spell)	if remover then print("Magia: " .. spell .. " removida do XML: " .. namePoke .. ".xml") 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                              end------------------Miss System--------------------------local cd = getPlayerStorageValue(cid, conds["Miss"])local cd2 = getPlayerStorageValue(cid, conds["Confusion"])      --alterado v1.5local 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", "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 not string.find(spell, "Mega") then			   if math.random(1, 100) > 30 then                                                                               --alterado v1.6			 doSendAnimatedText(getThingPosWithDebug(cid), "MISS", 215)			 return false		   end		end	endend---------------GHOST DAMAGE-----------------------ghostDmg = GHOSTDAMAGEpsyDmg = PSYCHICDAMAGE--------------------REFLECT----------------------setPlayerStorageValue(cid, 21100, -1)                --alterado v1.6if not isInArray({"Psybeam", "Sand Attack", "Flamethrower", "Heal Bell"}, spell) then  --alterado v1.8   setPlayerStorageValue(cid, 21101, -1)endsetPlayerStorageValue(cid, 21102, spell)---------------------------------------------------if isWildTrainerPokemon(cid) then   local master = getPlayerStorageValue(cid, storages.isWildTrainerID)   if isCreature(master) then      doCreatureSay(master, ""..getPokeName(cid)..", use " .. spell .. "!", TALKTYPE_ORANGE_1)   endendif 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, storages.reflect, 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 21local 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.7endaddEvent(throw, 0, cid, target)addEvent(throw, 100, cid, target) --alterado v1.7elseif spell == "Fire Fist" then local function throw(cid, target)if not isCreature(cid) or not isCreature(target) then return false end    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 92)	doDanoInTargetWithDelay(cid, target, GRASSDAMAGE, min, max, 355)  --alterado v1.7	pos = getThingPos(target)	pos.x = pos.x +1	doSendMagicEffect(pos, 357)endlocal function voltar(cid, target)if not isCreature(cid) then return true end	doRemoveCondition(cid, CONDITION_OUTFIT)	doRegainSpeed(cid)	doRegainSpeed(target)	doPantinOutfit(cid, 0, getPlayerStorageValue(cid, storages.isMega))enddoSetCreatureOutfit(cid, {lookType = 1875}, -1) doChangeSpeed(cid, -getCreatureSpeed(cid))doChangeSpeed(target, -getCreatureSpeed(target))addEvent(throw, 200, cid, target)addEvent(throw, 800, cid, target) --alterado v1.7addEvent(throw, 1200, cid, target) --alterado v1.7addEvent(voltar, 1501, cid, target)		elseif spell == "Vine Whip" thenlocal 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 getPokemonLevelD(doCorrectString(getCreatureName(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    endelseif 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)	enddoChangeSpeed(cid, -getCreatureSpeed(cid))setPlayerStorageValue(cid, 3644587, 1)          --alterado v1.6  n sei pq mas tava dando debug o.OdoSendMagicEffect(getThingPosWithDebug(cid), 132) addEvent(useSolarBeam, 650, cid)elseif spell == "Sleep Powder" thenlocal ret = {}ret.id = 0ret.cd = math.random(6, 9)ret.check = 0ret.first = true                        --alterado v1.6ret.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 name = doCorrectString(getCreatureName(cid))local ret = {}ret.id = 0ret.cd = math.random(6, 15)              --alterado v1.6ret.check = 0local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevelD(name)local heldPercent = 1	if isSummon(cid) then	   local heldx = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "xHeldItem")			if heldx then			local heldName, heldTier = string.explode(heldx, "|")[1], string.explode(heldx, "|")[2]				  if heldName == "X-Poison" then -- dar mais experiencia					 heldPercent = heldPoisonBurn[tonumber(heldTier)]				  end			end	endlocal dano =  math.floor((getPokemonLevelD(name)+lvl * 3)/2)ret.damage = dano + (heldPercent * dano / 100)ret.cond = "Poison" ret.im = targetret.attacker = cid                             doMoveInArea2(cid, 84, confusion, NORMALDAMAGE, 0, 0, spell, ret)	elseif spell == "Bullet Seed" then               --cid, effDist, effDano, areaEff, areaDano, element, min, maxdoMoveInAreaMulti(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, getThingPos(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), (isMega(cid) and getMegaID(cid) == "X") and 57 or 3)		doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, (isMega(cid) and getMegaID(cid) == "X") and 302 or 15)  --alterado v1.7				doBurnPoke(cid, target)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 = (isMega(cid) and getMegaID(cid) == "X") and 292 or 106	elseif a == 1 then		flamepos.x = flamepos.x+3		flamepos.y = flamepos.y+1		effect = (isMega(cid) and getMegaID(cid) == "X") and 295 or 109	elseif a == 2 then		flamepos.x = flamepos.x+1		flamepos.y = flamepos.y+3		effect = (isMega(cid) and getMegaID(cid) == "X") and 293 or 107	elseif a == 3 then		flamepos.x = flamepos.x-1		flamepos.y = flamepos.y+1		effect = (isMega(cid) and getMegaID(cid) == "X") and 294 or 108	end        doMoveInArea2(cid, 0, flamek, FIREDAMAGE, min, max, spell)		doSendMagicEffect(flamepos, effect)       elseif spell == "Fireball" then	doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), (isMega(cid) and getMegaID(cid) == "X") and 57 or 3)	addEvent(doDanoWithProtect, 200, cid, FIREDAMAGE, getThingPosWithDebug(target), waba, min, max, (isMega(cid) and getMegaID(cid) == "X") and 302 or 5)	elseif spell == "Fire Fang" then	doSendMagicEffect(getThingPosWithDebug(target), 138)     doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, (isMega(cid) and getMegaID(cid) == "X") and 302 or 15) --alterado v1.7	elseif spell == "Fire Blast" thenlocal 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, (isMega(cid) and getMegaID(cid) == "X") and 301 or 35)endendfor a = 0, 4 dolocal 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}}}  if (isMega(cid) and getMegaID(cid) == "X") thent = {[0] = {303, {x=p.x, y=p.y-(a+1), z=p.z}},           --alterado v1.4[1] = {304, {x=p.x+(a+1), y=p.y, z=p.z}},[2] = {305, {x=p.x, y=p.y+(a+1), z=p.z}},[3] = {306, {x=p.x-(a+1), y=p.y, z=p.z}}} end 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, (isMega(cid) and getMegaID(cid) == "X") and 57 or 3, (isMega(cid) and getMegaID(cid) == "X") and 302 or 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" thenlocal effectpos = getThingPosWithDebug(cid)local effect = 255local 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" thenlocal eff = (isMega(cid) and getMegaID(cid) == "X") and {302, 301, 302, 301} or {6, 35, 6, 35}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)endelseif 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.7elseif spell == "Water Gun" thenlocal 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}},}local area = reto4if (isMega(cid)) then   t = {	[0] = {299, {x=p.x+1, y=p.y-2, z=p.z}},	[1] = {296, {x=p.x+5, y=p.y+1, z=p.z}},      --alterado v1.8	[2] = {298, {x=p.x+1, y=p.y+5, z=p.z}},	[3] = {297, {x=p.x-1, y=p.y, z=p.z}},	[3] = {297, {x=p.x-1, y=p.y+1, z=p.z}},   }   area = triplo6end   doMoveInArea2(cid, 0, area, 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 == "Dragon 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)	doChangeSpeed(cid, -x)	addEvent(rebackSpd, 400, cid, x)	setPlayerStorageValue(cid, 446, 1)	pos = getThingPos(target)	pos.x = pos.x +1	doSendMagicEffect(pos, 365)	doAreaCombatHealth(cid, DRAGONDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 0)	elseif spell == "Hydro Cannon" thenlocal 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)endendfor a = 0, 4 dolocal 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" thenlocal ret = {}ret.id = 0ret.cd = 9                        --alterado v1.6ret.eff = 118ret.check = 0ret.first = trueret.cond = "Paralyze"       doMoveInArea2(cid, 118, reto5, NORMALDAMAGE, min, max, spell, ret)              elseif spell == "Hydropump" thenlocal 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" thenlocal 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.7elseif 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" thenarea = {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" thenarea = {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" thenlocal 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.4elseif spell == "Sand Attack" thenlocal a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)local t = {[0] = 120,[1] = 121,[2] = 122,[3] = 119,}local ret = {}ret.id = 0ret.cd = 9ret.eff = 34ret.check = 0ret.spell = spellret.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.7elseif 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.7elseif 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" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 48ret.spell = spellret.cond = "Stun"doMoveInArea2(cid, 48, db1, ELECTRICDAMAGE, min, max, spell, ret) --alterado v1.8elseif spell == "Thunder" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 48ret.spell = spellret.cond = "Stun"doMoveInArea2(cid, 48, thunderr, ELECTRICDAMAGE, min, max, spell, ret)elseif spell == "Web Shot" then                                                  local ret = {}ret.id = targetret.cd = 9ret.eff = 26ret.check = 0ret.spell = spellret.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.7elseif spell == "Comet Punch" then	doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)    doSendMagicEffect(getThingPosWithDebug(target), 112)    doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 118) --alterado v1.7	elseif spell == "Electric Storm" then             local master = isSummon(cid) and getCreatureMaster(cid) or cidlocal function doFall(cid)for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, ELECTRICDAMAGE, 41, 48)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, 41)endaddEvent(doFall, 450, cid)local ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 48ret.spell = spellret.cond = "Stun"addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ELECTRICDAMAGE, min, max, spell, ret)elseif spell == "Frenzy Plant" then             local master = isSummon(cid) and getCreatureMaster(cid) or cidlocal function doFall(cid)for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, ELECTRICDAMAGE, 255, 259)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, 255)endaddEvent(doFall, 450, cid)local ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 220ret.spell = spellret.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 cidlocal function doFall(cid)for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, BUGDAMAGE, 23)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, 23)endaddEvent(doFall, 450, cid)local ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 26ret.spell = spellret.cond = "Silence"addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, BUGDAMAGE, min, max, spell, ret)elseif spell == "Spider Web" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 26ret.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" thenif isCreature(target) then                                    --alterado v1.8local contudion = spell == "Mud Shot" and "Miss" or "Stun"                                                   local ret = {}ret.id = targetret.cd = 9ret.eff = 34ret.check = getPlayerStorageValue(target, conds[contudion])ret.spell = spellret.cond = contudion	doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)	addEvent(doMoveDano2, 100, cid, target, GROUNDDAMAGE, -min, -max, ret, spell)endelseif spell == "Metal Burst" thenif isCreature(target) then                                    --alterado v1.8local contudion = "Stun"                                                   local ret = {}ret.id = targetret.cd = 2ret.eff = 349ret.check = getPlayerStorageValue(target, conds[contudion])ret.spell = spellret.cond = contudion	doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 9)	addEvent(doMoveDano2, 255, cid, target, GROUNDDAMAGE, -min, -max, ret, spell)end elseif spell == "Rollout" thenlocal 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 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		local name = doCorrectString(getCreatureName(cid))		  	if RollOuts[name] then		doSetCreatureOutfit(cid, RollOuts[name], -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[name] then          doSetCreatureOutfit(cid, RollOuts[name], -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" thenlocal 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)     endendfor a = 0, 5 dolocal 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" thenlocal 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" thenlocal eff = getSubName(cid, target) == "Shiny Onix" and 175 or 118  --alterado v1.6.1  doMoveInArea2(cid, eff, confusion, GROUNDDAMAGE, min, max, spell) times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}local time = getPlayerStorageValue(cid, 3644587)if time == 17 then   setPlayerStorageValue(cid, 3644587, -1)   return trueendsetPlayerStorageValue(cid, 3644587, time + 1)addEvent(docastspell, 500, cid, "Earthquake")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" thenlocal ret = {}ret.id = 0ret.cd = math.random(6, 10)ret.check = 0ret.first = trueret.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" thenlocal spells = {"Shadow Storm", "Electric 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" thenlocal 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" thenlocal 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" thenlocal spells = {"Poison Gas", "Earthquake", "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" thenlocal 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" thenlocal 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" thenlocal 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" thenlocal 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" thenlocal 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" thenlocal 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" thenlocal spells = {"Focus Blast", "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) 	   elseif spell == "Bulk Up" then            doSendMagicEffect(getThingPosWithDebug(cid), 91)       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" thenlocal function getCreatureHealthSecurity(cid)	if not isCreature(cid) then return 0 end	return getCreatureHealth(cid) or 0end	local life = getCreatureHealthSecurity(target)	doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)    	local newlife = life - getCreatureHealthSecurity(target)	doSendMagicEffect(getThingPosWithDebug(cid), 14)	if newlife >= 1 then		if isCreature(cid) then	       doCreatureAddHealth(cid, newlife)		end       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" thenlocal 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)endelseif spell == "Revenge" thenlocal function doRevenge(cid)if not isCreature(cid) then return false endif isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false endif isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true endlocal rev = getThingPosWithDebug(cid)rev.x = rev.x+1rev.y = rev.y+1doSendMagicEffect(rev, 99)	doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)endtimes = {0, 500, 1000, 1500, 2300}setPlayerStorageValue(cid, 3644587, 1)addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)for i = 1, #times do                   --alterado v1.4addEvent(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" thenlocal master = isSummon(cid) and getCreatureMaster(cid) or cid------------local ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 34ret.cond = "Silence"---local function doFall(cid)for rocks = 1, 42 do --62    addEvent(fall, rocks*35, cid, master, GROUNDDAMAGE, 22, 158)endend---local function doRain(cid)if isSummon(cid) then    doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")end                                                      --cura statusdoCureStatus(cid, "all")---setPlayerStorageValue(cid, 253, 1)  --focusdoSendMagicEffect(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" thenlocal 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" thendoMoveInArea2(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" thenlocal p = getThingPosWithDebug(cid)local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)function sendAtk(cid, area, area2, eff)  --alterado v1.6if 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   endendfor a = 0, 4 dolocal 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.6end          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" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 39ret.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 == "Bulk Up" or spell == "Outrage" then   local ret = {}   ret.id = cid   ret.cd = 10   ret.eff = spell == "Outrage" and 358 or 356   ret.check = 0   ret.buff = spell   ret.first = true      doCondition2(ret)            elseif spell == "Hypnosis" thenlocal ret = {}ret.id = targetret.cd = math.random(6, 9)ret.check = getPlayerStorageValue(target, conds["Sleep"])ret.first = true                                                --alterado v1.6ret.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 = targetret.cd = 9ret.eff = 43ret.check = getPlayerStorageValue(target, conds["Slow"])ret.first = trueret.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" thenlocal 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 = 0ret.cd = 9ret.eff = 43ret.check = 0ret.first = trueret.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" thendamage = skill == "Dark Pulse" and DARKDAMAGE or psyDmglocal 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.7end   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" or spell == "Bullet Punch" 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 = spell == "Bullet Punch" and 373 or 218		yvar = 2	elseif b == NORTH then		effect = spell == "Bullet Punch" and 372 or 217	elseif b == WEST then		effect = spell == "Bullet Punch" and 371 or 216	elseif b == EAST then		effect = spell == "Bullet Punch" and 370 or 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" thenlocal effD = getSubName(cid, target) == "Shiny Onix" and 0 or 11local 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" thenatk = {["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" thenlocal effD = getSubName(cid, target) == "Shiny Onix" and 0 or 11local eff = getSubName(cid, target) == "Shiny Onix" and 176 or 44  --alterado v1.6.1local 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)endendfor up = 1, 10 do                                                                addEvent(upEffect, up*75, cid, effD)endaddEvent(doFall, 450, cid)addEvent(doDanoWithProtect, 1400, cid, ROCKDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)elseif spell == "Selfdestruct" then                                		doDanoWithProtect(cid, ROCKDAMAGE, getThingPosWithDebug(cid), selfArea2, -min, -max, 5)		if isSummon(cid) then		local master = getCreatureMaster(cid)			checkGiveUp(master)			if isInDuel(master) then				doRemoveCountPokemon(master)			end		end		doKillWildPoke(cid, cid)        		elseif spell == "Crusher Stomp" then       local pL = getThingPosWithDebug(cid)pL.x = pL.x+5pL.y = pL.y+1 -----------------local pO = getThingPosWithDebug(cid)pO.x = pO.x-3pO.y = pO.y+1 ------------------local pN = getThingPosWithDebug(cid)pN.x = pN.x+1pN.y = pN.y+5 -----------------local pS = getThingPosWithDebug(cid)pS.x = pS.x+1pS.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 = 0ret.cd = 9ret.check = 0ret.eff = 34ret.spell = spellret.cond = "Stun"for i = 1, 4 do    doSendMagicEffect(po[i], 127)    doAreaCombatHealth(cid, GROUNDDAMAGE, po2[i], crusher, -min, -max, 255)enddoMoveInArea2(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" thenlocal 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.7end   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.7elseif 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 == "Cannon Ball" thenlocal 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.7elseif 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 = 0ret.cd = 9ret.eff = 43ret.check = 0ret.first = trueret.cond = "Slow"	  doMoveInArea2(cid, 17, db1, ICEDAMAGE, min, max, spell, ret)  elseif spell == "Aurora Beam" thenlocal 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 = 0ret.cd = 9ret.eff = 43ret.check = 0ret.first = trueret.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.5elseif 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" thenlocal damage = spell == "Megahorn" and BUGDAMAGE or ROCKDAMAGElocal eff = spell == "Megahorn" and 8 or 44 local effD = spell == "Rock Blast" and 11 or 25                                    --cid, effDist, effDano, areaEff, areaDano, element, min, maxdoMoveInAreaMulti(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" thenlocal 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.7endsendBubbles(cid)addEvent(sendBubbles, 250, cid) elseif  spell == "Swift" thenlocal 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.7endaddEvent(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" thenlocal p = getThingPosWithDebug(cid)local dirr = getCreatureLookDir(cid)if dirr == 0 or dirr == 2 then   item = 11439else   item = 11440endlocal 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}},}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          local walls = doCreateItem(item, 1, t[i])		  doDecayItem(walls)       end    endend   elseif spell == "Bullet Punch" then			elseif spell == "Compass Slash" then	pos = getThingPos(cid)		pos.x = pos.x +2		pos.y = pos.y +2    doSendMagicEffect(pos, 374)	doDanoWithProtect(cid, ROCKDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)   elseif spell == "Shredder Team" or spell == "Double Team" then     --alterado v1.8 \/local team = {["Scyther"] = 3,["Shiny Scyther"] = 3,["Scizor"] = 4,["Xatu"] = 2,["Shiny Xatu"] = 3,["Yanma"] = 2,}local function RemoveTeam(cid)	if isCreature(cid) then	  doSendMagicEffect(getThingPosWithDebug(cid), 211)	  doRemoveCreature(cid)	endendlocal 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.9endendif getPlayerStorageValue(cid, 637500) >= 1 thenreturn trueendlocal master = getCreatureMaster(cid)local item = getPlayerSlotItem(master, 8)local life, maxLife = getCreatureHealth(cid), getCreatureMaxHealth(cid)local name = doCorrectString(getCreatureName(cid))local pos = getThingPosWithDebug(cid)local time = 21doItemSetAttribute(item.uid, "hp", (life/maxLife))local num = team[name]local pk = {}local function doCreatureAddHealthWithSecurity(cid, heal)if not isCreature(cid) then return true enddoCreatureAddHealth(cid, heal)endlocal function setStorage(cid)if not isCreature(cid) then return true endsetPlayerStorageValue(cid, 63012, 1)addEvent(setStorage, 1000, cid)end--doTeleportThing(cid, {x=4, y=3, z=10}, false) local nick = retireShinyName(getItemAttribute(item.uid, "poke"))if team[name] then   pk[1] = cid   for b = 2, num do       local pokeSourceCode = doCreateMonsterNick(master, name, nick, getThingPos(master), true)	   	   if pokeSourceCode == "Nao" then		   doSendMsg(master, "Não há espaço para seu pokemon.")		   return true 		end	 	          pk[b] = getCreatureSummons(master)[b]	   setPlayerStorageValue(pk[b], 510, name)	   setStorage(pk[b])	   adjustStatus(pk[b], getPlayerSlotItem(master, 8).uid, true, true, true, true)	   doCreatureAddHealthWithSecurity(pk[b], -(maxLife-life))	   setPlayerStorageValue(pk[b], 637505, "eh")   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)	  setPlayerStorageValue(pk[a], 637500, 1)	  doCreatureSetSkullType(pk[a], getCreatureSkullType(pk[1]))	  if a ~= 1 then        addEvent(RemoveTeam, time * 1000, pk[a])	  end   end    sendEff(cid, master, time)     --alterado v1.9   setPlayerStorageValue(master, 637501, 1)   setPlayerStorageValue(pk[1], 637500, -1)   addEvent(setPlayerStorageValue, time * 1000, master, 637501, -2)   endelseif spell == "Team Slice" or spell == "Team Claw" thenlocal master = getCreatureMaster(cid)if #getCreatureSummons(master) < 2 or not isCreature(target) then return true endlocal summons = getCreatureSummons(master)local posis = {[1] = pos1, [2] = pos2, [3] = pos3, [4] = pos4}if getSubName(cid, target) == "Scyther" then  --alterado v1.6.1 eff = 39elseif getSubName(cid, target) == "Shiny Scyther" then  --alterado v1.6.1 eff = 39else eff = 42  --alterado v1.5end   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" thenlocal master = isSummon(cid) and getCreatureMaster(cid) or cidlocal ret = {}ret.id = 0ret.cd = 9ret.eff = 43ret.check = 0ret.first = trueret.cond = "Slow"local function doFall(cid)for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, ICEDAMAGE, 28, 52)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, 28)end                                         --alterado v1.4addEvent(doFall, 450, cid)addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ICEDAMAGE, min, max, spell, ret)elseif spell == "Meteor Mash" then	local pos = getThingPos(cid)		  pos.x = pos.x + 1		  pos.y = pos.y + 1doSendMagicEffect(pos, 351)doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(cid), meteorMash1, -min, -max, 350)doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(cid), meteorMash2, -min, -max, 352)elseif spell == "Great Love" thenlocal master = getCreatureMaster(cid) or 0local ret = {}ret.id = 0ret.cd = 9ret.eff = 147ret.check = 0ret.spell = spellret.cond = "Stun"    for rocks = 1, 62 do    addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 147)endaddEvent(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" thendoDanoWithProtect(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 ==  "Flash Cannon" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)local p = getThingPosWithDebug(cid)local t = {[0] = {354, {x=p.x+1, y=p.y-1, z=p.z}},[1] = {353, {x=p.x+6, y=p.y+1, z=p.z}},   [2] = {354, {x=p.x+1, y=p.y+6, z=p.z}},[3] = {353, {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 ==  "Dragon mist" or spell == "Mega Wing" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)local p = getThingPosWithDebug(cid)local t = {[0] = {364, {x=p.x+1, y=p.y-1, z=p.z}, 0, -5},[1] = {361, {x=p.x+5, y=p.y+1, z=p.z}, 5, 0},   [2] = {363, {x=p.x+1, y=p.y+5, z=p.z}, 0, 5},[3] = {362, {x=p.x-1, y=p.y+1, z=p.z}, -5, 0},  }if spell == "Mega Wing" thent = {[0] = {369, {x=p.x+1, y=p.y-1, z=p.z}, 0, -5},[1] = {367, {x=p.x+5, y=p.y+1, z=p.z}, 5, 0},   [2] = {366, {x=p.x+1, y=p.y+5, z=p.z}, 0, 5},[3] = {368, {x=p.x-1, y=p.y+1, z=p.z}, -5, 0},  }endlocal function doTeleportMe(cid, pos)	if not isCreature(cid) then return true end	if canWalkOnPos(pos, false, true, true, true, true) then 	   doTeleportThing(cid, pos)	end	doAppear(cid)		if getPlayerStorageValue(cid, storages.isMega) == "Mega Ampharos" then	    doPantinOutfit(cid, 0, getPlayerStorageValue(cid, storages.isMega))	else		doSetCreatureOutfit(cid, {lookType = megasConf[getPlayerStorageValue(cid, storages.isMega)].out}, -1)		checkOutfitMega(cid, getPlayerStorageValue(cid, storages.isMega))		endenddoMoveInArea2(cid, 0, triplo6, STEELDAMAGE, min, max, spell)doSendMagicEffect(t[a][2], t[a][1])local pos = getThingPos(cid)	  doSendMagicEffect(pos, 307)	  doDisapear(cid)	  local x, y = t[a][3], t[a][4]	  pos.x = pos.x + x	  pos.y = pos.y + y	      addEvent(doTeleportMe, 300, cid, pos)	    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, maxdoMoveInAreaMulti(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" thenlocal 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" thenlocal ret = {}ret.id = 0ret.cd = 9ret.eff = 34ret.check = 0ret.spell = spellret.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" thenlocal 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" thenlocal 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" thendoMoveInArea2(cid, 6, blaze, FIREDAMAGE, min, max, spell) addEvent(doMoveInArea2, 200, cid, 6, kick, FIREDAMAGE, min, max, spell) elseif spell == "Cross Chop" thendoMoveInArea2(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" thenlocal 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)endendfor a = 0, 4 dolocal 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" thendoMoveInAreaMulti(cid, 28, 42, bullet, bulletDano, DRAGONDAMAGE, min, max)elseif spell == "Multi-Kick" thendoMoveInAreaMulti(cid, 39, 113, multi, multiDano, FIGHTINGDAMAGE, min, max)elseif spell == "Sky Uppercut" thenlocal function sendEffect(cid)if not isCreature(cid) or not isCreature(target) then return true endlocal pos = getThingPos(target)local lado = getCreatureLookDir(cid)local effes = {    [0] = {effe1 = 261, effe2 = 265},	[1] = {effe1 = 263, effe2 = 266},	[2] = {effe1 = 262, effe2 = 264},	[3] = {effe1 = 260, effe2 = 267}	}	   if lado == 0 then		    local pos2 = pos				  pos2.y = pos2.y +1		    doSendMagicEffect(pos2, effes[lado].effe1)			pos.y = pos.y -2			pos.x = pos.x +1	   elseif lado == 1 then	        doSendMagicEffect(pos, effes[lado].effe1)			pos.y = pos.y +2			pos.x = pos.x +2	   elseif lado == 2 then		    local pos2 = pos				  pos2.x = pos2.x +1		    doSendMagicEffect(pos2, effes[lado].effe1)			pos.y = pos.y +2			pos.x = pos.x +1	   elseif lado == 3 then		    local pos2 = pos				  pos2.x = pos2.x +1		    doSendMagicEffect(pos2, effes[lado].effe1)			pos.y = pos.y +2			pos.x = pos.x -2	   end	addEvent(doSendMagicEffect, 100, pos, effes[lado].effe2)addEvent(doDanoWithProtectWithDelay, 50, cid, target, SACREDDAMAGE, min, max, 255, sacred)    --alterado v1.6endsendEffect(cid)elseif spell == "Hi Jump Kick" thendoMoveInAreaMulti(cid, 39, 113, multi, multiDano, FIGHTINGDAMAGE, min, max)elseif spell == "Multi-Punch" thendoMoveInAreaMulti(cid, 39, 112, multi, multiDano, FIGHTINGDAMAGE, min, max) elseif spell == "Squisky Licking" then                                                       local ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 0ret.spell = spellret.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)endelseif spell == "Lick" thenlocal ret = {}ret.id = targetret.cd = 9ret.check = getPlayerStorageValue(target, conds["Stun"])ret.eff = 0ret.spell = spellret.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" thenlocal 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.4elseif 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 cidlocal ret = {}ret.id = 0ret.cd = 9ret.eff = 34ret.check = 0ret.spell = spellret.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)endendfor a = 0, 4 dolocal 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" thenlocal master = isSummon(cid) and getCreatureMaster(cid) or cidlocal ret = {}ret.id = 0ret.cd = 9ret.eff = 34ret.check = 0ret.spell = spellret.cond = "Miss"local function doFall(cid)for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, POISONDAMAGE, 6, 116)endendfor 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" thenlocal ret = {}ret.id = 0ret.cd = 9                        ret.eff = 88ret.check = 0ret.first = trueret.cond = "Paralyze"ret.id = 0ret.cd = 9                        ret.eff = 88ret.check = 0ret.first = trueret.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" thenlocal master = isSummon(cid) and getCreatureMaster(cid) or cidlocal function doFall(cid)for rocks = 1, 42 do   --62    addEvent(fall, rocks*35, cid, master, ghostDmg, 18, 140)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, 18)endaddEvent(doFall, 450, cid)addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, ghostDmg, min, max, spell)elseif spell == "Invisible" thendoDisapear(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)endaddEvent(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" thenlocal function removeSpell(cid)  if not isCreature(cid) then return true end  setPlayerStorageValue(cid, 999457, -1) enddoSendMagicEffect(getThingPosWithDebug(cid), 47)setPlayerStorageValue(cid, 999457, 1) addEvent(removeSpell, 1500, cid)elseif spell == "Elemental Hands" thenif getCreatureOutfit(cid).lookType == 1301 thenprint("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 trueend        --prote\E7ao 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 not hands then		   doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", 1)		end				if isInArray({"Ditto", "Shiny Ditto"}, name) then			name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "copyName")		end		       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" thendoDanoWithProtect(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" thenlocal roardirections = {            [NORTH] = {SOUTH},[sOUTH] = {NORTH},[WEST] = {EAST},[EAST] = {WEST}}local function divineBack(cid)if not isCreature(cid) then return true endlocal 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    endlocal function doDivine(cid, min, max, spell, rounds, area)if not isCreature(cid) then return true endlocal ret = {}ret.id = 0ret.check = 0ret.cd = roundsret.cond = "Confusion"       for i = 1, 9 do    addEvent(doMoveInArea2, i*500, cid, 137, area[i], psyDmg, min, max, spell, ret)endend              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" thendoMoveInArea2(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" thenlocal 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" thendoSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 20)doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, -min, -max, 242) --alterado v1.7elseif spell == "Draco Meteor" thenlocal effD = 5local eff = 248local master = isSummon(cid) and getCreatureMaster(cid) or cidlocal function doFall(cid)for rocks = 5, 42 do    addEvent(fall, rocks*35, cid, master, DRAGONDAMAGE, effD, eff)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, effD)endaddEvent(doFall, 450, cid)addEvent(doDanoWithProtect, 1400, cid, DRAGONDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)elseif spell == "Dragon Pulse" thenlocal 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)endendfor a = 0, 3 dolocal 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])endelseif spell == "Psy Ball" then   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)   doDanoInTargetWithDelay(cid, target, psyDmg, min, max, 250)  --alterado v1.7elseif spell == "SmokeScreen" thenlocal ret = {}ret.id = 0ret.cd = 9ret.eff = 34ret.check = 0ret.spell = spellret.cond = "Miss"local function smoke(cid)if not isCreature(cid) then return true endif isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false endif isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end   doMoveInArea2(cid, 34, confusion, NORMALDAMAGE, 0, 0, spell, ret)endsetPlayerStorageValue(cid, 3644587, 1)addEvent(setPlayerStorageValue, 1000, cid, 3644587, -1) for i = 0, 2 do    addEvent(smoke, i*500, cid)                               endelseif 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.7elseif spell == "Assurance" thenlocal 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)endendfor a = 0, 3 dolocal 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])endelseif spell == "Scary Face" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 0ret.spell = spellret.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" thenlocal 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" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 39ret.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")enddoCureStatus(cid, "all")setPlayerStorageValue(cid, 253, 1)  --focusdoMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)elseif spell == "Taunt" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 136ret.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")enddoCureStatus(cid, "all")setPlayerStorageValue(cid, 253, 1)  --focusdoMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)elseif isInArray({"Pursuit", "ExtremeSpeed", "U-Turn", "Shell Attack"}, spell) thenlocal 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.1local 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.7addEvent(doSendDistanceShoot, 800, p, pos, eff)addEvent(doSendMagicEffect, 850, pos, 211)addEvent(doRegainSpeed, 1000, cid)addEvent(doAppear, 1000, cid)elseif spell == "Egg Rain" thenlocal effD = 12local eff = 5local 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)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, effD)endaddEvent(doFall, 450, cid)addEvent(doDanoWithProtect, 1400, cid, NORMALDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)elseif spell == "Stampade" thenlocal master = getCreatureMaster(cid) or 0local ret = {}ret.id = 0ret.cd = 9ret.eff = 0ret.check = 0ret.spell = spellret.cond = "Stun"    for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 187)endaddEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret) elseif spell == "Stampage" thenlocal master = getCreatureMaster(cid) or 0local ret = {}ret.id = 0ret.cd = 9ret.eff = 0ret.check = 0ret.spell = spellret.cond = "Stun"    for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 194)endaddEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)elseif spell == "Barrier" thenif not isCreature(getCreatureTarget(cid)) thenlocal function sendAtk(cid)if not isCreature(cid) then return true endsetPlayerStorageValue(cid, 9658783, -1) setPlayerStorageValue(cid, 734276, -1) endsetPlayerStorageValue(cid, 734276, 1) setPlayerStorageValue(cid, 9658783, 1)pos = getThingPosWithDebug(cid)local function doSendEff(cid)if not isCreature(cid) then return true enddoSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 172)endfor i = 0, 7 do addEvent(doSendEff, i*1000, cid)endaddEvent(sendAtk, 8000, cid)  stopNow(cid, 8 * 800) elselocal ret = {}ret.id = targetret.cd = 10ret.check = getPlayerStorageValue(target, conds["Sleep"])ret.eff = 0ret.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 enddoSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 172)endfor i = 0, 7 do addEvent(doSendEff, i*1000, cid)endstopNow(target, 8 * 800)endelseif spell == "Air Cutter" thenlocal 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)endendfor a = 0, 5 dolocal 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])endelseif spell == "Venom Gale" thenlocal 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" thendoMoveInArea2(cid, 146, Crunch1, DARKDAMAGE, min, max, spell)addEvent(doMoveInArea2, 300, cid, 146, Crunch2, DARKDAMAGE, min, max, spell)elseif spell == "Ice Fang" thendoTargetCombatHealth(cid, target, ICEDAMAGE, 0, 0, 146)addEvent(doDanoWithProtect, 250, cid, ICEDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 17)elseif spell == "Psyshock" thenlocal 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.4endendfor a = 0, 4 dolocal 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])endelseif spell == "Hurricane" thenlocal 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)	enddoSetCreatureOutfit(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.4endelseif spell == "Aromateraphy" or spell == "Emergency Call" theneff = spell == "Aromateraphy" and 14 or 13doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), bombWee3, 0, 0, eff)if isSummon(cid) then    doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")enddoCureStatus(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    endendelseif 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" thensendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 3)  --alterado v1.7elseif spell == "Night Daze" thenlocal pos = getThingPosWithDebug(cid)local eff = spell == "Night Daze" and 222 or 113local dmg = spell == "Night Daze" and DARKDAMAGE or FIGHTINGDAMAGElocal 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" thenlocal pos = getThingPosWithDebug(cid)local eff = spell == "Night Daze" and 222 or 113local dmg = spell == "Night Daze" and DARKDAMAGE or FIGHTINGDAMAGElocal 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" thendoSendMagicEffect(getThingPosWithDebug(cid), 1)if isSummon(cid) then    doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")enddoCureStatus(cid, "all") elseif spell == "Air Slash" thenlocal 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])enddoDanoWithProtect(cid, FLYINGDAMAGE, getThingPosWithDebug(cid), airSlash, -min, -max, 0)    for i = 1, 4 do    addEvent(doSendMagicEffect, 400, t[i][1][2], t[i][1][1])endaddEvent(doDanoWithProtect, 400, cid, FLYINGDAMAGE, getThingPosWithDebug(cid), bombWee2, -min, -max, 0)elseif spell == "Feather Dance" thenlocal 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.7end   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 == "Tackle" then   doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 111)elseif spell == "Giga Drain" thenlocal life = getCreatureHealth(target) or 0	doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 258)    	local newlife = life - (getCreatureHealth(target) or 0)	doSendMagicEffect(getThingPosWithDebug(cid), 14)	if newlife >= 1 then	doCreatureAddHealth(cid, newlife)	doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32)	end  	elseif spell == "Leech Life" thenlocal 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" thenlocal 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)endendfor a = 0, 3 dolocal 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" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 34ret.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" thenlocal ret = {}ret.id = targetret.cd = math.random(6, 9)ret.check = getPlayerStorageValue(target, conds["Sleep"])ret.first = trueret.cond = "Sleep"    doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 11)    addEvent(doMoveDano2, 1500, cid, target, NORMALDAMAGE, 0, 0, ret, spell)elseif spell == "Tongue Hook" thensendDistanceShootWithProtect(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" thenlocal 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)endlocal ret = {}ret.id = targetret.cd = 10ret.check = getPlayerStorageValue(target, conds["Silence"])ret.eff = 185ret.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.7elseif spell == "Present" thenlocal function sendHeal(cid)if isCreature(cid) and isCreature(target) then    doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), crusher, min, max, 5)   doSendAnimatedText(getThingPosWithDebug(target), "HEALTH!", 65)endend    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" thenlocal ret = {}ret.id = targetret.cd = 10ret.check = getPlayerStorageValue(target, conds["Silence"])ret.eff = 104ret.cond = "Silence"doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)elseif spell == "Rock n'Roll" thenlocal pos = getThingPosWithDebug(cid)local areas = {rock1, rock2, rock3, rock4, rock5, rock4, rock3, rock2, rock1}local ret = {}ret.id = 0ret.cd = 9ret.eff = 1ret.check = 0ret.spell = spellret.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)endelseif spell == "Power Wave" then                                             local pos = getThingPosWithDebug(cid)local areas = {rock1, rock2, rock3, rock4, rock5}local ret = {}ret.id = 0ret.cd = 9ret.eff = 103ret.check = 0ret.first = trueret.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)endendenddoSetCreatureOutfit(cid, {lookType = 1001}, -1)setPlayerStorageValue(cid, 9658783, 1)addEvent(sendAtk, 2000, cid)  elseif spell == "Heal Bell" thenif isSummon(cid) then    doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")enddoCureStatus(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)       endelseif spell == "Ground Crusher" thenlocal 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)   endenddoSetCreatureOutfit(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)endfor 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)endfor 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)endfor 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)endfor 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)endelseif spell == "Last Resort" thenlocal 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)endelseif spell == "Psy Impact" thenlocal master = getCreatureMaster(cid) or 0local ret = {}ret.id = 0ret.cd = 9ret.eff = 0ret.check = 0ret.spell = spellret.cond = "Miss"    for rocks = 1, 42 do    addEvent(fall, rocks*35, cid, master, psyDmg, -1, 98)endaddEvent(doMoveInArea2, 500, cid, 0, BigArea2, psyDmg, min, max, spell, ret) elseif spell == "Two Face Shock" thenlocal 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" thenlocal eff = {16, 221, 223, 243}for rocks = 1, 32 do    addEvent(fall, rocks*22, cid, master, FLYINGDAMAGE, -1, eff[math.random(1, 4)])endaddEvent(doMoveInArea2, 500, cid, 0, BigArea2, FLYINGDAMAGE, min, max, spell) elseif spell == "Echoed Voice" thenlocal 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)endendfor a = 0, 5 dolocal 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 == "Flame Wheel" or spell == "Flare Blitz" then  --alterado v1.8local 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}, ["Flame Wheel"] = {-1, 6, FIREDAMAGE},     --alterado v1.9["Flare Blitz"] = {3, 257, 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.6endend                                                               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.6endendlocal function doTornado(cid)if isCreature(cid) thenfor 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)   endendendendif spell == "Electro Field" then   addEvent(doMoveInArea2, 1000, cid, 0, electro, ELECTRICDAMAGE, 0, 0, spell, ret)endif spell == "Waterfall" then   addEvent(doMoveInArea2, 1000, cid, 0, electro, WATERDAMAGE, 0, 0, spell, ret)endif spell == "Flame Wheel" then   --alterado v1.8   doTornado(cid)else    for b = 0, 2 do        addEvent(doTornado, b*1500, cid)    endendelseif spell == "Seed Bomb" then                  --alterado v1.6local master = isSummon(cid) and getCreatureMaster(cid) or cidlocal function doFall(cid)for rocks = 1, 42 do   --62    addEvent(fall, rocks*35, cid, master, SEED_BOMBDAMAGE, 1, 54)endendfor up = 1, 10 do    addEvent(upEffect, up*75, cid, 1)endaddEvent(doFall, 450, cid)addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, SEED_BOMBDAMAGE, min, max, spell)elseif spell == "Reverse Earthshock" thenlocal p = getThingPosWithDebug(cid)p.x = p.x+1p.y = p.y+1sendEffWithProtect(cid, p, 151)   --send efflocal 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)endaddEvent(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" thendoMoveInArea2(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 == "Stick Throw" thenlocal area = {Throw01, Throw02, Throw03, Throw04, Throw03, Throw02, Throw01}local ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 0ret.spell = spellret.cond = "Stun"stopNow(cid, 2000)doMoveInArea2(cid, 212, reto5, STEELDAMAGE, min, max, spell, ret)     	   elseif spell == "Gyro Ball" thenlocal ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 0ret.spell = spellret.cond = "Stun"stopNow(cid, 2000)doMoveInArea2(cid, 156, reto5, STEELDAMAGE, min, max, spell, ret) elseif spell == "Rock Tomb" thenlocal ret = {}ret.id = targetret.cd = 9ret.eff = 0ret.check = getPlayerStorageValue(target, conds["Slow"])ret.first = trueret.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" thenlocal ret = {}ret.id = 0ret.cd = 9ret.eff = 34ret.check = 0ret.spell = spellret.cond = "Miss"doMoveInAreaMulti(cid, 22, 158, bullet, bulletDano, GROUNDDAMAGE, min, max, ret)elseif spell == "Magnet Bomb" thenlocal ret = {}ret.id = 0ret.cd = 9ret.eff = 48ret.check = 0ret.spell = spellret.cond = "Miss"doMoveInAreaMulti(cid, 22, 171, bullet, bulletDano, ELECTRICDAMAGE, min, max, ret)elseif spell == "Rain Dance" thenlocal master = isSummon(cid) and getCreatureMaster(cid) or cid------------local ret = {}ret.id = 0ret.cd = 9ret.check = 0ret.eff = 1ret.cond = "Silence"---local function doFall(cid)for rocks = 1, 42 do --62    addEvent(fall, rocks*35, cid, master, WATERDAMAGE, 52, 1)endend---local function doRain(cid)if isSummon(cid) then    doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")end                                                      --cura statusdoCureStatus(cid, "all")---setPlayerStorageValue(cid, 253, 1)  --focusdoSendMagicEffect(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" thenlocal 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    endendaddEvent(doAreaCombatHealth, 400, cid, DARKDAMAGE, p, scyther5, -min, -max, 165)elseif spell == "Heavy Slam" thenlocal 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    endendaddEvent(doAreaCombatHealth, 400, cid, STEELDAMAGE, p, confusion, -min, -max, 165)elseif spell == "Wild Charge" thenlocal ret = {}                 ret.id = 0ret.cd = 9ret.eff = 48ret.check = 0ret.spell = spellret.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)endelseif spell == "Focus Blast" thenlocal ret = {}                 ret.id = 0ret.cd = 9ret.eff = 136ret.check = 0ret.spell = spellret.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)endelseif spell == "Jump Kick" then   --ver essadoMoveInAreaMulti(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" thendoSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)doDanoWithProtectWithDelay(cid, target, BUGDAMAGE, min, max, 78, SilverWing)elseif spell == "Bug Buzz" then local ret = {}ret.id = targetret.cd = 9ret.eff = 34ret.check = 0ret.spell = spellret.cond = "Stun"  doMoveInArea2(cid, 86, db1, BUGDAMAGE, min, max, spell, ret)addEvent(doMoveInArea2, 250, cid, 86, db1, BUGDAMAGE, 0, 0, spell)elseif spell == "Whirlpool" thenlocal function setSto(cid)if isCreature(cid) then   setPlayerStorageValue(cid, 3644587, -1)endendlocal function doDano(cid)if isSleeping(cid) then return true end      doDanoWithProtect(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, min, max, 89)endsetPlayerStorageValue(cid, 3644587, 1)for r = 0, 10 do      addEvent(doDano, 600 * r, cid)endaddEvent(setSto, 600*10, cid)elseif spell == "Groundshock" thenlocal function setSto(cid)	if isCreature(cid) then	   setPlayerStorageValue(cid, 3644587, -1)	endendlocal function doDano(cid)if isSleeping(cid) then return true end      doDanoWithProtect(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, min, max, 118)endsetPlayerStorageValue(cid, 3644587, 1)for r = 0, 1 do      addEvent(doDano, 600 * r, cid)endaddEvent(setSto, 600*10, cid)elseif spell == "Iron Head" thendoSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)doDanoInTargetWithDelay(cid, target, STEELDAMAGE, -min, -max, 77) elseif spell == "Brick Break" thenlocal ret = {}ret.id = 0ret.cd = 9                        ret.eff = 88ret.check = 0ret.first = trueret.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" thenlocal 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" thenlocal 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" thenlocal ret = {}ret.id = 0ret.cd = 9                        ret.eff = 88ret.check = 0ret.first = trueret.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 isMega(cid) then return true end	        if getPlayerStorageValue(cid, 32623) == 1 then  --prote\E7ao pra n usar a passiva 2x seguidas...	    setPlayerStorageValue(cid, 32623, 0)        return true      end	              local nome1 = doCorrectString(getCreatureName(cid))   --alterado v1.6.1	  if not OutFit[nome1] then return true end      local outfitt = OutFit[nome1]   --alterado v1.6.1              local function doDamage(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\E3o 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])			 for i = 1, 2 do				 addEvent(doDamage, delay*i,  summons[j], min, max)			 end         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(doDamage, delay*i, cid, min, max)         end         addEvent(doChangeO, 2 * 300 + 10, cid)       end      elseif spell == "Lava-Counter" thenlocal 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" thenlocal function getCreatureHealthSecurity(cid)	if not isCreature(cid) then return 0 end	return getCreatureHealth(cid) or 0end   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 = getCreatureHealthSecurity(pid)	      doAreaCombatHealth(cid, GRASSDAMAGE, getThingPos(pid), 0, -min, -max, 14)	      local newlife = life - getCreatureHealthSecurity(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" thenlocal 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)   endelseif spell == "Stunning Confusion" then      if getPlayerStorageValue(cid, 32623) == 1 then  --prote\E7ao 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\E7ao      for i = 1, 7 do          addEvent(damage, i*500, cid)      end      addEvent(setPlayerStorageValue, 3500, cid, 32623, 0)        --prote\E7ao	     setPlayerStorageValue(cid, 98654, 1)      elseif spell == "Bone-Spin" thenlocal 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.4elseif 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" thenlocal 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, storages.reflect, 5)   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 == "Detect" thenlocal function retireStatus(cid)	if not isCreature(cid) then return true end	setPlayerStorageValue(cid, 9658783, -1)endlocal function doRemoveEffect(cid)	if not isCreature(cid) then return true end	doRegainSpeed(cid)	setPlayerStorageValue(cid, 9658783, 1)  -- nao velar dano	addEvent(retireStatus, 5000, cid)end   doChangeSpeed(cid, -getCreatureSpeed(cid))   addEvent(doRemoveEffect, 1000, cid)   pos = getThingPos(cid)   pos.x = pos.x + 2   pos.y = pos.y +2   doSendMagicEffect(pos, 375)   elseif spell == "Sturdy" then		   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.7if (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\E7ao 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\E7ao         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\E7ao		 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)   		 endelseif spell == "Illusion" thenlocal team = {["Misdreavus"] = "MisdreavusTeam",["Shiny Stantler"] = "Shiny StantlerTeam",["Stantler"] = "StantlerTeam",}local function RemoveTeam(cid)if isCreature(cid) then  doSendMagicEffect(getThingPosWithDebug(cid), 211)  doRemoveCreature(cid)endendlocal 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.9endendif getPlayerStorageValue(cid, 637500) >= 1 thenreturn trueendlocal 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 = 5doItemSetAttribute(item.uid, "hp", (life/maxLife))local num = getSubName(cid, target) == "Misdreavus" and 3 or 2local 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])   endendelseif spell == "Demon Puncher" then   local name = getCreatureName(cid)                                                                                                             --alterado v1.7if (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  endelseif string.find(spell:lower(), "mega -") then		doTransformMega(cid)	endreturn true endfunction doBurnPoke(cid, target)local name = doCorrectString(getCreatureName(cid))local ret = {}		ret.id = target		ret.cd = isMega(cid) and math.random(12, 20) or math.random(6, 15) 		ret.eff = (isMega(cid) and getMegaID(cid) == "X") and 302 or 15		ret.color = (isMega(cid) and getMegaID(cid) == "X") and 28 or COLOR_BURN		ret.check = 0		local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevelD(name)		local heldPercent = 1			if isSummon(cid) then			   local heldx = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "xHeldItem")					if heldx then					local heldName, heldTier = string.explode(heldx, "|")[1], string.explode(heldx, "|")[2]						  if heldName == "X-Hellfire" then -- dar mais experiencia							 heldPercent = heldPoisonBurn[tonumber(heldTier)]						  end					end			end		local dano =  math.floor((getPokemonLevelD(name)+lvl * 3)/2)		ret.damage = dano + (heldPercent * dano / 100)		ret.cond = "Burn"  		ret.im = target		ret.attacker = cid      		doCondition2(ret)endfunction isMega(cid) 	if getPlayerStorageValue(cid, storages.isMega) ~= -1 then		return true	end	return falseendfunction doTransformMega(cid)    local name = doCorrectString(getCreatureName(cid))	local wildMult = 1.5	local megaID = ""	if isSummon(cid) then	    local master = getCreatureMaster(cid)		if getItemAttribute(getPlayerSlotItem(master, 8).uid, "megaID") and getItemAttribute(getPlayerSlotItem(master, 8).uid, "megaID") ~= "" then		   megaID = getItemAttribute(getPlayerSlotItem(master, 8).uid, "megaID")		end	else 	   megaID = getPlayerStorageValue(cid, storages.isMegaID)	end	local megaName = "Mega " .. name .. (megaID ~= "" and " " .. megaID or "")	if megasConf[megaName] then		setPlayerStorageValue(cid, storages.isMega, megaName)						doRegainSpeed(cid)	     --alterado!		local pos = getThingPos(cid)			  pos.x = pos.x + 1			  pos.y = pos.y +1		doSendMagicEffect(pos, 287)				if isSummon(cid) then		   local master = getCreatureMaster(cid)		   doUpdateMoves(master)		   wildMult = 2		   setPlayerStorageValue(cid, storages.isMegaID, megaID)		end		local mOffense = getPlayerStorageValue (cid, 1001)		local mDefense = getPlayerStorageValue (cid, 1002)		local mAgility = getPlayerStorageValue (cid, 1003)		local mSAttack = getPlayerStorageValue (cid, 1005)		setPlayerStorageValue(cid, 1001, mOffense * wildMult)		setPlayerStorageValue(cid, 1002, mDefense * wildMult)		setPlayerStorageValue(cid, 1003, mAgility)           		setPlayerStorageValue(cid, 1005, mSAttack * wildMult)				if wildMult == 1.5 then			local life = megasConf[megaName].wildVity * math.random(10000, 13500)			local lifeNow = getCreatureMaxHealth(cid) - getCreatureHealth(cid)				  setCreatureMaxHealth(cid, life) -- perfeita formula, os pokemons "ruins" s\F3 precisam de ajustes no pokemonStatus, tabela vitality.				  doCreatureAddHealth(cid, getCreatureMaxHealth(cid))				  doCreatureAddHealth(cid, -lifeNow)		elseif wildMult == 2 then  --Life ao tranformar Summon Mega 			local life = megasConf[megaName].wildVity * math.random(10000, 13500)			local lifeNow = getCreatureMaxHealth(cid) - getCreatureHealth(cid)				  setCreatureMaxHealth(cid, life) -- perfeita formula, os pokemons "ruins" só precisam de ajustes no pokemonStatus, tabela vitality.				  doCreatureAddHealth(cid, getCreatureMaxHealth(cid))				  doCreatureAddHealth(cid, -lifeNow)				  --doSendLifePokeToOTC(cid)		end		if isInArray({"Charizard", "Blaziken", "Ampharos"}, name) then		   doPantinOutfit(cid, 0, megaName)		else		   doSetCreatureOutfit(cid, {lookType = megasConf[megaName].out}, -1)		   checkOutfitMega(cid, megaName)		end	endendfunction checkChenceToMega(cid)	local name, chance = doCorrectString(getCreatureName(cid)), math.random(0.1, 100.9)	local megaID = ""		  if name == "Charizard" then			 megaID = math.random(1, 100) < 51 and "Y" or "X"		  end	local megaName = "Mega " .. name .. (megaID ~= "" and " " .. megaID or "")		if megasConf[megaName] and not isMega(cid) then		   if megasConf[megaName].wildChance >= chance then			      setPlayerStorageValue(cid, storages.isMegaID, megaID)		      doTransformMega(cid)			   end		endendfunction getMegaID(cid)	return getPlayerStorageValue(cid, storages.isMegaID) ~= -1 and getPlayerStorageValue(cid, storages.isMegaID) or ""endfunction checkOutfitMega(cid, megaName)	if not isCreature(cid) or not isMega(cid) then return true end	local name = doCorrectString(getCreatureName(cid))	if not megasConf[megaName] then return true end	if getCreatureOutfit(cid).lookType ~= megasConf[megaName].out then	   doSetCreatureOutfit(cid, {lookType = megasConf[megaName].out}, -1)	end	addEvent(checkOutfitMega, 50, cid)endfunction doPantinOutfit(cid, times, megaName)	if not isCreature(cid) or not isMega(cid) then return true end    if getCreatureOutfit(cid).lookType == 1875 or getCreatureOutfit(cid).lookType == 2 then return true end	local name = doCorrectString(getCreatureName(cid))	if not megasConf[megaName] then return true end	local outfitIndex = 1	if times <= 500 then		outfitIndex = 1	elseif times > 500 and times <= 1000 then 	   outfitIndex = 2	elseif times > 1000 and times <= 1500 then 	   outfitIndex = 3	end	if type(out) == "number" then return true end	doSetCreatureOutfit(cid, {lookType = megasConf[megaName].out[outfitIndex]}, -1)	times = times + 50	if times > 1500 then	   times = 0	end	addEvent(doPantinOutfit, 50, cid, times, megaName)endfunction doRolloutReflected(cid, name)local 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 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[name] then		doSetCreatureOutfit(cid, RollOuts[name], -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[name] then          doSetCreatureOutfit(cid, RollOuts[name], -1)         end    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)end

 

 

Link para o comentário
Compartilhar em outros sites

pokemon moves.lua

--------------------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)

 

statsChange.lua

 

setPlayerStorageValue(attacker, 21102, -1) -- reseta a spellName do pokemon atacante

 

esta na pasta creaturescript em statsChange.lua os seus problemas estão  tudo ali

 

ate porque ela analisa se getEffectvineCombat retornar 0, ela cai no if que  retorna false e encerra o script, toda vez que seu eartquake for ta um dano(17 vezes me parece) vai entrar na getEffectvineCombat  e se ela retornar 0 vai encerrar o script aonde no momento do dano qualquer outro não ira funcionar,testa ai  se no intervalo de dano pra dano vc acertar outro ataque ira pegar kkkkk e uma logica foda essa que fizeram. 

 

 if(combat == 128 or combat == 1) and getPlayerStorageValue(attacker, 21102) == -1 then -- ataque basico
    doSendMagicEffect(getThingPos(cid), 3)
    value = getEffectvineCombat(cid, attacker, value)
  if value == 0 then
     return false
  else
     value = value * getOffense(attacker) -- buff ataque system
     local name = doCorrectString(getCreatureName(attacker))
     if pokes[name] and pokes[name].level <= 5 and value ~= 0 then
     value = -math.random(pokes[name].offense, pokes[name].offense+5)
     end
  end
 else -- magia
    value = getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- checagem de efetividades de magia
 
     if value == 0 then
     return false
  else
     value = value * (1 + getSpecialAttack(attacker) / 100)
  end

 

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

O dano, como sabemos, é influenciado diretamente pelo valor dessa storage. É praticamente impossível, até onde sei, que "dois danos" ocorram exatamente ao mesmo tempo. Por mais semelhante que seja o momento de execução, um stats change vai acontecer antes do outro.

A storage é setada apenas no momento da conjuração, o que, como já dito, acaba desconsiderando spells cujo efeito se relacione com o tempo futuro, pois seu valor pode acabar sendo substituído por de outras spells durante sua execução.

 

Gostaria de testar o seguinte: a cada "tick" do Earthquake (ou seja, a cada iteração do looping), a storage tem seu valor setado para Earthquake novamente.

Um tick, pelo que notei, equivale a uma execução da função local doQuake. Então, abaixo de:

if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

colocaria-se:

if tostring(getPlayerStorageValue(cid, 21102)) ~= spell then    setPlayerStorageValue(cid, 21102, spell)end

 

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

e por fim se não estou enganado essa storage 3644587 serve apenas como auxilia para o fear e sleep?

 

if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end

Editado por nociam
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...