Ir para conteúdo

[Encerrado] [Pokemon] Dúvidas? - Pda


lucashgas

Posts Recomendados

@Slicer

 

[21/09/2012 17:22:50] [Error - Action Interface]

[21/09/2012 17:22:50] data/actions/scripts/evolution.lua:onUse

[21/09/2012 17:22:50] Description:

[21/09/2012 17:22:50] data/actions/scripts/evolution.lua:522: attempt to index field '?' (a nil value)

[21/09/2012 17:22:50] stack traceback:

[21/09/2012 17:22:50] data/actions/scripts/evolution.lua:522: in function <data/actions/scripts/evolution.lua:40>

Esse erro ai que nao evolui o totodile com nem uma stone quando usa a water stone no totodile ele dar esse erro

Tente esse:

 

local special = specialevo
local types = {
[leaf] = {"Bulbasaur", "Ivysaur", "Oddish", "Gloom", "Bellsprout", "Weepinbell", "Exeggcute", "Chikorita", "Bayleef", "Hoppip", "Skiploom", "Sunkern"},
[water] = {"Squirtle", "Wartortle", "Horsea", "Goldeen", "Magikarp", "Psyduck", "Poliwag", "Poliwhirl", "Tentacool", "Krabby", "Staryu", "Omanyte", "Eevee", "Totodile", "Croconow", "Chinchou", "Marill", "Wooper", "Slowpoke", "Remoraid", "Seadra"},
[venom] = {"Zubat", "Ekans", "Nidoran male", "Nidoran female", "Nidorino", "Nidorina", "Gloom", "Venonat", "Tentacool", "Grimer", "Koffing", "Spinarak", "Golbat"},
[thunder] = {"Magnemite", "Pikachu", "Voltorb", "Eevee", "Chinchou", "Pichu", "Mareep", "Flaaffy", "Elekid"},
[rock] = {"Geodude", "Graveler", "Rhyhorn", "Kabuto", "Slugma", "Pupitar"},
[punch] = {"Machop", "Machoke", "Mankey", "Poliwhirl", "Tyrogue"},
[fire] = {"Charmander", "Charmeleon", "Vulpix", "Growlithe", "Ponyta", "Eevee", "Cyndaquil", "Quilava", "Slugma", "Houndour", "Magby"},
[coccon] = {"Caterpie", "Metapod", "Weedle", "Kakuna", "Paras", "Venonat", "Scyther", "Ledyba", "Spinarak", "Pineco"},
[crystal] = {"Dratini", "Dragonair", "Magikarp", "Omanyte", "Kabuto", "Seadra"},
[dark] = {"Gastly", "Haunter", "Eevee", "Houndour", "Pupitar"},
[earth] = {"Cubone", "Sandshrew", "Nidorino", "Nidorina", "Diglett", "Onix", "Rhyhorn", "Wooper", "Swinub", "Phanpy", "Larvitar"},
[enigma] = {"Abra", "Kadabra", "Psyduck", "Slowpoke", "Drowzee", "Eevee", "Natu", "Smoochum"},
[heart] = {"Rattata", "Pidgey", "Pidgeotto", "Spearow", "Clefairy", "Jigglypuff", "Meowth", "Doduo", "Porygon", "Chansey", "Sentret", "Hoothoot", "Cleffa", "Igglybuff", "Togepi", "Snubull", "Teddiursa"},
[ice] = {"Seel", "Shellder", "Smoochum", "Swinub"},
[king] = {"Slowpoke", "Poliwhirl"},
[metal] = {"Onix", "Scyther"},
[dragon] = {"Seadra"},
[upgrade] = {"Porygon"},
[sun] = {"Sunkern", "Gloom"},
--[sfire] = {"Shiny Charmander", "Shiny Charmeleon", "Shiny Vulpix", "Shiny Growlithe", "Shiny Ponyta", "Shiny Eevee"},
[swater] = {"Shiny Squirtle", "Shiny Wartortle", "Shiny Horsea", "Shiny Goldeen", "Shiny Magikarp", "Shiny Psyduck", "Shiny Poliwag", "Shiny Poliwhirl", "Shiny Tentacool", "Shiny Krabby", "Shiny Staryu", "Shiny Omanyte", "Shiny Eevee"},
[sleaf] = {"Shiny Bulbasaur", "Shiny Ivysaur", "Shiny Oddish", "Shiny Gloom", "Shiny Bellsprout", "Shiny Weepinbell", "Shiny Exeggcute"},
[sheart] = {"Shiny Rattata", "Shiny Pidgey", "Shiny Pidgeotto", "Shiny Spearow", "Shiny Clefairy", "Shiny Jigglypuff", "Shiny Meowth", "Shiny Doduo", "Shiny Porygon", "Shiny Chansey"},
[senigma] = {"Shiny Abra", "Shiny Kadabra", "Shiny Psyduck", "Shiny Slowpoke", "Shiny Drowzee", "Shiny Eevee"},
[srock] = {"Shiny Geodude", "Shiny Graveler", "Shiny Rhyhorn", "Shiny Kabuto"},
[svenom] = {"Shiny Zubat", "Shiny Ekans", "Shiny Nidoran male", "Shiny Nidoran female", "Shiny Nidorino", "Shiny Nidorina", "Shiny Gloom", "Shiny Venonat", "Shiny Tentacool", "Shiny Grimer", "Shiny Koffing"},
[sice] = {"Shiny Seel", "Shiny Shellder"},
[sthunder] = {"Shiny Magnemite", "Shiny Pikachu", "Shiny Voltorb", "Shiny Eevee"},
[scrystal] = {"Shiny Dratini", "Shiny Dragonair", "Shiny Magikarp", "Shiny Omanyte", "Shiny Kabuto"},
[scoccon] = {"Shiny Caterpie", "Shiny Metapod", "Shiny Weedle", "Shiny Kakuna", "Shiny Paras", "Shiny Venonat", "Shiny Scyther"},
[sdarkness] = {"Shiny Gastly", "Shiny Haunter", "Shiny Eevee"},
[spunch] = {"Shiny Machop", "Shiny Machoke", "Shiny Mankey", "Shiny Poliwhirl"},
[searth] = {"Shiny Cubone", "Shiny Sandshrew", "Shiny Nidorino", "Shiny Nidorina", "Shiny Diglett", "Shiny Onix", "Shiny Rhyhorn"}
}
function onUse(cid, item, frompos, item2, topos)
local pokeball = getPlayerSlotItem(cid, 8)
if not isMonster(item2.uid) or not isSummon(item2.uid) then
return true
end
if getCreatureCondition(item2.uid, CONDITION_INVISIBLE) then return true end
local pevo = poevo[getCreatureName(item2.uid)]
if not isInArray(specialevo, getCreatureName(item2.uid)) then
 if not pevo then
  doPlayerSendCancel(cid, "This pokemon can't evolve.")
 return true
 end
 if not isPlayer(getCreatureMaster(item2.uid)) or getCreatureMaster(item2.uid) ~= cid then
  doPlayerSendCancel(cid, "You can only use stones on pokemons you own.")
 return true
 end
 if pevo.stoneid ~= item.itemid and pevo.stoneid2 ~= item.itemid then
  doPlayerSendCancel(cid, "This isn't the needed stone to evolve this pokemon.")
 return true
 end
end
local minlevel = 0

if getPokemonName(item2.uid) == "Eevee" then
 local eevee = ""
 if item.itemid == thunder then
  eevee = "Jolteon"
 elseif item.itemid == water then
  eevee = "Vaporeon"
 elseif item.itemid == fire then
  eevee = "Flareon"
 elseif item.itemid == enigma and allEvolutionsCanBeInduzedByStone then
  eevee = "Espeon"
 elseif item.itemid == dark and allEvolutionsCanBeInduzedByStone then
  eevee = "Umbreon"
 else
  doPlayerSendCancel(cid, "This isn't the required stone to evolve this pokemon.")
  return true
 end
 minlevel = pokes[eevee].level
 if getPlayerLevel(cid) < minlevel then
 doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
 return true
 end
 doRemoveItem(item.uid, 1)
 doEvolvePokemon(cid, item2, eevee, 0, 0)
return true
end
if getPokemonName(item2.uid) == "Shiny Eevee" then
 local eevee = ""
 if item.itemid == sthunder then
  eevee = "Shiny Jolteon"
 elseif item.itemid == swater then
  eevee = "Shiny Vaporeon"
 elseif item.itemid == sfire then
  eevee = "Shiny Flareon"
 else
  doPlayerSendCancel(cid, "This isn't the required stone to evolve this pokemon.")
  return true
 end
 minlevel = pokes[eevee].level
 if getPlayerLevel(cid) < minlevel then
 doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
 return true
 end
 doRemoveItem(item.uid, 1)
 doEvolvePokemon(cid, item2, eevee, 0, 0)
return true
end

if isInArray(specialevo, getPokemonName(item2.uid)) then
if getPokemonName(item2.uid) == "Poliwhirl" then
 local evolution = 0
 local theevo = ""
 local nlevel = 45
 if item.itemid == water then
  if getPokemonLevel(item2.uid) >= 36 and getPlayerItemCount(cid, king) >= 1 then
   evolution = king
   theevo = "Politoed"
  elseif getPokemonLevel(item2.uid) >= 36 and getPlayerItemCount(cid, punch) >= 1 and allEvolutionsCanBeInduzedByStone then
   evolution = punch
   theevo = "Poliwrath"
  else
   if allEvolutionsCanBeInduzedByStone then
 if getPlayerItemCount(cid, king) <= 0 and getPlayerItemCount(cid, punch) <= 0 then
  doPlayerSendCancel(cid, "You need a water stone and a punch stone (Poliwrath) or a King's Rock (Politoed) to evolve this pokemon.")
 return true
 end
   else
 if getPlayerItemCount(cid, king) <= 0 then
  doPlayerSendCancel(cid, "You need a Water Stone and a King's Rock to evolve this pokemon to a Politoed.")
 return true
 end
   end
  end
  minlevel = pokes[theevo].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, punch) >= 1 and getPlayerItemCount(cid, king) >= 1 and allEvolutionsCanBeInduzedByStone then
   doPlayerSendCancel(cid, "Please, use your Punch Stone to evolve this pokemon to a Poliwrath, or a King's Rock to a Politoed.")
  return true
  end
  if evolution == 0 then
   if allEvolutionsCanBeInduzedByStone then
 doPlayerSendCancel(cid, "You need at least one Water Stone, and a Punch Stone (Poliwrath) or a King's Rock (Politoed) to evolve this pokemon.")
   else
 doPlayerSendCancel(cid, "You need at least one Water Stone and a King's Rock to evolve this pokemon.")
   end
  return true
  end
  if evolution ~= 0 then
  doEvolvePokemon(cid, item2, theevo, evolution, water)
  return true
  end
 elseif item.itemid == punch then
  minlevel = pokes["Poliwrath"].level
  if not allEvolutionsCanBeInduzedByStone then
   doPlayerSendCancel(cid, "This is not the required stone to evolve this pokemon.")
  return true
  end
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, water) <= 0 then
  doPlayerSendCancel(cid, "You need at least one Punch Stone and one Water Stone to evolve this pokemon.")
  return true
  end
  local theevo = "Poliwrath"
  doEvolvePokemon(cid, item2, theevo, water, punch)

 elseif item.itemid == king then
  minlevel = pokes["Politoed"].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, water) <= 0 then
  doPlayerSendCancel(cid, "You need at least one Punch Stone and one King's Rock to evolve this pokemon.")
  return true
  end
  local theevo = "Politoed"
  doEvolvePokemon(cid, item2, theevo, water, king)
 end
 elseif getPokemonName(item2.uid) == "Shiny Poliwhirl" then
 local evolution = 0
 local theevo = ""
 local nlevel = 45
 if item.itemid == swater then
  if getPokemonLevel(item2.uid) >= 36 and getPlayerItemCount(cid, punch) >= 1 and allEvolutionsCanBeInduzedByStone then
   evolution = spunch
   theevo = "Shiny Poliwrath"
  else
   if allEvolutionsCanBeInduzedByStone then
 if getPlayerItemCount(cid, punch) <= 0 then
  doPlayerSendCancel(cid, "You need a shining water stone and a shining punch stone to evolve this pokemon.")
 return true
 end
   else

   end
  end
  minlevel = pokes[theevo].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, spunch) >= 1 and allEvolutionsCanBeInduzedByStone then
   doPlayerSendCancel(cid, "Please, use your shining Punch Stone to evolve this pokemon to a Poliwrath.")
  return true
  end
  if evolution == 0 then
   if allEvolutionsCanBeInduzedByStone then
 doPlayerSendCancel(cid, "You need at least one shining Water Stone and a shining Punch Stone to evolve this pokemon.")
   else
 doPlayerSendCancel(cid, "You need at least one shining Water Stone evolve this pokemon.")
   end
  return true
  end
  if evolution ~= 0 then
  doEvolvePokemon(cid, item2, theevo, evolution, swater)
  return true
  end
 elseif item.itemid == spunch then
  minlevel = pokes["Shiny Poliwrath"].level
  if not allEvolutionsCanBeInduzedByStone then
   doPlayerSendCancel(cid, "This is not the required shining stone to evolve this pokemon.")
  return true
  end
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, swater) <= 0 then
  doPlayerSendCancel(cid, "You need at least one shining Punch Stone and one shining Water Stone to evolve this pokemon.")
  return true
  end
  local theevo = "Shiny Poliwrath"
  doEvolvePokemon(cid, item2, theevo, swater, spunch)

 end
elseif getPokemonName(item2.uid) == "Gloom" then
if item.itemid == leaf then
 local theevo = ""
 local evolution = 0
  if getPlayerItemCount(cid, venom) >= 1 and getPlayerItemCount(cid, sun) >= 1 then
  doPlayerSendCancel(cid, "Please, use your Venom Stone to evolve this pokemon to a Vileplume, or a Sun Stone to a Bellossom.")
  return true
  end
  if getPlayerItemCount(cid, venom) <= 0 and getPlayerItemCount(cid, sun) <= 0 then
  doPlayerSendCancel(cid, "You need at least one Leaf Stone, and a Sun Stone (Bellossom) or a Venom Stone (Vileplume) to evolve this pokemon.")
  return true
  end
  if getPlayerItemCount(cid, venom) >= 1 then
  theevo = "Vileplume"
  evolution = venom
  elseif getPlayerItemCount(cid, sun) >= 1 then
  theevo = "Bellossom"
  evolution = sun
  end
  minlevel = pokes[theevo].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  doEvolvePokemon(cid, item2, theevo, evolution, leaf)
 elseif item.itemid == venom then
  minlevel = pokes["Vileplume"].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, leaf) <= 0 then
  doPlayerSendCancel(cid, "You need at least one Leaf Stone and one Venom Stone to evolve this pokemon.")
  return true
  end
  doEvolvePokemon(cid, item2, "Vileplume", venom, leaf)
 elseif item.itemid == sun then
  minlevel = pokes["Bellossom"].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, leaf) <= 0 then
  doPlayerSendCancel(cid, "You need at least one Leaf Stone and one Sun Stone to evolve this pokemon.")
  return true
  end
  doEvolvePokemon(cid, item2, "Bellossom", sun, leaf)
 end
  elseif getPokemonName(item2.uid) == "Shiny Gloom" then
if item.itemid == sleaf then
 local theevo = ""
 local evolution = 0
  if getPlayerItemCount(cid, svenom) >= 1 then
  doPlayerSendCancel(cid, "Please, use your shining Venom Stone to evolve this pokemon to a Shiny Vileplume.")
  return true
  end
  if getPlayerItemCount(cid, svenom) <= 0 then
  doPlayerSendCancel(cid, "You need at least one shining Leaf Stone or a shining Venom Stone to evolve this pokemon.")
  return true
  end
  if getPlayerItemCount(cid, svenom) >= 1 then
  theevo = "Shiny Vileplume"
  evolution = svenom
  end
  minlevel = pokes[theevo].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  doEvolvePokemon(cid, item2, theevo, evolution, sleaf)
 elseif item.itemid == svenom then
  minlevel = pokes["Shiny Vileplume"].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  if getPlayerItemCount(cid, sleaf) <= 0 then
  doPlayerSendCancel(cid, "You need at least one Leaf Stone and one shining Venom Stone to evolve this pokemon.")
  return true
  end
  doEvolvePokemon(cid, item2, "Shiny Vileplume", svenom, sleaf)
 end
elseif getPokemonName(item2.uid) == "Slowpoke" then
 if item.itemid == enigma then
  if not allEvolutionsCanBeInduzedByStone then
   doPlayerSendCancel(cid, "This is not the required stone to evolve this pokemon.")
  return true
  end
  minlevel = pokes["Slowbro"].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  doEvolvePokemon(cid, item2, "Slowbro", enigma, 0)
 elseif item.itemid == king then
  minlevel = pokes["Slowking"].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  doEvolvePokemon(cid, item2, "Slowking", king, 0)
 end

elseif getPokemonName(item2.uid) == "Shiny Slowpoke" then
 if item.itemid == senigma then
  if not allEvolutionsCanBeInduzedByStone then
   doPlayerSendCancel(cid, "This is not the required stone to evolve this pokemon.")
  return true
  end
  minlevel = pokes["Shiny Slowbro"].level
  if getPlayerLevel(cid) < minlevel then
  doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
  return true
  end
  doEvolvePokemon(cid, item2, "Shiny Slowbro", senigma, 0)
 end

elseif getPokemonName(item2.uid) == "Tyrogue" then
 if not allEvolutionsCanBeInduzedByStone then
  doPlayerSendCancel(cid, "This pokemon doesn't evolve using stones.")
 return true
 end
 local evolution = ""
 if getOffense(item2.uid) == getDefense(item2.uid) then
  evolution = "Hitmontop"
 elseif getOffense(item2.uid) > getDefense(item2.uid) then
  evolution = "Hitmonlee"
 else
  evolution = "Hitmonchan"
 end
 minlevel = pokes[evolution].level
 if getPlayerLevel(cid) < minlevel then
 doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
 return true
 end
 doEvolvePokemon(cid, item2, evolution, punch, 0)
end
return true
end
local count = poevo[getPokemonName(item2.uid)].count
local stnid = poevo[getPokemonName(item2.uid)].stoneid
local stnid2 = poevo[getPokemonName(item2.uid)].stoneid2
local evo = poevo[getPokemonName(item2.uid)].evolution
local nlevel = poevo[getPokemonName(item2.uid)].level
local count = poevo[getPokemonName(item2.uid)].count
local stnid = poevo[getPokemonName(item2.uid)].stoneid
local stnid2 = poevo[getPokemonName(item2.uid)].stoneid2
local evo = poevo[getPokemonName(item2.uid)].evolution
local nlevel = poevo[getPokemonName(item2.uid)].level

if stnid2 > 1 and (getPlayerItemCount(cid, stnid2) < count or getPlayerItemCount(cid, stnid) < count) then
doPlayerSendCancel(cid, "You need at least one "..getItemNameById(stnid).." and one "..getItemNameById(stnid2).." to evolve this pokemon!")
return true
end
if getPlayerItemCount(cid, stnid) < count then
local str = ""
if count >= 2 then
str = "s"
end
return doPlayerSendCancel(cid, "You need at least "..count.." "..getItemNameById(stnid)..""..str.." to evolve this pokemon!")
end
minlevel = pokes[evo].level
if getPlayerLevel(cid) < minlevel and evolutionByStoneRequireLevel then
doPlayerSendCancel(cid, "You don't have enough level to evolve this pokemon ("..minlevel..").")
return true
end
if count >= 2 then
stnid2 = stnid
end
doEvolvePokemon(cid, item2, evo, stnid, stnid2)
return TRUE
end

 

 

 

Agora evite ficar postando em 3000000x topicos esses erros. crie 1 TOPICO e envie aos membros que possivelmente possão te ajudar. pois se continuar a postar sequencialmente a mesma coisa em outros topicos podera ser alertado por FLOOD.

 

Atenciosamente, Stigal.

Link para o comentário
Compartilhar em outros sites

@webmasterxd

o problema esta em lib/configuration.lua...

["Totodile"] = {level = 18, evolution = "Croconaw", count = 1, stoneid = 11442, stoneid2 = 0},  --alterado v1.7
["Croconaw"] = {level = 30, evolution = "Feraligatr", count = 2, stoneid = 11442, stoneid2 = 0}, --alterado v1.7

no teu vai tar.. "Croconow"... eh soh trocar e deixar assim.. vlw pelo report!

 

@galhem

se tas usando a versao 1.6/2.6+ party agora eh soh pra upar em conjunto... o duel agora eh por Order! de order na pessoa q tu quer duelar e entao escolha qnts pokes vao ser usados e entao a outra pessoa tem q usar Order em ti tb para aceitar o duel!

 

@Zandor

ter tem... mas eh complicado... ;/

Link para o comentário
Compartilhar em outros sites

Problema 60% é de tibia mais lembrando que parte disto é itens como chão, parede, telhado, grama, nature, etc...

Então não é bem certo 60%.

E mesmo assim 62.100 sprites para mim é muito pouco onde eu quero colocar todos os 646pokes + 646 shiny = +- 64.500 sprites!!!!

O @Maguito me falou que se tiver sources dá para aumentar o espaço. Que se puder peço que faça um tutorial.

Pois eu tenho todos os pokémons só me falta espaço!

 

Vc Esta Tentando Add As Sprites Recortadas Ou Ja Esta Em IDC?

 

ABRASS

 

Aprites prontas só precisa adicionar elas!

Link para o comentário
Compartilhar em outros sites

Slicer to com esse erro aki:

 

[23/09/2012 16:19:10] [Error - TalkAction Interface]

[23/09/2012 16:19:11] data/talkactions/scripts/move1.lua:onSay

[23/09/2012 16:19:11] Description:

[23/09/2012 16:19:11] data/lib/pokemon moves.lua:120: attempt to perform arithmetic on field 'f' (a nil value)

[23/09/2012 16:19:11] stack traceback:

[23/09/2012 16:19:11] data/lib/pokemon moves.lua:120: in function 'docastspell'

[23/09/2012 16:19:11] data/talkactions/scripts/move1.lua:172: in function <data/talkactions/scripts/move1.lua:20>

 

 

E dentro do jogo:

Dudu: Shiny Gyarados, use Dragon Breath!

Dudu: m6

 

E os pokémons n estão soltando as magias.

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

Slicer to com esse erro aki:

 

[23/09/2012 16:19:10] [Error - TalkAction Interface]

[23/09/2012 16:19:11] data/talkactions/scripts/move1.lua:onSay

[23/09/2012 16:19:11] Description:

[23/09/2012 16:19:11] data/lib/pokemon moves.lua:120: attempt to perform arithmetic on field 'f' (a nil value)

[23/09/2012 16:19:11] stack traceback:

[23/09/2012 16:19:11] data/lib/pokemon moves.lua:120: in function 'docastspell'

[23/09/2012 16:19:11] data/talkactions/scripts/move1.lua:172: in function <data/talkactions/scripts/move1.lua:20>

 

 

E dentro do jogo:

Dudu: Shiny Gyarados, use Dragon Breath!

Dudu: m6

 

E os pokémons n estão soltando as magias.

Move1.lua troque por:

 

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

if param ~= "" then return true end
if string.len(words) > 3 then return true end
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return 0
end
				  --alterado v1.5
local mypoke = getCreatureSummons(cid)[1]
if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end
   if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then
   name = getPlayerStorageValue(mypoke, 1010)   --edited
   else
   name = getCreatureName(mypoke)
   end 

   --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)
local it = string.sub(words, 2, 3)
local move = movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
  cdzin = "cm_move"..it..""
else
  cdzin = "move"..it..""	   --alterado v1.5
end
if it == "2" then
 move = movestable[name].move2
elseif it == "3" then
 move = movestable[name].move3
elseif it == "4" then
 move = movestable[name].move4
elseif it == "5" then
 move = movestable[name].move5
elseif it == "6" then
 move = movestable[name].move6
elseif it == "7" then
 move = movestable[name].move7
elseif it == "8" then
 move = movestable[name].move8
elseif it == "9" then
 move = movestable[name].move9
elseif it == "10" then
 move = movestable[name].move10
elseif it == "11" then
 move = movestable[name].move11
elseif it == "12" then
 move = movestable[name].move12
elseif it == "13" then
 move = movestable[name].move13
end
if not move then
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end

if getPlayerLevel(cid) < move.level then
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")
   return true
   end
if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")
return 0
end
if getTileInfo(getThingPos(mypoke)).protection then
 doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return 0
end

if getPlayerStorageValue(mypoke, 3894) >= 1 then
   return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3
   end

if move.name == "Team Slice" or move.name == "Team Claw" and #getCreatureSummons(cid) < 2 then	   --alterado v1.5
 doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
   return 0
   end
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["too bad"], getCreatureName(getCreatureTarget(cid))) and math.random(1, 100) <= 10 then
  local target = getCreatureTarget(cid)																					  
																	 --alterado v1.5
  doSendMagicEffect(getThingPos(target), 211)
  doSendAnimatedText(getThingPos(target), "TOO BAD", 215)							   
  doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
  doSendMagicEffect(getThingPos(target), 211)
  doFaceCreature(target, getThingPos(mypoke))	 
return 0
end

if move.target == 1 then
if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")
return 0
end
if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end
if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")
return 0
end
if not isCreature(getCreatureSummons(cid)[1]) then
return true
end
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end
if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end
local newid = 0
    if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v1.5
  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
  return 0
 else
  newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
 end

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

   local mypoke22 = getCreatureSummons(cid)[2] or 0	    --edited team
   local mypoke33 = getCreatureSummons(cid)[3] or 0
addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
if mypoke33 ~= 0 and getPlayerStorageValue(cid, 637501) >= 1 then
   if move.name ~= "Team Slice" and move.name ~= "Team Claw" then   --alterado v1.5
   docastspell(mypoke33, move.name)
   docastspell(mypoke22, move.name)
   end
   elseif mypoke22 ~= 0 and getPlayerStorageValue(cid, 637501) >= 1 then		   --edited team
  if move.name ~= "Team Slice" and move.name ~= "Team Claw" then	 --alterado v1.5
	 docastspell(mypoke22, move.name)
  end
   end 
   docastspell(mypoke, move.name)
doCreatureAddCondition(cid, playerexhaust)
if useKpdoDlls then
 doUpdateCooldowns(cid)
end
return 0
end

 

 

 

Pokemon moves.lua troke por:

 

--[[
   *** functions ***

   •doMoveInAreaWithMiss(cid, area, effect, cd, atkName, paralize, element, min, max)
	 •Da uma atk com efeito que deixa os alvos com efeito de 'MISS'...

   •doMoveInArea(cid, rounds, effect, area, min, max, element, atkName)
	 •Da um atk 'nomal' e tb atks que deixam os alvos com efeito de 'Confuso'...

   •doMoveInAreaMulti(cid, effDistance, effMagic, areaEff, areaDano, element, min, max)
	 •Da um atk estilo 'Multi-Kick, Bullet Seed' e afins...
--]]
const_distance_delay = 56
function getMasterTarget(cid)
   if isSummon(cid) then
 return getCreatureTarget(getCreatureMaster(cid))
else
 return getCreatureTarget(cid)
   end
end
function docastspell(cid, spell, mina, maxa)
local target = 0
local getDistDelay = 0
if isCreature(getMasterTarget(cid)) then
target = getMasterTarget(cid)
getDistDelay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay
end
if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return false end
if isSleeping(cid) then return true end
if isMonster(cid) and not isSummon(cid) then
if getCreatureCondition(cid, CONDITION_EXHAUST) then
return true
end
doCreatureAddCondition(cid, wildexhaust)
end
local mydir = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local min = 0
local max = 0																																																																	
if ehMonstro(cid) and isCreature(getMasterTarget(cid)) and isInArray(specialabilities["too bad"], getCreatureName(getMasterTarget(cid))) and math.random(1, 100) <= 10 then
  local target = getMasterTarget(cid)																				   
																    --alterado v1.5
  doSendMagicEffect(getThingPosWithDebug(target), 211)
  doSendAnimatedText(getThingPosWithDebug(target), "TOO BAD", 215)								
  doTeleportThing(target, getClosestFreeTile(target, getThingPosWithDebug(cid)), false)
  doSendMagicEffect(getThingPosWithDebug(target), 211)
  doFaceCreature(target, getThingPosWithDebug(cid))	 
return false
end
--- FEAR / ROAR / SILENCE ---
if getPlayerStorageValue(cid, conds["Fear"]) >= 1 or getPlayerStorageValue(cid, conds["Silence"]) >= 1 then
return true									  --alterado v1.5!!
end
----------------------------

if mina and maxa then
min = math.abs(mina)
max = math.abs(maxa)
elseif not isPlayer(cid) then
if movesinfo[spell] then

 min = getSpecialAttack(cid) * movesinfo[spell].f * 0.1
 max = min + (isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid))

 if not isSummon(cid) then
  doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
 end
 if isNpcSummon(cid) then
  local mnn = {" use ", " "}
  local use = mnn[math.random(#mnn)]
  doCreatureSay(getCreatureMaster(cid), getPlayerStorageValue(cid, 1007)..","..use..""..doCorrectString(spell).."!", 1)
 end
else
print("Error trying to use move "..spell..", move not specified in moves table.")
end

end
--- FOCUS ----------------------------------		   
if getPlayerStorageValue(cid, 253) >= 0 and movesinfo[spell] and movesinfo[spell].f ~= 0 then
min = min * 2
max = max * 2
setPlayerStorageValue(cid, 253, -1)
end
--- Shredder Team -------------------------------
if getPlayerStorageValue(cid, 637501) >= 1 then
  if #getCreatureSummons(cid) == 1 then
  docastspell(getCreatureSummons(cid)[1], spell)
  elseif #getCreatureSummons(cid) == 2 then
  docastspell(getCreatureSummons(cid)[1], spell)
  docastspell(getCreatureSummons(cid)[2], spell)
  end   

elseif getPlayerStorageValue(cid, 637500) >= 1 then
  min = 0
  max = 0									
end
------------------Miss System--------------------------
local cd = getPlayerStorageValue(cid, conds["Miss"])
local cd2 = getPlayerStorageValue(cid, conds["Confusion"])	  --alterado v1.5
local cd3 = getPlayerStorageValue(cid, conds["Stun"])
if cd >= 0 or cd2 >= 0 or cd3 >= 0 then
  if not isInArray({"Aromateraphy", "Emergency Call", "Magical Leaf", "Sunny Day", "Safeguard"}, spell) then
  if math.random(1, 100) > 30 then
	 doSendAnimatedText(getThingPosWithDebug(cid), "MISS", 215)
	 return false
  end
  end
end
---------------GHOST DAMAGE-----------------------
ghostDmg = GHOSTDAMAGE
psyDmg = PSYCHICDAMAGE
if getPlayerStorageValue(cid, 999457) >= 1 then	   --alterado v1.5
  addEvent(setPlayerStorageValue, 50, cid, 999457, -1)
end
---------------SelfDestruction-----------------
canDoSelf = true
----------------REFLECT------------------------- 
local uid = checkAreaUid(getCreaturePosition(cid), BigArea2, 1, 1)
for _,pid in pairs(uid) do
   if isCreature(pid) then
   if getPlayerStorageValue(cid, 21099) >= 1 then
	  if getPlayerStorageValue(pid, 21101) >= 1 then
		 target = pid
		 setPlayerStorageValue(cid, 21099, 0)
		 setPlayerStorageValue(pid, 21101, 0)
		 if getCreatureName(cid) == "Wobbuffet" then
		    doRemoveCondition(cid, CONDITION_OUTFIT)    --alterado v1.4
		 end
	  end
   elseif getPlayerStorageValue(pid, 21099) >= 1 and pid ~= cid then					   --alterado v1.5
		 if not isInArray({"Reflect", "Team Slice", "Magic Coat", "Shredder Team", "Double Team", "Team Claw"}, spell) then
		    addEvent(docastspell, 100, pid, spell)
		    doSendMagicEffect(getThingPosWithDebug(pid), 135)
		    doSendAnimatedText(getThingPosWithDebug(pid), "REFLECT", COLOR_GRASS)
		    setPlayerStorageValue(cid, 21101, 1)
		    canDoSelf = false
		    min = 0
		    max = 0
		 end
   end
   end								
end
--------------------------------------------------
if spell == "Reflect" or spell == "Magic Coat" then
   if spell == "Magic Coat" then
  eff = 11
   else
  eff = 135
   end
doSendMagicEffect(getThingPosWithDebug(cid), eff)
setPlayerStorageValue(cid, 21099, 1)		

elseif spell == "Quick Attack" then
   doSendMagicEffect(getThingPosWithDebug(cid), 211)
local x = getClosestFreeTile(cid, getThingPosWithDebug(target))
doTeleportThing(cid, x, false)
doFaceCreature(cid, getThingPosWithDebug(target))
doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 3)

elseif spell == "Razor Leaf" or spell == "Magical Leaf" then					 
local eff = spell == "Razor Leaf" and 8 or 21
local function throw(cid, target)
if not isCreature(cid) or not isCreature(target) then return false end
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), eff)
doDanoWithProtectWithDelay(cid, target, GRASSDAMAGE, min, max, 245)
end
addEvent(throw, 0, cid, target)
addEvent(throw, 350, cid, target)

elseif spell == "Vine Whip" then
local area = getThingPosWithDebug(cid)
local dano = {}
local effect = 255
if mydir == 0 then
 area.x = area.x + 1
 area.y = area.y - 1
 dano = whipn
 effect = 80
elseif mydir == 1 then
 area.x = area.x + 2
 area.y = area.y + 1
 dano = whipe
 effect = 83
elseif mydir == 2 then
 area.x = area.x + 1
 area.y = area.y + 2 
 dano = whips
 effect = 81
elseif mydir == 3 then
 area.x = area.x - 1
 area.y = area.y + 1
 dano = whipw
 effect = 82
end
 doSendMagicEffect(area, effect)
 doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), dano, -min, -max, 255)

elseif spell == "Headbutt" then

   doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 118)

elseif spell == "Leech Seed" then
   local ret = {}
   ret.id = target
   ret.attacker = cid
   ret.cd = 5
   ret.check = getPlayerStorageValue(target, conds["Leech"])
   ret.damage = isSummon(cid) and getMasterLevel(cid)+getPokemonBoost(cid) or getPokemonLevel(cid)
   ret.cond = "Leech"

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 1)
addEvent(doCondition2, 1000, ret)

elseif spell == "Solar Beam" then

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

 doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), area, -min, -max, 255)
 doRegainSpeed(cid)
 setPlayerStorageValue(cid, 3644587, -1)
end
local function ChargingBeam(cid)
 if not isCreature(cid) then
 return true
 end
 if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
 return true
 end
 if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
 return true
 end
 local tab = {}
 for x = -2, 2 do
  for y = -2, 2 do
   local pos = getThingPosWithDebug(cid)
   pos.x = pos.x + x
   pos.y = pos.y + y
 if pos.x ~= getThingPosWithDebug(cid).x and pos.y ~= getThingPosWithDebug(cid).y then
 table.insert(tab, pos)
 end
  end
 end
doSendDistanceShoot(tab[math.random(#tab)], getThingPosWithDebug(cid), 37)
end
doChangeSpeed(cid, -getCreatureSpeed(cid))
setPlayerStorageValue(cid, 3644587, 1)
for r = 1, 100 do
addEvent(ChargingBeam, r*9, cid)
end
addEvent(useSolarBeam, 1000, cid)
elseif spell == "Sleep Powder" then
local calc = math.floor(getPokemonLevel(cid) / 20)
local v1 = 6
local v2 = v1 + calc
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -v1, -v2, 27)
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							 
doAreaCombatHealth(cid, POISON_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -6, -15, 84)

elseif spell == "Bullet Seed" then
		   --cid, effDist, effDano, areaEff, areaDano, element, min, max
doMoveInAreaMulti(cid, 1, 45, bullet, bulletDano, GRASSDAMAGE, min, max)
elseif spell == "Body Slam" then

doBodyPush(cid, target, true)
doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 3)

elseif spell == "Leaf Storm" or tonumber(spell) == 73 then
addEvent(doDanoWithProtect, 150, cid, GRASSDAMAGE, getThingPosWithDebug(cid), grassarea, -min, -max, 0)
local pos = getThingPosWithDebug(cid)
local function doSendLeafStorm(cid, pos)			  --alterado!!
 if not isCreature(cid) then return true end
 doSendDistanceShoot(getThingPosWithDebug(cid), pos, 8)
end
for a = 1, 100 do
 local lugar = {x = pos.x + math.random(-6, 6), y = pos.y + math.random(-5, 5), z = pos.z}
 addEvent(doSendLeafStorm, a * 2, cid, lugar)
end

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

elseif spell == "Ember" then
 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
 doDanoWithProtectWithDelay(cid, target, FIREDAMAGE, min, max, 15)
elseif spell == "Flamethrower" then
local flamepos = getThingPosWithDebug(cid)
   local effect = 255
   local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
if a == 0 then
 flamepos.x = flamepos.x+1
 flamepos.y = flamepos.y-1
 effect = 106
elseif a == 1 then
 flamepos.x = flamepos.x+3
 flamepos.y = flamepos.y+1
 effect = 109
elseif a == 2 then
 flamepos.x = flamepos.x+1
 flamepos.y = flamepos.y+3
 effect = 107
elseif a == 3 then
 flamepos.x = flamepos.x-1
 flamepos.y = flamepos.y+1
 effect = 108
end
    doMoveInArea2(cid, 0, flamek, FIREDAMAGE, min, max, spell)
 doSendMagicEffect(flamepos, effect) 

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

elseif spell == "Fire Fang" then
doSendMagicEffect(getThingPosWithDebug(target), 138)
   doDanoWithProtectWithDelay(cid, target, FIREDAMAGE, min, max, 15)

elseif spell == "Fire Blast" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area, eff)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, FIREDAMAGE, area, 0, 0, 0, eff)
  doAreaCombatHealth(cid, FIREDAMAGE, area, whirl3, -min, -max, 35)
end
end
for a = 0, 4 do
local t = {
[0] = {60, {x=p.x, y=p.y-(a+1), z=p.z}},		   --alterado v1.4
[1] = {61, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {62, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {63, {x=p.x-(a+1), y=p.y, z=p.z}}
}  
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end

elseif spell == "Rage" then
  local ret = {}
  ret.id = cid
  ret.cd = 15
  ret.eff = 13
  ret.check = 0
  ret.buff = spell
  ret.first = true

  doCondition2(ret)

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

elseif spell == "Dragon Claw" then
   doDanoWithProtect(cid, DRAGONDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 141)

elseif spell == "Wing Attack" or spell == "Steel Wing" then
local effectpos = getThingPosWithDebug(cid)
local effect = 255
local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
if a == 0 then
 effect = spell == "Steel Wing" and 251 or 128
 effectpos.x = effectpos.x + 1
 effectpos.y = effectpos.y - 1				   --alterado v1.4
elseif a == 1 then
 effectpos.x = effectpos.x + 2
 effectpos.y = effectpos.y + 1
 effect = spell == "Steel Wing" and 253 or 129
elseif a == 2 then
 effectpos.x = effectpos.x + 1
 effectpos.y = effectpos.y + 2
 effect = spell == "Steel Wing" and 252 or 131
elseif a == 3 then
 effectpos.x = effectpos.x - 1
 effectpos.y = effectpos.y + 1
 effect = spell == "Steel Wing" and 254 or 130
end
 doSendMagicEffect(effectpos, effect)
 doMoveInArea2(cid, 0, wingatk, FLYINGDAMAGE, min, max, spell)

elseif spell == "Magma Storm" then
local eff = {6, 35, 35, 6}
local area = {flames1, flames2, flames3, flames4}
addEvent(doMoveInArea2, 2*450, cid, 2, flames0, FIREDAMAGE, min, max, spell)
for i = 0, 3 do
   addEvent(doMoveInArea2, i*450, cid, eff[i+1], area[i+1], FIREDAMAGE, min, max, spell)
end
elseif spell == "Bubbles" then
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
doDanoWithProtectWithDelay(cid, target, WATERDAMAGE, min, max, 25)

elseif spell == "Clamp" then
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
doDanoWithProtectWithDelay(cid, target, WATERDAMAGE, min, max, 53)
elseif spell == "Water Gun" then
if mydir == 0 then
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg1n, -min, -max, 74)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg2n, -min, -max, 75)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg3n, -min, -max, 76)
elseif mydir == 2 then
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg1s, -min, -max, 77)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg2s, -min, -max, 75)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg3s, -min, -max, 78)
elseif mydir == 1 then
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg1e, -min, -max, 69)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg2e, -min, -max, 70)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg3e, -min, -max, 71)
elseif mydir == 3 then
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg1w, -min, -max, 72)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg2w, -min, -max, 70)
 doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), wg3w, -min, -max, 73)
end

elseif spell == "Waterball" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
   doDanoWithProtectWithDelay(cid, target, WATERDAMAGE, min, max, 68, waba)

elseif spell == "Aqua Tail" then
local function rebackSpd(cid, sss)
 if not isCreature(cid) then return true end
 doChangeSpeed(cid, sss)
 setPlayerStorageValue(cid, 446, -1)
end
local x = getCreatureSpeed(cid)
doFaceOpposite(cid)
doChangeSpeed(cid, -x)
addEvent(rebackSpd, 400, cid, x)
setPlayerStorageValue(cid, 446, 1)
doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 68)

elseif spell == "Hydro Cannon" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area, eff)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, WATERDAMAGE, area, 0, 0, 0, eff)
  doAreaCombatHealth(cid, WATERDAMAGE, area, whirl3, -min, -max, 68)
end
end
for a = 0, 4 do
local t = {									 --alterado v1.4
[0] = {64, {x=p.x, y=p.y-(a+1), z=p.z}},
[1] = {65, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {66, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {67, {x=p.x-(a+1), y=p.y, z=p.z}}
}  
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end

elseif spell == "Harden" or spell == "Calm Mind" or spell == "Defense Curl" or spell == "Charm" then
															    --alterado v1.4
   if spell == "Calm Mind" then
   eff = 133
   elseif spell == "Charm" then
   eff = 147			    --efeito n eh esse.. e n sei se eh soh bonus de def, ou sp.def tb.. ;x
   else							
   eff = 144
   end

   local ret = {}
   ret.id = cid
   ret.cd = 8
   ret.eff = eff
   ret.check = 0
   ret.buff = spell
   ret.first = true

   doCondition2(ret)
elseif spell == "Bubble Blast" then
			 --cid, effDist, effDano, areaEff, areaDano, element, min, max
   doMoveInAreaMulti(cid, 2, 68, bullet, bulletDano, WATERDAMAGE, min, max)

elseif spell == "Skull Bash" then
   doMoveInArea2(cid, 118, reto5, NORMALDAMAGE, min, max, spell)			 
elseif spell == "Hydropump" then
local pos = getThingPosWithDebug(cid)
local function doSendBubble(cid, pos)
 if not isCreature(cid) then return true end
 if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
 if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
 doSendDistanceShoot(getThingPosWithDebug(cid), pos, 2)
 doSendMagicEffect(pos, 53)
end
													   --alterado!!
for a = 1, 20 do
 local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
 addEvent(doSendBubble, a * 25, cid, lugar)
end
addEvent(doDanoWithProtect, 150, cid, WATERDAMAGE, pos, waterarea, -min, -max, 0)
elseif spell == "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(doCondition2, 100, ret)
elseif spell == "Bug Bite" then
doSendMagicEffect(getThingPosWithDebug(target), 244)
   doDanoWithProtectWithDelay(cid, target, BUGDAMAGE, min, max, 8)
elseif spell == "Super Sonic" then
local rounds = math.random(4, 7)
rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
local ret = {}
ret.id = target
ret.cd = rounds
ret.check = getPlayerStorageValue(target, conds["Confusion"])
ret.cond = "Confusion"

addEvent(doCondition2, 100, ret)
elseif spell == "Whirlwind" then
area = {SL1, SL2, SL3, SL4}
for i = 0, 3 do
   addEvent(doMoveInArea2, i*300, cid, 42, area[i+1], FLYINGDAMAGE, min, max, spell)
end

elseif spell == "Psybeam" then
local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local t = {
[0] = 57,
[1] = 234,
[2] = 58,
[3] = 209,
}
doMoveInArea2(cid, t[a], reto4, psyDmg, min, max, spell)	 --alterado v1.4
elseif spell == "Sand Attack" then
local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local t = {
[0] = 120,
[1] = 121,
[2] = 122,
[3] = 119,
}
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
doCreatureSetLookDir(cid, a)  --sera? '-'
stopNow(cid, 1000) 
doMoveInArea2(cid, t[a], reto5, GROUNDDAMAGE, 0, 0, spell, ret)
elseif spell == "Confusion" or spell == "Night Shade" then
   local rounds = math.random(4, 7)	   --rever area...
   rounds = rounds + math.floor(getPokemonLevel(cid) / 35)

   if spell == "Confusion" then
   dano = psyDmg			 --alterado v1.4
   else
   dano = ghostDmg
   end
local ret = {}
   ret.id = 0
   ret.check = 0
   ret.cd = rounds
   ret.cond = "Confusion"
   doMoveInArea2(cid, 136, selfArea1, dano, min, max, spell, ret)

elseif spell == "Horn Attack" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
   doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 3)
elseif spell == "Poison Sting" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
   doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 8)

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 getCreatureName(cid) == "Scizor" then
    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 getCreatureName(cid) == "Scizor" then
    effect = 232
 else
 effect = 129
 end
elseif a == 2 then
 effectpos.x = effectpos.x + 1
 effectpos.y = effectpos.y + 2
 if getCreatureName(cid) == "Scizor" then
    effect = 233
 else
 effect = 131
 end
elseif a == 3 then
 effectpos.x = effectpos.x - 1
 effectpos.y = effectpos.y + 1
 if getCreatureName(cid) == "Scizor" then
    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)
   doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 114)

elseif spell == "Sting Gun" then

   local function doGun(cid, target)
   if not isCreature(cid) or not isCreature(target) 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), getThingPosWithDebug(target), 13)
	  doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 8)
   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)
doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 20)

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)
doDanoWithProtectWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48)
elseif spell == "Thunder Bolt" then
 local function doThunderHit(cid, target)
  if not isCreature(target) or 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
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 48)
 end
 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(doThunderHit, ry * 11, cid, target)
 end
 local function doThunderUp(cid, target)
  if not isCreature(target) or not isCreature(cid) then return true end
 local pos = getThingPosWithDebug(target)
 local mps = getThingPosWithDebug(cid)
 local xrg = math.floor((pos.x - mps.x) / 2)
 local topos = mps
 topos.x = topos.x + xrg
 local rd =  7
 topos.y = topos.y - rd
 doSendDistanceShoot(getThingPosWithDebug(cid), topos, 41)
 addEvent(doThunderFall, rd * 49, cid, topos, target)
 end 
   setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
   for thnds = 1, 2 do
 addEvent(doThunderUp, thnds * 155, cid, target)
end

elseif spell == "Thunder Wave" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 48
ret.spell = spell
ret.cond = "Stun"
doMoveInArea2(cid, 48, tw1, ELECTRICDAMAGE, min, max, spell, ret)
elseif spell == "Thunder" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 48
ret.spell = spell
ret.cond = "Stun"
doMoveInArea2(cid, 48, thunderr, ELECTRICDAMAGE, min, max, spell, ret)
elseif spell == "Mega Kick" then
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
doDanoWithProtectWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113)

elseif spell == "Thunder Punch" then
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
   doSendMagicEffect(getThingPosWithDebug(target), 112)
   doDanoWithProtectWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48)

elseif spell == "Electric Storm" then			
local master = isSummon(cid) and getCreatureMaster(cid) or cid
local function doFall(cid)
for rocks = 1, 42 do
   addEvent(fall, rocks*35, cid, master, ELECTRICDAMAGE, 41, 48)
end
end
for up = 1, 10 do
   addEvent(upEffect, up*75, cid, 41)
end
addEvent(doFall, 450, cid)
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 48
ret.spell = spell
ret.cond = "Stun"
addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ELECTRICDAMAGE, min, max, spell, ret)
elseif spell == "Mud Shot" or spell == "Mud Slap" then
local contudion = spell == "Mud Shot" and "Miss" or "Stun"												  
local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 34
ret.check = getPlayerStorageValue(target, conds[contudion])
ret.spell = spell
ret.cond = contudion
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)
addEvent(doDanoWithProtect, 100, cid, GROUNDDAMAGE, getThingPosWithDebug(target), 0, min, max, 34)
addEvent(doCondition2, 100, ret)

elseif spell == "Rollout" then
local outfits = {
["Voltorb"] = {lookType = 638},
["Electrode"] = {lookType = 637},
["Sandshrew"] = {lookType = 635},
["Sandslash"] = {lookType = 636},
["Phanpy"] = {lookType = 1005},
["Donphan"] = {lookType = 1456},
["Miltank"] = {lookType = 1006},
["Golem"] = {lookType = 639},
["Shiny Electrode"] = {lookType = 1387},
["Shiny Golem"] = {lookType = 1403},
["Shiny Voltorb"] = {lookType = 1388}
}
   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)
		 end
	  end
   end

if outfits[getCreatureName(cid)] then
 doSetCreatureOutfit(cid, outfits[getCreatureName(cid)], -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 outfits[getCreatureName(cid)] then
	  doSetCreatureOutfit(cid, outfits[getCreatureName(cid)], -1)
   end
   doDanoWithProtect(cid, ROCKDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)
   end
   setPlayerStorageValue(cid, 3644587, 1)
   addEvent(setPlayerStorageValue, 9000, cid, 3644587, -1)
   for r = 1, 11 do  --8
    addEvent(roll, 750 * r, cid, outfit)
   end
   addEvent(setOutfit, 9050, cid, outfit)

elseif spell == "Shockwave" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area, areaEff, eff)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end											 --testar o atk!!
  doAreaCombatHealth(cid, GROUNDDAMAGE, areaEff, 0, 0, 0, eff)   
  doAreaCombatHealth(cid, GROUNDDAMAGE, area, whirl3, -min, -max, 255)	
end
end
for a = 0, 5 do
local t = {
[0] = {126, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}},		  
[1] = {124, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+1), y=p.y+1, z=p.z}},
[2] = {125, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+1), z=p.z}},
[3] = {123, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}}
}  
addEvent(sendAtk, 325*a, cid, t[d][2], t[d][3], t[d][1])
end						 

elseif spell == "Earthshock" then
local eff = getCreatureName(cid) == "Shiny Onix" and 179 or 127
doAreaCombatHealth(cid, GROUNDDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)
local sps = getThingPosWithDebug(cid)
sps.x = sps.x+1
sps.y = sps.y+1
doSendMagicEffect(sps, eff)

elseif spell == "Earthquake" then
local eff = getCreatureName(cid) == "Shiny Onix" and 175 or 118

local function doQuake(cid)
if not isCreature(cid) then return false end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
  doMoveInArea2(cid, eff, confusion, GROUNDDAMAGE, min, max, spell)
end
times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}
setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)
for i = 1, #times do				   --alterado v1.4
   addEvent(doQuake, times[i], cid)
end


elseif spell == "Stomp" then

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

   doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret)

elseif spell == "Toxic Spikes" then

   local function doToxic(cid, target)
   if not isCreature(cid) or not isCreature(target) then return true end
   if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
   if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
	  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
	  doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 114)
   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
   if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
   if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
	  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 25)
	  doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 3)
   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" 

   doCondition2(ret)

elseif spell == "Sing" then
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -6, -10, 33)

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

elseif spell == "Metronome" then
local spells = {"Shadow Storm", "Electric Storm", "Magma Storm", "Blizzard", "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 == "Focus" or spell == "Charge" or spell == "Swords Dance" then
											    --alterado v1.4
   if spell == "Charge" then
	  doSendAnimatedText(getThingPosWithDebug(cid), "CHARGE", 168)
	  doSendMagicEffect(getThingPosWithDebug(cid), 177)
   elseif spell == "Swords Dance" then
	   doSendMagicEffect(getThingPosWithDebug(cid), 132)
   else
	   doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144)
	   doSendMagicEffect(getThingPosWithDebug(cid), 132)
   end
   setPlayerStorageValue(cid, 253, 1)

elseif spell == "Flame Wheel" then
   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 == "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 == "Toxic" then
 doMoveInArea2(cid, 114, reto5, POISONDAMAGE, min, max, spell)

elseif spell == "Absorb" then
local life = getCreatureHealth(target)
doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)

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

elseif spell == "Poison Bomb" then
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 14)
   doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 20, bombWee2)
elseif spell == "Poison Gas" then
local dmg = isSummon(cid) and getMasterLevel(cid)+getPokemonBoost(cid) or getPokemonLevel(cid)
local ret = {id = 0, cd = 13, eff = 34, check = 0, spell = spell, cond = "Miss"}
local ret2 = {id = 0, cd = 13, check = 0, damage = dmg, cond = "Poison"}						  --rever isso ainda!!

local function gas(cid)
	   doMoveInArea2(cid, 114, confusion, POISONDAMAGE, 0, 0, spell, ret)
 doMoveInArea2(cid, 0, confusion, POISONDAMAGE, min, max, spell)
end

times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}
for i = 1, #times do
   addEvent(gas, times[i], cid)						   
end

elseif spell == "Petal Dance" then
   doMoveInAreaMulti(cid, 21, 245, bullet, bulletDano, GRASSDAMAGE, min, max)

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

elseif spell == "X-Scissor" then
local a = getThingPosWithDebug(cid)

local X = {
{{x = a.x+1, y = a.y, z = a.z}, 16}, --norte
{{x = a.x+2, y = a.y+1, z = a.z}, 221}, --leste
{{x = a.x+1, y = a.y+2, z = a.z}, 223}, --sul
{{x = a.x, y = a.y+1, z = a.z}, 243}, --oeste
}
local pos = X[mydir+1]
for b = 1, 3 do
   addEvent(doSendMagicEffect, b * 70, pos[1], pos[2])
end

doMoveInArea2(cid, 2, xScissor, BUGDAMAGE, min, max, spell)

elseif spell == "Psychic" then

doDanoWithProtect(cid, psyDmg, getThingPosWithDebug(cid), selfArea2, min, max, 133)	

elseif spell == "Pay Day" then

    local function doThunderHit(cid, target)
  if not isCreature(target) or 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
	 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 28)
 end
 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(doThunderHit, ry * 11, cid, target)
 end
 local function doThunderUp(cid, target)
  if not isCreature(target) or not isCreature(cid) then return true end
 local pos = getThingPosWithDebug(target)
 local mps = getThingPosWithDebug(cid)
 local xrg = math.floor((pos.x - mps.x) / 2)
 local topos = mps
 topos.x = topos.x + xrg
 local rd =  7
 topos.y = topos.y - rd
 doSendDistanceShoot(getThingPosWithDebug(cid), topos, 39)
 addEvent(doThunderFall, rd * 49, cid, topos, target)
 end 
   setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)		 
   for thnds = 1, 2 do
 addEvent(doThunderUp, thnds * 155, cid, target)
end

elseif spell == "Psywave" then
doMoveInArea2(cid, 133, db1, psyDmg, min, max, spell)	 
elseif spell == "Triple Kick" or spell == "Triple Kick Lee" then
doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 110)

elseif spell == "Karate Chop" then

   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 113)

elseif spell == "Ground Chop" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area, eff)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, FIGHTINGDAMAGE, area, 0, 0, 0, eff)   
  doAreaCombatHealth(cid, FIGHTINGDAMAGE, area, whirl3, -min, -max, 255)	
end
end
for a = 0, 4 do
local t = {
[0] = {99, {x=p.x+1, y=p.y-(a+1), z=p.z}},		   --alterado v1.5
[1] = {99, {x=p.x+(a+2), y=p.y+1, z=p.z}},
[2] = {99, {x=p.x+1, y=p.y+(a+2), z=p.z}},
[3] = {99, {x=p.x-(a+1), y=p.y+1, z=p.z}}
}  
addEvent(sendAtk, 270*a, cid, t[d][2], t[d][1])
end	 

elseif spell == "Mega Punch" then
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 112)

elseif spell == "Tri Flames" then
   doMoveInArea2(cid, 6, triflames, FIREDAMAGE, min, max, spell)

elseif spell == "War Dog" then
  local ret = {}
  ret.id = cid
  ret.cd = 15
  ret.eff = 28
  ret.check = 0
  ret.buff = spell
  ret.first = true

  doCondition2(ret)

elseif spell == "Hypnosis" then
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 24)
  doDanoWithProtectWithDelay(cid, target, SLEEP_POWDERDAMAGE, -5, -9, 0)
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)
  doCondition2(ret)
elseif spell == "Ice Punch" then

local ret = {}
ret.id = target
ret.cd = 9
ret.eff = 43
ret.check = getPlayerStorageValue(target, conds["Slow"])
ret.first = true
ret.cond = "Slow"
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28)
   doSendMagicEffect(getThingPosWithDebug(target), 112)
   doDanoWithProtectWithDelay(cid, target, ICEDAMAGE, min, max, 43)
   doCondition2(ret)

elseif spell == "Ice Beam" then
local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {97, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {96, {x=p.x+6, y=p.y+1, z=p.z}},
[2] = {97, {x=p.x+1, y=p.y+6, z=p.z}},
[3] = {96, {x=p.x-1, y=p.y+1, z=p.z}},
}
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"
doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret)
doSendMagicEffect(t[a][2], t[a][1])


elseif spell == "Psy Pulse" or spell == "Cyber Pulse" or spell == "Dark Pulse" then
damage = skill == "Dark Pulse" and DARKDAMAGE or psyDmg
local function doPulse(cid, eff)
if not isCreature(cid) then return true end
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
  doDanoWithProtectWithDelay(cid, target, damage, -min, -max, eff)	  --alterado v1.4
end
  if spell == "Cyber Pulse" then
  eff = 11
  elseif spell == "Dark Pulse" then
  eff = 47  --efeito n eh esse mas... ;p
  else
  eff = 133
  end
  addEvent(doPulse, 0, cid, eff)			   
  addEvent(doPulse, 250, cid, eff)

elseif spell == "Psyusion" then
   local rounds = math.random(4, 7)
   rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
   local eff = {136, 133, 136, 133, 137}
   local area = {psy1, psy2, psy3, psy4, psy5}
   local ret = {}
   ret.id = 0
   ret.check = 0
   ret.cd = rounds
   ret.cond = "Confusion"
   setPlayerStorageValue(cid, 3644587, 1)
   addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1)
   for i = 0, 4 do
	   addEvent(doMoveInArea2, i*400, cid, eff[i+1], area[i+1], psyDmg, min, max, spell, ret)
   end

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

elseif spell == "Fist Machine" then
local mpos = getThingPosWithDebug(cid)
local b = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local effect = 0
local xvar = 0
local yvar = 0
if b == SOUTH then
 effect = 218
 yvar = 2
elseif b == NORTH then
 effect = 217
elseif b == WEST then
 effect = 216
elseif b == EAST then
 effect = 215
 xvar = 2
end
mpos.x = mpos.x + xvar
mpos.y = mpos.y + yvar		
doSendMagicEffect(mpos, effect)
doMoveInArea2(cid, 0, machine, FIGHTINGDAMAGE, min, max, spell)

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

elseif spell == "Rock Throw" then
local effD = getCreatureName(cid) == "Shiny Onix" and 0 or 11
local eff = getCreatureName(cid) == "Shiny Onix" and 176 or 44
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), effD)
doDanoWithProtectWithDelay(cid, target, ROCKDAMAGE, min, max, eff)

elseif spell == "Rock Slide" or spell == "Stone Edge" then
atk = {
["Rock Slide"] = {11, 44, 0, 176},
["Stone Edge"] = {11, 239}
}						 
local effD = getCreatureName(cid) == "Shiny Onix" and atk[spell][3] or atk[spell][1]
local eff = getCreatureName(cid) == "Shiny Onix" and atk[spell][4] or atk[spell][2]
 local function doRockHit(cid, target)
    if not isCreature(target) or 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
 doAreaCombatHealth(cid, ROCKDAMAGE, getThingPosWithDebug(target), 0, -min, -max, eff)
 end
 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(doRockHit, ry * 11, cid, target)
 end
 local function doRockUp(cid, target)
  if not isCreature(target) or not isCreature(cid) then return true end
 local pos = getThingPosWithDebug(target)
 local mps = getThingPosWithDebug(cid)
 local xrg = math.floor((pos.x - mps.x) / 2)
 local topos = mps
 topos.x = topos.x + xrg
 local rd =  7
 topos.y = topos.y - rd
 doSendDistanceShoot(getThingPosWithDebug(cid), topos, effD)
 addEvent(doRockFall, rd * 49, cid, topos, target)
 end 
   setPlayerStorageValue(cid, 3644587, 1)
   addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
for thnds = 1, 2 do
 addEvent(doRockUp, thnds * 155, cid, target)
end

elseif spell == "Falling Rocks" then
local effD = getCreatureName(cid) == "Shiny Onix" and 0 or 11
local eff = getCreatureName(cid) == "Shiny Onix" and 176 or 44
local master = isSummon(cid) and getCreatureMaster(cid) or cid
------------
local function doFall(cid)
for rocks = 1, 62 do
   addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff)
end
end
for up = 1, 10 do														   
   addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, ROCKDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)
elseif spell == "Selfdestruct" then

 local function death(cid)
  if isCreature(cid) then
  if pokes[getCreatureName(cid)].type == "psychic" or pokes[getCreatureName(cid)].type2 == "psychic" then return true end
  doCreatureAddHealth(cid, -getCreatureMaxHealth(cid))
  end
 end
    doMoveInArea2(cid, 5, selfArea1, NORMALDAMAGE, 0, 0, spell)

    local life = getCreatureHealth(cid)
    local uid = checkAreaUid(getThingPosWithDebug(cid), selfArea1, 1, 1)
    for _,pid in pairs(uid) do
	    if isCreature(pid) then								   --alterado!
		   if (getCreatureHealth(pid)-life) <= 0 then
			  dano = getCreatureHealth(pid)
		   else
			  dano = life
		   end
		   if isSummon(cid) and canDoSelf and pid ~= cid then
			  if isSummon(pid) then
				 if canAttackOther(cid, pid) == "Cant" then
				 else
				    doSendAnimatedText(getThingPosWithDebug(pid), "-"..dano.."", COLOR_NORMAL)
				    doCreatureAddHealth(pid, -dano)
				 end
			  elseif ehMonstro(pid) then
				 doSendAnimatedText(getThingPosWithDebug(pid), "-"..dano.."", COLOR_NORMAL)
				 doCreatureAddHealth(pid, -dano)
			  elseif isPlayer(pid) and #getCreatureSummons(pid) <= 0 and canAttackOther(cid, pid) == "Can" then
				 doSendAnimatedText(getThingPosWithDebug(pid), "-"..dano.."", COLOR_NORMAL)
				 doCreatureAddHealth(pid, -dano)
			  end
		   elseif ehMonstro(cid) and canDoSelf and pid ~= cid then
			  if isSummon(pid) then
				 doSendAnimatedText(getThingPosWithDebug(pid), "-"..dano.."", COLOR_NORMAL)  --144
				 doCreatureAddHealth(pid, -dano)
			  elseif isPlayer(pid) and #getCreatureSummons(pid) <= 0 then
				 doSendAnimatedText(getThingPosWithDebug(pid), "-"..dano.."", COLOR_NORMAL)  --144
				 doCreatureAddHealth(pid, -dano)
			  end
		   end
	    end
    end

 addEvent(death, 300, cid)

elseif spell == "Crusher Stomp" then

local pL = getThingPosWithDebug(cid)
pL.x = pL.x+5
pL.y = pL.y+1
-----------------
local pO = getThingPosWithDebug(cid)
pO.x = pO.x-3
pO.y = pO.y+1
------------------
local pN = getThingPosWithDebug(cid)
pN.x = pN.x+1
pN.y = pN.y+5
-----------------
local pS = getThingPosWithDebug(cid)
pS.x = pS.x+1
pS.y = pS.y-3
local po = {pL, pO, pN, pS}
local po2 = {
{x = pL.x, y = pL.y-1, z = pL.z},
{x = pO.x, y = pO.y-1, z = pO.z},
{x = pN.x-1, y = pN.y, z = pN.z},
{x = pS.x-1, y = pS.y, z = pS.z},
}
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 34
ret.spell = spell
ret.cond = "Stun"
for i = 1, 4 do
   doSendMagicEffect(po[i], 127)
   doAreaCombatHealth(cid, GROUNDDAMAGE, po2[i], crusher, -min, -max, 255)
end
doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret) 
elseif spell == "Water Pulse" then
   doMoveInArea2(cid, 68, reto5, WATERDAMAGE, min, max, spell)

elseif spell == "Sonicboom" then
local function doBoom(cid)
if not isCreature(cid) then return true end
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 33)
  doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 3)
end
  addEvent(doBoom, 0, cid)
  addEvent(doBoom, 250, cid)

elseif spell == "Stickmerang" then  
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 34)
  doDanoWithProtectWithDelay(cid, target, FLYINGDAMAGE, min, max, 212)
elseif spell == "Stickslash" then
   local function sendStickEff(cid, dir)
   if not isCreature(cid) then return true end
   doAreaCombatHealth(cid, FLYINGDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 212)
end
local function doStick(cid)
if not isCreature(cid) then return true end
local t = {
   [1] = SOUTHWEST,
   [2] = SOUTH,
   [3] = SOUTHEAST,
   [4] = EAST,
   [5] = NORTHEAST,
   [6] = NORTH,
   [7] = NORTHWEST,
   [8] = WEST,
   [9] = SOUTHWEST,
 }
 for a = 1, 9 do
	    addEvent(sendStickEff, a * 140, cid, t[a])
 end
end
doStick(cid, false, cid)

elseif spell == "Stick Throw" then
  stopNow(cid, 2000)
  doMoveInArea2(cid, 212, reto4, FLYINGDAMAGE, min, max, spell)

elseif spell == "Pluck" then
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
  doDanoWithProtectWithDelay(cid, target, FLYINGDAMAGE, min, max, 111)
elseif spell == "Tri-Attack" then
local function doTriAtk(cid, target)
   if not isCreature(cid) or not isCreature(target) then return true end   --alterado v1.3
   if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
   if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end			 --alterado!!
   doTargetCombatHealth(cid, target, NORMALDAMAGE, -min, -max, 238)
  end

  setPlayerStorageValue(cid, 3644587, 1)
  addEvent(setPlayerStorageValue, 600, cid, 3644587, -1)
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
  for i = 0, 2 do
   addEvent(doTriAtk, i*300, cid, target)	  --alterado v1.3
  end

elseif spell == "Fury Attack" then
   local function doFuryAtk(cid, target)
   if not isCreature(cid) or not isCreature(target) then return true end   --alterado v1.3
   if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
   if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end			 --alterado!!
   doTargetCombatHealth(cid, target, NORMALDAMAGE, -min, -max, 110)
   end

   setPlayerStorageValue(cid, 3644587, 1)
   addEvent(setPlayerStorageValue, 600, cid, 3644587, -1)
   for i = 0, 2 do
   addEvent(doFuryAtk, i*300, cid, target)
   end 

elseif spell == "Ice Shards" then
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28)
   doDanoWithProtectWithDelay(cid, target, ICEDAMAGE, min, max, 43)

elseif spell == "Icy Wind" then				  
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"

 doMoveInArea2(cid, 17, tw1, ICEDAMAGE, min, max, spell, ret)

elseif spell == "Aurora Beam" then
local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
local p = getThingPosWithDebug(cid)
local t = {
[0] = {186, {x=p.x+1, y=p.y-1, z=p.z}},
[1] = {187, {x=p.x+6, y=p.y+1, z=p.z}},
[2] = {186, {x=p.x+1, y=p.y+6, z=p.z}},
[3] = {187, {x=p.x-1, y=p.y+1, z=p.z}},
}
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"
doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret)
doSendMagicEffect(t[a][2], t[a][1])
elseif spell == "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
    local function doSludgeHit(cid, target)
    if not isCreature(target) or 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
 doAreaCombatHealth(cid, POISONDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 116)
 end
 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(doSludgeHit, ry * 11, cid, target)
 end
 local function doSludgeUp(cid, target)
  if not isCreature(target) or not isCreature(cid) then return true end
 local pos = getThingPosWithDebug(target)
 local mps = getThingPosWithDebug(cid)
 local xrg = math.floor((pos.x - mps.x) / 2)
 local topos = mps
 topos.x = topos.x + xrg
 local rd =  7
 topos.y = topos.y - rd
 doSendDistanceShoot(getThingPosWithDebug(cid), topos, 6)
 addEvent(doSludgeFall, rd * 49, cid, topos, target)
 end 
   setPlayerStorageValue(cid, 3644587, 1)
   addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
for thnds = 1, 2 do
 addEvent(doSludgeUp, thnds * 155, cid, target)
end											   --alterado v1.5
elseif spell == "Mud Bomb" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)
  doDanoWithProtectWithDelay(cid, target, GROUNDDAMAGE, min, max, 116, bombWee2)
  doMoveInArea2(cid, 0, bombWee1, GROUNDDAMAGE, 0, 0, spell, ret)
  ret.id = target
  ret.check = getPlayerStorageValue(target, conds["Miss"])			  --ver isso aki..
  doCondition2(ret)
elseif spell == "Mortal Gas" then
   local pos = getThingPosWithDebug(cid)
local function doSendAcid(cid, pos)
 if not isCreature(cid) then return true end
 doSendDistanceShoot(getThingPosWithDebug(cid), pos, 14)
 doSendMagicEffect(pos, 114)
end

for b = 1, 3 do
 for a = 1, 20 do
  local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
  addEvent(doSendAcid, a * 75, cid, lugar)
 end
end
doDanoWithProtect(cid, POISONDAMAGE, pos, waterarea, -min, -max, 0)

elseif spell == "Rock Drill" or spell == "Megahorn" or spell == "Rock Blast" then
damage = spell == "Megahorn" and BUGDAMAGE or ROCKDAMAGE
eff = spell == "Megahorn" and 8 or 44
effD = spell == "Rock Blast" and 11 or 25					
		    --cid, effDist, effDano, areaEff, areaDano, element, min, max
doMoveInAreaMulti(cid, effD, eff, bullet, bulletDano, damage, min, max)
elseif spell == "Egg Bomb" then
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 12)
doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 5, crusher)

elseif spell == "Super Vines" then
   doCreatureSetLookDir(cid, 2)
stopNow(cid, 200)
local effect = 0
local pos = getThingPosWithDebug(cid)
pos.x = pos.x + 1
pos.y = pos.y + 1
if getCreatureOutfit(cid).lookType == 369 then
 effect = 213
else
 effect = 229
end
doSendMagicEffect(pos, effect)
doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)

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

elseif spell == "Bubblebeam" then
local function sendBubbles(cid)
if not isCreature(cid) or not isCreature(target) then return true end
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
  doDanoWithProtectWithDelay(cid, target, WATERDAMAGE, min, max, 25)
end
sendBubbles(cid)
addEvent(sendBubbles, 250, cid)
elseif  spell == "Swift" then
local function sendSwift(cid, target)
if not isCreature(cid) or not isCreature(target) then return true end
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
  doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 3)
end
addEvent(sendSwift, 100, cid, target)
addEvent(sendSwift, 200, cid, target)
elseif spell == "Spark" then

  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
  doDanoWithProtectWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48)

elseif  spell == "Mimic Wall" then
local p = getThingPosWithDebug(cid)
local dirr = getCreatureLookDir(cid)
if dirr == 0 or dirr == 2 then
  item = 11439
else
  item = 11440
end
local wall = {
[0] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}},
[2] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}},
[1] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}},
[3] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}},
}
function removeAllActionIDs(pos, onlyOne)
if onlyOne then
   local thing1 = {x=pos.x,y=pos.y,z=pos.z,stackpos=0}
   local tile1 = getTileThingWithProtect(thing1).uid
   doSetItemActionId(tile1, 0)
end 
n = 0
for i = 1, #pos do
   n = n + 1
   thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=0}
   local tile = getTileThingWithProtect(thing).uid
   doSetItemActionId(tile, 0)
end
end  

for i = 1, 3 do
   if wall[dirr] then
   local t = wall[dirr]
   if hasTile(t[i]) and canWalkOnPos(t[i], true, true, true, true, false) then
	  doCreateItem(item, 1, t[i])
	  --
	  local Tile = getTileThingWithProtect({x=t[i].x,y=t[i].y,z=t[i].z,stackpos=0})
	  doSetItemActionId(Tile.uid, 88072)
	  addEvent(removeAllActionIDs, 15000, t[i], true)
	  --
	  addEvent(doRemoveItemFromPos, 15000, t[i], item, 1)
   end
   end
end
local pos = getPosfromArea(cid, wall_1)
local pos2 = getPosfromArea(cid, wall_2)
if hasTile({x=p.x,y=p.y,z=p.z,stackpos=0}) then
  tile0 = getTileThingWithProtect({x=p.x,y=p.y,z=p.z,stackpos=0}).uid
end
doSetItemActionId(tile0, 88070)
addEvent(removeAllActionIDs, 15000, p, true)
n = 0
while n < #pos do
  if not isCreature(cid) then return true end
  n = n+1
  local tile1 = getTileThingWithProtect({x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=0}).uid
  ---
  local tile2 = getTileThingWithProtect({x=pos2[n].x,y=pos2[n].y,z=pos2[n].z,stackpos=0}).uid

  doSetItemActionId(tile1, 88071)
  doSetItemActionId(tile2, 88070)
end
addEvent(removeAllActionIDs, 15000, pos)
addEvent(removeAllActionIDs, 15000, pos2)  

elseif spell == "Shredder Team" then
local team = {
["Scyther"] = "ScytherTeam",
["Shiny Scyther"] = "Shiny ScytherTeam",
["Scizor"] = "ScizorTeam",
}
local function setStorage(cid, storage)
if isCreature(cid) then
  if getPlayerStorageValue(cid, storage) >= 1 then
  setPlayerStorageValue(cid, storage, 0)
  end
end
end
local function RemoveTeam(cid)
if isCreature(cid) then
 doSendMagicEffect(getThingPosWithDebug(cid), 211)
 doRemoveCreature(cid)
end
end
if getPlayerStorageValue(cid, 637500) >= 1 then
return true
end
local master = getCreatureMaster(cid)
local item = getPlayerSlotItem(master, 8)
local life, maxLife = getCreatureHealth(cid), getCreatureMaxHealth(cid)
local name = getItemAttribute(item.uid, "poke")
local pos = getThingPosWithDebug(cid)
local time = 21
local pokelife = (getCreatureHealth(cid) / getCreatureMaxHealth(cid))
doItemSetAttribute(item.uid, "hp", pokelife)
local random = math.random(5, 10)
doDisapear(cid)
doTeleportThing(cid, {x=4, y=3, z=10}, false)
addEvent(doTeleportThing, random, cid, pos, false)
addEvent(doAppear, random, cid)
if team[name] then
local num = getCreatureName(cid) == "Scizor" and 4 or 3
  for b = 2, num do
   doSummonMonster(master, team[name])
  end
  pk1 = getCreatureSummons(master)[1]
  pk2 = getCreatureSummons(master)[2]
  pk3 = getCreatureSummons(master)[3]
  if getCreatureName(cid) == "Scizor" then
  pk4 = getCreatureSummons(master)[4]
  end
  for a = 1, num do
  local pk = {[1] = pk1, [2] = pk2, [3] = pk3, [4] = pk4}
  doTeleportThing(pk[a], getClosestFreeTile(pk[a], pos), false)
  adjustStatus(pk[a], item.uid, true, true, true)
  doSendMagicEffect(getThingPosWithDebug(pk[a]), 211)
  end
  setPlayerStorageValue(pk2, 637500, 1)
  setPlayerStorageValue(pk3, 637500, 1)
  if getCreatureName(cid) == "Scizor" then
	 setPlayerStorageValue(pk4, 637500, 1)
  end
  setPlayerStorageValue(master, 637501, 1)
  addEvent(setStorage, time * 1000, master, 637501)
  addEvent(RemoveTeam, time * 1000, pk2)
  addEvent(RemoveTeam, time * 1000, pk3)
  if getCreatureName(cid) == "Scizor" then
	 addEvent(RemoveTeam, time * 1000, pk4)
  end
end

elseif spell == "Team Slice" or spell == "Team Claw" then
local master = getCreatureMaster(cid)
if #getCreatureSummons(master) < 2 or not isCreature(target) then return true end
local summons = getCreatureSummons(master)
local posis = {[1] = pos1, [2] = pos2, [3] = pos3, [4] = pos4}
if getCreatureName(cid) == "Scyther" then
eff = 27
elseif getCreatureName(cid) == "Shiny Scyther" then
eff = 29
else
eff = 42  --alterado v1.5
end
  if #getCreatureSummons(master) >= 2 and isCreature(target) then
  if isCreature(cid) then
	 addEvent(doTargetCombatHealth, 500, cid, target, BUGDAMAGE, -min, -max, 255)
	 for i = 1, #summons do
		 posis[i] = getThingPosWithDebug(summons[i])
		 doDisapear(summons[i])
		 stopNow(summons[i], 670)
		 addEvent(doSendMagicEffect, 300, posis[i], 211)
		 addEvent(doSendDistanceShoot, 350, posis[i], getThingPosWithDebug(target), eff)
		 addEvent(doSendDistanceShoot, 450, getThingPosWithDebug(target), posis[i], eff)
		 addEvent(doSendDistanceShoot, 600, posis[i], getThingPosWithDebug(target), eff)
		 addEvent(doSendDistanceShoot, 650, getThingPosWithDebug(target), posis[i], eff)
		 addEvent(doAppear, 670, summons[i])
	 end
  end
   end

elseif spell == "Blizzard" then
local master = isSummon(cid) and getCreatureMaster(cid) or cid
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 43
ret.check = 0
ret.first = true
ret.cond = "Slow"
local function doFall(cid)
for rocks = 1, 42 do
   addEvent(fall, rocks*35, cid, master, ICEDAMAGE, 28, 52)
end
end
for up = 1, 10 do
   addEvent(upEffect, up*75, cid, 28)
end										 --alterado v1.4
addEvent(doFall, 450, cid)
addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ICEDAMAGE, min, max, spell, ret)
elseif spell == "Great Love" then
local master = getCreatureMaster(cid) or 0
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 147
ret.check = 0
ret.spell = spell
ret.cond = "Stun"

for rocks = 1, 62 do
   addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 147)
end
addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)
elseif spell == "Fire Punch" then
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
   doSendMagicEffect(getThingPosWithDebug(target), 112)
   doDanoWithProtectWithDelay(cid, target, FIREDAMAGE, min, max, 35)

elseif spell == "Guillotine" then
doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 146)
elseif spell ==  "Hyper Beam" then
local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
if a == 0 then
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg1n, -min, -max, 152)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg2n, -min, -max, 158)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg3n, -min, -max, 156)
elseif a == 2 then
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg1s, -min, -max, 151)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg2s, -min, -max, 158)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg3s, -min, -max, 155)
elseif a == 1 then
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg1e, -min, -max, 149)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg2e, -min, -max, 157)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg3e, -min, -max, 153)
elseif a == 3 then
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg1w, -min, -max, 150)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg2w, -min, -max, 157)
 doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), wg3w, -min, -max, 154)
end

elseif spell == "Thrash" then
		    --cid, effDist, effDano, areaEff, areaDano, element, min, max
doMoveInAreaMulti(cid, 10, 111, bullet, bulletDano, NORMALDAMAGE, min, max)
elseif spell == "Splash" or tonumber(spell) == 7 then
doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)
doSendMagicEffect(getThingPosWithDebug(cid), 53)

elseif spell == "Dragon Breath" then	
   doMoveInArea2(cid, 143, db1, DRAGONDAMAGE, min, max, spell)

elseif spell == "Muddy Water" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
  doMoveInArea2(cid, 116, muddy, WATERDAMAGE, min, max, spell, ret)


elseif spell == "Venom Motion" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
  doMoveInArea2(cid, 114, muddy, POISONDAMAGE, min, max, spell, ret)

elseif spell == "Thunder Fang" then
doSendMagicEffect(getThingPosWithDebug(target), 146)
   doDanoWithProtectWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48)

elseif spell == "Zap Cannon" then
 local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

   if a == 0 then
    doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1n, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2n, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3n, 0, 0, 177)
    --------
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1n, -min, -max, 94)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2n, -min, -max, 93)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3n, -min, -max, 95)
elseif a == 2 then
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1s, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2s, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3s, 0, 0, 177)
 --------
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1s, -min, -max, 91)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2s, -min, -max, 93)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3s, -min, -max, 92)
elseif a == 1 then
    doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1e, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2e, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3e, 0, 0, 177)
 ---------
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1e, -min, -max, 86)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2e, -min, -max, 88)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3e, -min, -max, 87)
elseif a == 3 then
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1w, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2w, 0, 0, 177)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3w, 0, 0, 177)
 --------
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1w, -min, -max, 89)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2w, -min, -max, 88)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3w, -min, -max, 90)
end

elseif spell == "Charge Beam" then
   local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)

   if a == 0 then
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1n, -min, -max, 94)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2n, -min, -max, 93)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3n, -min, -max, 95)
elseif a == 2 then
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1s, -min, -max, 91)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2s, -min, -max, 93)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3s, -min, -max, 92)
elseif a == 1 then
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1e, -min, -max, 86)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2e, -min, -max, 88)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3e, -min, -max, 87)
elseif a == 3 then
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg1w, -min, -max, 89)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg2w, -min, -max, 88)
 doAreaCombatHealth(cid, ELECTRICDAMAGE, getThingPosWithDebug(cid), wg3w, -min, -max, 90)
end 

elseif spell == "Sacred Fire" then
 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
 doDanoWithProtectWithDelay(cid, target, FIREDAMAGE, min, max, 143, sacred)		  

elseif spell == "Blaze Kick" then
doMoveInArea2(cid, 6, blaze, FIREDAMAGE, min, max, spell)
addEvent(doMoveInArea2, 200, cid, 6, kick, FIREDAMAGE, min, max, spell)
elseif spell == "Cross Chop" then
doMoveInArea2(cid, 118, blaze, FIGHTINGDAMAGE, min, max, spell)
addEvent(doMoveInArea2, 200, cid, 118, kick, FIGHTINGDAMAGE, min, max, spell)
elseif spell == "Overheat" then
  doMoveInArea2(cid, 5, reto5, FIREDAMAGE, min, max, spell)

elseif spell == "Ancient Power" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area, eff)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, ROCKDAMAGE, area, 0, 0, 0, eff)
  doAreaCombatHealth(cid, ROCKDAMAGE, area, whirl3, -min, -max, 137)
end
end
for a = 0, 4 do
local t = {
[0] = {18, {x=p.x, y=p.y-(a+1), z=p.z}},		   --alterado v1.4
[1] = {18, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {18, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {18, {x=p.x-(a+1), y=p.y, z=p.z}}
}  
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
end

elseif spell == "Twister" then
doMoveInAreaMulti(cid, 28, 41, bullet, bulletDano, DRAGONDAMAGE, min, max)
elseif spell == "Multi-Kick" then
doMoveInAreaMulti(cid, 39, 113, multi, multiDano, FIGHTINGDAMAGE, min, max)
elseif spell == "Multi-Punch" then
doMoveInAreaMulti(cid, 39, 112, multi, multiDano, FIGHTINGDAMAGE, min, max)
elseif spell == "Squisky Licking" then

local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 0
ret.spell = spell
ret.cond = "Stun"
local areas = {SL1, SL2, SL3, SL4}
for i = 0, 3 do
   addEvent(doMoveInArea2, i*200, cid, 145, areas[i+1], NORMALDAMAGE, min, max, spell, ret)
end
elseif spell == "Lick" then
local ret = {}
ret.id = target
ret.cd = 9
ret.check = getPlayerStorageValue(target, conds["Stun"])
ret.eff = 0
ret.spell = spell
ret.cond = "Stun"
  doSendMagicEffect(getThingPosWithDebug(target), 145)	  --alterado v1.4!
  addEvent(doCondition2, 100, ret)
elseif spell == "Bonemerang" then
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7)
  doDanoWithProtectWithDelay(cid, target, GROUNDDAMAGE, min, max, 227)
  addEvent(doSendDistanceShoot, 200, getThingPosWithDebug(target), getThingPosWithDebug(cid), 7)
elseif spell == "Bone Club" then
 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7)
 doDanoWithProtectWithDelay(cid, target, GROUNDDAMAGE, min, max, 118)

elseif spell == "Bone Slash" then
local function sendStickEff(cid, dir)
   if not isCreature(cid) then return true end
   doAreaCombatHealth(cid, GROUNDDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 227)
end
local function doStick(cid)
if not isCreature(cid) then return true end
local t = {
   [1] = SOUTHWEST,
   [2] = SOUTH,
   [3] = SOUTHEAST,
   [4] = EAST,
   [5] = NORTHEAST,
   [6] = NORTH,
   [7] = NORTHWEST,
   [8] = WEST,
   [9] = SOUTHWEST,
 }
 for a = 1, 9 do
	    addEvent(sendStickEff, a * 140, cid, t[a])
 end
end
doStick(cid, false, cid)
																	    --alterado v1.4
elseif spell == "Furious Legs" or spell == "Ultimate Champion" or spell == "Fighter Spirit" then
  local ret = {}
  ret.id = cid
  ret.cd = 15
  ret.eff = 13
  ret.check = 0
  ret.buff = spell
  ret.first = true

  doCondition2(ret)	 

elseif spell == "Sludge Rain" then
local master = isSummon(cid) and getCreatureMaster(cid) or cid
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
local function doFall(cid)
for rocks = 1, 42 do
   addEvent(fall, rocks*35, cid, master, POISONDAMAGE, 6, 116)
end
end
for up = 1, 10 do
   addEvent(upEffect, up*75, cid, 6)
end		

addEvent(doFall, 450, cid)
addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, POISONDAMAGE, min, max, spell, ret) 
elseif spell == "Shadow Ball" then
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 18)
   local function doDamageWithDelay(cid, target)
   if not isCreature(cid) or not isCreature(target) then return true end
   if isSleeping(cid) then return false end
   if getPlayerStorageValue(cid, conds["Fear"]) >= 1 then return true end
   doAreaCombatHealth(cid, ghostDmg, getThingPosWithDebug(target), 0, -min, -max, 255)
   local pos = getThingPosWithDebug(target)
   pos.x = pos.x + 1
   doSendMagicEffect(pos, 140)
end
addEvent(doDamageWithDelay, 100, cid, target)

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

elseif spell == "Shadow Storm" then
local master = isSummon(cid) and getCreatureMaster(cid) or cid
local function doFall(cid)
for rocks = 1, 42 do   --62
   addEvent(fall, rocks*35, cid, master, ghostDmg, 18, 140)
end
end
for up = 1, 10 do
   addEvent(upEffect, up*75, cid, 18)
end
addEvent(doFall, 450, cid)
addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, ghostDmg, min, max, spell)
elseif spell == "Invisible" then
doDisapear(cid)
doSendMagicEffect(getThingPosWithDebug(cid), 134)
if isMonster(cid) then
 local pos = getThingPosWithDebug(cid)						   --alterei!
 doTeleportThing(cid, {x=4, y=3, z=10}, false)
 doTeleportThing(cid, pos, false)
end
addEvent(doAppear, 4000, cid)

elseif spell == "Nightmare" then
   if not isSleeping(target) then
 doSendMagicEffect(getThingPosWithDebug(target), 3)
 doSendAnimatedText(getThingPosWithDebug(target), "FAIL", 155)
return true
end

doDanoWithProtectWithDelay(cid, target, ghostDmg, -min, -max, 138) 
elseif spell == "Dream Eater" then
if not isSleeping(target) then
 doSendMagicEffect(getThingPosWithDebug(target), 3)
 doSendAnimatedText(getThingPosWithDebug(target), "FAIL", 155)
return true
end
local a = getCreatureHealth(target)
doDanoWithProtect(cid, psyDmg, getThingPosWithDebug(target), 0, -min, -max, 138)   --alterado v1.4
local b = getCreatureHealth(target)
local c = a - b

local amount1 = c

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.."", 155)
   end
   end

doSendMagicEffect(getThingPosWithDebug(cid), 132)
doHealArea(cid, amount1, amount1)

elseif spell == "Dark Eye" or spell == "Miracle Eye" then
doSendMagicEffect(getThingPosWithDebug(cid), 47)
setPlayerStorageValue(cid, 999457, 1) 
elseif spell == "Elemental Hands" then
if getCreatureOutfit(cid).lookType == 1301 then
print("Error occurred with move 'Elemental Hands', outfit of hitmonchan is wrong")
doPlayerSendTextMessage(getCreatureMaster(cid), MESSAGE_STATUS_CONSOLE_BLUE, "A error are ocurred... A msg is sent to gamemasters!")
return true
end	    --proteçao pra n usar o move com o shiny hitmonchan com outfit diferente da do elite monchan do PO...
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
local hands = getItemAttribute(getPlayerSlotItem(e, 8).uid, "hands")
   if hands == 4 then
   doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", 0)
   doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][0].eff)
   doSetCreatureOutfit(cid, {lookType = hitmonchans[name][0].out}, -1)
   else
   doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", hands+1)
   doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][hands+1].eff)
   doSetCreatureOutfit(cid, {lookType = hitmonchans[name][hands+1].out}, -1)
   end

elseif spell == "Crabhammer" then
doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 225)
elseif spell == "Ancient Fury" then
  local ret = {}
  ret.id = cid
  ret.cd = 15
  ret.eff = 0
  ret.check = 0
  ret.buff = spell
  ret.first = true

  doCondition2(ret)

elseif spell == "Divine Punishment" then
local roardirections = {		   
[NORTH] = {SOUTH},
[sOUTH] = {NORTH},
[WEST] = {EAST},
[EAST] = {WEST}}
local function divineBack(cid)
if not isCreature(cid) then return true end
local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1)
  for _,pid in pairs(uid) do
	  dirrr = getCreatureDirectionToTarget(pid, cid)
	  delay = getNextStepDelay(pid, 0)
	  if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then
		 setPlayerStorageValue(pid, 654878, 1)
		 doChangeSpeed(pid, -getCreatureSpeed(pid))
		 doChangeSpeed(pid, 100)
   doPushCreature(pid, roardirections[dirrr][1], 1, 0)
   doChangeSpeed(pid, -getCreatureSpeed(pid))
		 addEvent(setPlayerStorageValue, 6450, pid, 654878, -1)
		 addEvent(doRegainSpeed, 6450, pid)
	   elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
		 setPlayerStorageValue(pid, 654878, 1)
		 doChangeSpeed(pid, -getCreatureSpeed(pid))
   doChangeSpeed(pid, 100)
   doPushCreature(pid, roardirections[dirrr][1], 1, 0)
   doChangeSpeed(pid, -getCreatureSpeed(pid))
		 addEvent(doRegainSpeed, 6450, pid)
		 addEvent(setPlayerStorageValue, 6450, pid, 654878, -1)
	   end
   end   
end
local function doDivine(cid, min, max, spell, rounds, area)
if not isCreature(cid) then return true end
local ret = {}
ret.id = 0
ret.check = 0
ret.cd = rounds
ret.cond = "Confusion"

for i = 1, 9 do
   addEvent(doMoveInArea2, i*500, cid, 137, area[i], psyDmg, min, max, spell, ret)
end
end

   local rounds = math.random(9, 12)
   local area = {punish1, punish2, punish3, punish1, punish2, punish3, punish1, punish2, punish3}

   local posi = getThingPosWithDebug(cid)
   posi.x = posi.x+1
   posi.y = posi.y+1
   setPlayerStorageValue(cid, 2365487, 1)
   addEvent(setPlayerStorageValue, 6450, cid, 2365487, -1) --alterado v1.4
   doDisapear(cid)
   doChangeSpeed(cid, -getCreatureSpeed(cid))
   doSendMagicEffect(posi, 247)  
   addEvent(doAppear, 6450, cid)
   addEvent(doRegainSpeed, 6450, cid)

   local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1)
		 for _,pid in pairs(uid) do
			 if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then
			    doChangeSpeed(pid, -getCreatureSpeed(pid))
			 elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
			    doChangeSpeed(pid, -getCreatureSpeed(pid))
			 end
		 end

   addEvent(divineBack, 2100, cid)
   addEvent(doDivine, 2200, cid, min, max, spell, rounds, area)

elseif isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, spell) then
  local ret = {}
  ret.id = cid
  ret.cd = 10
  ret.eff = 0
  ret.check = 0
  ret.buff = spell
  ret.first = true

  doCondition2(ret)	
elseif spell == "Shadowave" then
doMoveInArea2(cid, 222, db1, DARKDAMAGE, min, max, spell)
elseif spell == "Confuse Ray" then
local rounds = math.random(4, 7)
rounds = rounds + math.floor(getPokemonLevel(cid) / 35)

   local ret = {}
ret.id = target
ret.cd = rounds
ret.check = getPlayerStorageValue(target, conds["Confusion"])
ret.cond = "Confusion"
   posi = getThingPosWithDebug(target)
	 posi.y = posi.y+1
   ---
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
addEvent(doSendMagicEffect, 100, posi, 222)
doDanoWithProtectWithDelay(cid, target, GHOSTDAMAGE, -min, -max, 0)
   addEvent(doCondition2, 100, ret)
elseif spell == "Leaf Blade" then
local a = getThingPosWithDebug(target)
posi = {x = a.x+1, y = a.y+1, z = a.z}
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
addEvent(doSendMagicEffect, 200, posi, 240)
doDanoWithProtectWithDelay(cid, target, GRASSDAMAGE, -min, -max, 0, LeafBlade)
elseif spell == "Eruption" or spell == "Elecball" then
pos = getThingPosWithDebug(cid)
   pos.x = pos.x+1
   pos.y = pos.y+1

atk = {
["Eruption"] = {241, FIREDAMAGE},
["Elecball"] = {171, ELECTRICDAMAGE}
}
stopNow(cid, 1000)
doSendMagicEffect(pos, atk[spell][1])
doMoveInArea2(cid, 0, bombWee1, atk[spell][2], min, max, spell)
elseif spell == "Meteor Smash" then
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 20)
doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, -min, -max, 242)
elseif spell == "Draco Meteor" then
local effD = 5
local eff = 248
local master = isSummon(cid) and getCreatureMaster(cid) or cid
local function doFall(cid)
for rocks = 5, 42 do
   addEvent(fall, rocks*35, cid, master, DRAGONDAMAGE, effD, eff)
end
end
for up = 1, 10 do
   addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, DRAGONDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)

elseif spell == "Dragon Pulse" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, DRAGONDAMAGE, area, pulse2, -min, -max, 255)
end
end
for a = 0, 3 do
local t = {
[0] = {249, {x=p.x, y=p.y-(a+1), z=p.z}},
[1] = {249, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {249, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {249, {x=p.x-(a+1), y=p.y, z=p.z}}
}  
addEvent(sendAtk, 300*a, cid, t[d][2])
addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse2, 0, 0, 177)
addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
end
elseif spell == "Psy Ball" then
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
  doDanoWithProtectWithDelay(cid, target, psyDmg, min, max, 250)
elseif spell == "SmokeScreen" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 34
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
local function smoke(cid)
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
  doMoveInArea2(cid, 34, confusion, NORMALDAMAGE, 0, 0, spell, ret)
end
setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 1000, cid, 3644587, -1)
for i = 0, 2 do
   addEvent(smoke, i*500, cid)							  
end
elseif spell == "Faint Attack" or spell == "Sucker Punch" then  --alterado v1.5
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
  doDanoWithProtectWithDelay(cid, target, DARKDAMAGE, min, max, 237)
elseif spell == "Assurance" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area1, area2, eff)
if isCreature(cid) then
  if not isSightClear(p, area1, false) then return true end
  if not isSightClear(p, area2, false) then return true end
  doAreaCombatHealth(cid, DARKDAMAGE, area1, 0, 0, 0, eff)
  doAreaCombatHealth(cid, DARKDAMAGE, area2, whirl3, -min, -max, 0)
end
end
for a = 0, 3 do
local t = {
[0] = {230, {x=p.x+1, y=p.y-(a+1), z=p.z}, {x=p.x, y=p.y-(a+1), z=p.z}},
[1] = {226, {x=p.x+(a+2), y=p.y+1, z=p.z}, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {235, {x=p.x+1, y=p.y+(a+1), z=p.z}, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {231, {x=p.x-(a+1), y=p.y+1, z=p.z}, {x=p.x-(a+1), y=p.y, z=p.z}}
}  
addEvent(sendAtk, 300*a, cid, t[d][2], t[d][3], t[d][1])
end
elseif spell == "Scary Face" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 0
ret.spell = spell
ret.cond = "Stun"

local p = getThingPosWithDebug(cid)
doSendMagicEffect({x=p.x+1, y=p.y+1, z=p.z}, 228)
doMoveInArea2(cid, 0, confusion, NORMALDAMAGE, 0, 0, spell, ret)
elseif spell == "Surf" then
local pos = getThingPosWithDebug(cid)
doMoveInArea2(cid, 246, doSurf1, WATERDAMAGE, 0, 0, spell)
addEvent(doDanoWithProtect, math.random(100, 400), cid, WATERDAMAGE, pos, doSurf2, -min, -max, 0)
elseif spell == "Sunny Day" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 39
ret.cond = "Silence"
----
local p = getThingPosWithDebug(cid)
doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 181)
---
if isSummon(cid) then
  doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")
setPlayerStorageValue(cid, 253, 1)  --focus
doMoveInArea2(cid, 0, confusion, NORMALDAMAGE, 0, 0, spell, ret)
elseif isInArray({"Pursuit", "ExtremeSpeed", "U-Turn", "Shell Attack"}, spell) then
local atk = {
["Pursuit"] = {17, DARKDAMAGE},
["ExtremeSpeed"] = {50, NORMALDAMAGE, 51},
["U-Turn"] = {19, BUGDAMAGE},
["Shell Attack"] = {45, BUGDAMAGE}	  --alterado v1.5
}
local pos = getThingPosWithDebug(cid)
local p = getThingPosWithDebug(target)
local newPos = getClosestFreeTile(target, p)
local eff = getCreatureName(cid) == "Shiny Arcanine" and atk[spell][3] or atk[spell][1]
local damage = atk[spell][2]
-----------
doDisapear(cid)
doChangeSpeed(cid, -getCreatureSpeed(cid))
-----------
addEvent(doSendMagicEffect, 300, pos, 211)
addEvent(doSendDistanceShoot, 400, pos, p, eff)
addEvent(doSendDistanceShoot, 400, newPos, p, eff)
addEvent(doDanoWithProtect, 400, cid, damage, p, 0, -min, -max, 0)
addEvent(doSendDistanceShoot, 800, p, pos, eff)
addEvent(doSendMagicEffect, 850, pos, 211)
addEvent(doRegainSpeed, 1000, cid)
addEvent(doAppear, 1000, cid)
elseif spell == "Egg Rain" then
local effD = 12
local eff = 5
local master = isSummon(cid) and getCreatureMaster(cid) or cid
------------
local function doFall(cid)
for rocks = 1, 62 do
   addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff)
end
end
for up = 1, 10 do
   addEvent(upEffect, up*75, cid, effD)
end
addEvent(doFall, 450, cid)
addEvent(doDanoWithProtect, 1400, cid, NORMALDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)

elseif spell == "Air Cutter" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, FLYINGDAMAGE, area, whirl3, -min, -max, 255)
end
end
for a = 0, 5 do
local t = {
[0] = {128, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}},
[1] = {129, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+2), y=p.y+1, z=p.z}},
[2] = {131, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+2), z=p.z}},
[3] = {130, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}}
}  
addEvent(doSendMagicEffect, 300*a, t[d][3], t[d][1])
addEvent(sendAtk, 300*a, cid, t[d][2])
end
elseif spell == "Venom Gale" then
local area = {gale1, gale2, gale3, gale4, gale3, gale2, gale1}
for i = 0, 6 do
   addEvent(doMoveInArea2, i*400, cid, 138, area[i+1], POISONDAMAGE, min, max, spell)
end
elseif spell == "Crunch" then
doMoveInArea2(cid, 146, Crunch1, DARKDAMAGE, min, max, spell)
addEvent(doMoveInArea2, 300, cid, 146, Crunch2, DARKDAMAGE, min, max, spell)
elseif spell == "Ice Fang" then
doTargetCombatHealth(cid, target, ICEDAMAGE, 0, 0, 146)
addEvent(doDanoWithProtect, 250, cid, ICEDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 17)
elseif spell == "Psyshock" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area, eff)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, psyDmg, area, 0, 0, 0, eff)    --alterado v1.4
  doAreaCombatHealth(cid, psyDmg, area, whirl3, -min, -max, 255)	 --alterado v1.4
end
end
for a = 0, 4 do
local t = {
[0] = {250, {x=p.x, y=p.y-(a+1), z=p.z}},		   --alterado v1.4
[1] = {250, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {250, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {250, {x=p.x-(a+1), y=p.y, z=p.z}}
}  
addEvent(sendAtk, 370*a, cid, t[d][2], t[d][1])
end

elseif spell == "Hurricane" then
local function hurricane(cid)
 if not isCreature(cid) then return true end
 if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
 if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
 doMoveInArea2(cid, 42, bombWee1, FLYINGDAMAGE, min, max, spell)
end
doSetCreatureOutfit(cid, {lookType = 1398}, 10000)
setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 17*600, cid, 3644587, -1)	
for i = 1, 17 do
   addEvent(hurricane, i*600, cid)							    --alterado v1.4
end
elseif spell == "Aromateraphy" or spell == "Emergency Call" then
eff = spell == "Aromateraphy" and 14 or 13
doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), bombWee3, 0, 0, eff)
if isSummon(cid) then
  doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")
local uid = checkAreaUid(getThingPosWithDebug(cid), confusion, 1, 1)
for _,pid in pairs(uid) do
   if isCreature(pid) then
   if ehMonstro(cid) and ehMonstro(pid) and pid ~= cid then
	  doCureStatus(pid, "all")
   elseif isSummon(cid) and ((isSummon(pid) and canAttackOther(cid, pid) == "Cant") or (isPlayer(pid) and canAttackOther(cid, pid) == "Cant")) and pid ~= cid then
	  if isSummon(pid) then
		 doCureBallStatus(getPlayerSlotItem(getCreatureMaster(pid), 8).uid, "all")
	  end
	  doCureStatus(pid, "all")
   end
   end
end
elseif spell == "Synthesis" or spell == "Roost" then
   local min = (getCreatureMaxHealth(cid) * 45) / 100
local max = (getCreatureMaxHealth(cid) * 60) / 100

local function doHealArea(cid, min, max)
   local amount = math.random(min, max)
   if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
    amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
   end
   if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
   doCreatureAddHealth(cid, amount)
   doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
   end
   end

doSendMagicEffect(getThingPosWithDebug(cid), 39)
   doHealArea(cid, min, max)

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

   doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret)
elseif spell == "Peck" then
sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
doDanoWithProtectWithDelay(cid, target, FLYINGDAMAGE, min, max, 3)
elseif spell == "Rolling Kick" or spell == "Night Daze" then
local pos = getThingPosWithDebug(cid)
local eff = spell == "Night Daze" and 222 or 113
local dmg = spell == "Night Daze" and DARKDAMAGE or FIGHTINGDAMAGE
local out = getCreatureName(cid) == "Hitmontop" and 1193 or 1451
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"}, getCreatureName(cid)) then
   doSetCreatureOutfit(cid, {lookType = out}, 400)
   end
addEvent(doDanoWithProtect, 150, cid, dmg, pos, waterarea, -min, -max, 0)

elseif spell == "Safeguard" then
doSendMagicEffect(getThingPosWithDebug(cid), 133)
if isSummon(cid) then
  doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
end
doCureStatus(cid, "all")
elseif spell == "Air Slash" then
local p = getThingPosWithDebug(cid)
local t = {
{{128, {x = p.x+1, y = p.y-1, z = p.z}}, {16, {x = p.x+1, y = p.y-1, z = p.z}}},
{{129, {x = p.x+2, y = p.y+1, z = p.z}}, {221, {x = p.x+3, y = p.y+1, z = p.z}}},
{{131, {x = p.x+1, y = p.y+2, z = p.z}}, {223, {x = p.x+1, y = p.y+3, z = p.z}}},
{{130, {x = p.x-1, y = p.y+1, z = p.z}}, {243, {x = p.x-1, y = p.y+1, z = p.z}}},
}
for i = 1, 4 do
   doSendMagicEffect(t[i][2][2], t[i][2][1])
end
doDanoWithProtect(cid, FLYINGDAMAGE, getThingPosWithDebug(cid), airSlash, -min, -max, 0)   
for i = 1, 4 do
   addEvent(doSendMagicEffect, 400, t[i][1][2], t[i][1][1])
end
addEvent(doDanoWithProtect, 400, cid, FLYINGDAMAGE, getThingPosWithDebug(cid), bombWee2, -min, -max, 0)
elseif spell == "Feather Dance" then
local function doPulse(cid, eff)
if not isCreature(cid) 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
  doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 9)
  doDanoWithProtectWithDelay(cid, target, FLYINGDAMAGE, -min, -max, eff)
end
setPlayerStorageValue(cid, 3644587, 1)
addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
  addEvent(doPulse, 0, cid, 137)			   
  addEvent(doPulse, 350, cid, 137)

elseif spell == "Tailwind" then
  local ret = {}
  ret.id = cid
  ret.cd = 10
  ret.eff = 137
  ret.check = 0
  ret.buff = spell
  ret.first = true

  doCondition2(ret)
elseif spell == "Double Team" then
 local function RemoveTeam(cid, master)
  if isCreature(cid) then
  local p = getThingPosWithDebug(cid)
  doSendMagicEffect(p, 211)
  doRemoveCreature(cid)
  end
  end

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

  local s = {
  ["Xatu"] = "XatuTeam",
  ["Yanma"] = "YanmaTeam",
  }

   local master = getCreatureMaster(cid)
   local item = getPlayerSlotItem(master, 8)
   local pos = getThingPosWithDebug(cid)
   local time = 20
   local pokelife = (getCreatureHealth(cid) / getCreatureMaxHealth(cid))
   local random = math.random(5, 10)
   local dir = getCreatureLookDir(cid)
   ---------
   doItemSetAttribute(item.uid, "hp", pokelife)
   ---------
   doDisapear(cid)
   doTeleportThing(cid, {x=4, y=3, z=10}, false)
   doAppear(cid)
   ---------
   doSummonMonster(master, s[getCreatureName(cid)])
   local pk = getCreatureSummons(master)[2]
   adjustStatus(pk, item.uid, true, true, true)
   ---------
   doTeleportThing(pk, getClosestFreeTile(pk, pos), false)
   doTeleportThing(cid, getClosestFreeTile(cid, pos), false)
   doCreatureSetLookDir(pk, dir)
   doCreatureSetLookDir(cid, dir)
   doSendMagicEffect(getThingPosWithDebug(pk), 211)
   doSendMagicEffect(getThingPosWithDebug(cid), 211)
   if getPlayerStorageValue(cid, 9658783) >= 1 then		  --gambiarra
   doSetCreatureOutfit(cid, {lookType = 1446}, -1)
   end
   --------
   setPlayerStorageValue(pk, 637500, 1)
   setPlayerStorageValue(master, 637501, 1)
   addEvent(RemoveTeam, time*1000, pk, master)
   addEvent(setPlayerStorageValue, time*1000, master, 637501, -1)
elseif spell == "Tackle" then
  doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 111)
elseif spell == "Giga Drain" then
local life = getCreatureHealth(target)
doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)

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

elseif spell == "Bug Fighter" then

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

  doCondition2(ret)

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

elseif spell == "Power Gem" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, ROCKDAMAGE, area, pulse2, -min, -max, 255)
end
end
for a = 0, 3 do
local t = {
[0] = {29, {x=p.x, y=p.y-(a+1), z=p.z}},	
[1] = {29, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {29, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {29, {x=p.x-(a+1), y=p.y, z=p.z}}						   
}  
addEvent(sendAtk, 400*a, cid, t[d][2])
addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, 103)
end

elseif spell == "Octazooka" then
local ret = {}
ret.id = 0
ret.cd = 9
ret.check = 0
ret.eff = 34
ret.cond = "Silence"
doMoveInAreaMulti(cid, 6, 116, multi, multiDano, WATERDAMAGE, min, max)
doMoveInArea2(cid, 0, multiDano, WATERDAMAGE, 0, 0, spell, ret)


elseif spell == "Take Down" then
   doMoveInArea2(cid, 111, reto5, NORMALDAMAGE, min, max, spell)
elseif spell == "Yawn" then
local ret = {}
ret.id = target
ret.cd = math.random(6, 9)
ret.check = getPlayerStorageValue(target, conds["Sleep"])
ret.first = true
ret.cond = "Sleep"
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 11)
   addEvent(doCondition2, 1500, ret)
elseif spell == "Tongue Hook" then
sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38)
addEvent(doTeleportThing, 200, target, getClosestFreeTile(cid, getThingPosWithDebug(cid)), true)
addEvent(sendDistanceShootWithProtect, 200, cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38)

elseif spell == "Tongue Grap" then
local function distEff(cid, target)
if not isCreature(cid) or not isCreature(target) then return true end
  sendDistanceShootWithProtect(cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38)
end
local ret = {}
ret.id = target
ret.cd = 10
ret.check = getPlayerStorageValue(target, conds["Silence"])
ret.eff = 185
ret.cond = "Silence"
sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38)
addEvent(doCondition2, 100, ret)

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)
   doDanoWithProtectWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113)
elseif spell == "Present" then
local function sendHeal(cid)
if isCreature(cid) and isCreature(target) then
  doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), crusher, min, max, 5)
  doSendAnimatedText(getThingPosWithDebug(target), "HEALTH!", 65)
end
end
   doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 31)
   if math.random(1, 100) >= 10 then
   doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 5, crusher)
   else
   addEvent(sendHeal, 100, cid)
   end

elseif spell == "Inferno" or spell == "Fissure" then

local pos = getThingPosWithDebug(cid)
atk = {
["Inferno"] = {101, FIREDAMAGE},
["Fissure"] = {102, GROUNDDAMAGE}
}
doMoveInArea2(cid, atk[spell][1], inferno1, atk[spell][2], 0, 0, spell)
addEvent(doDanoWithProtect, math.random(100, 400), cid, atk[spell][2], pos, inferno2, -min, -max, 0)

elseif spell == "Wrap" then
local ret = {}
ret.id = target
ret.cd = 10
ret.check = getPlayerStorageValue(target, conds["Silence"])
ret.eff = 104
ret.cond = "Silence"
doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
addEvent(doCondition2, 100, ret)
elseif spell == "Rock n'Roll" then
local pos = getThingPosWithDebug(cid)
local areas = {rock1, rock2, rock3, rock4, rock5, rock4, rock3, rock2, rock1}
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 1
ret.check = 0
ret.spell = spell
ret.cond = "Miss"
for i = 0, 8 do
   addEvent(doMoveInArea2, i*400, cid, 1, areas[i+1], NORMALDAMAGE, min, max, spell, ret)
   addEvent(doMoveInArea2, i*410, cid, 1, areas[i+1], NORMALDAMAGE, 0, 0, spell)
end
elseif spell == "Power Wave" then

local pos = getThingPosWithDebug(cid)
local areas = {rock1, rock2, rock3, rock4, rock5}
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 103
ret.check = 0
ret.first = true
ret.cond = "Paralyze"
local function sendAtk(cid)
if isCreature(cid) then
doRemoveCondition(cid, CONDITION_OUTFIT)
setPlayerStorageValue(cid, 9658783, -1) 
for i = 0, 4 do
   addEvent(doMoveInArea2, i*400, cid, 103, areas[i+1], psyDmg, min, max, spell, ret)
   addEvent(doMoveInArea2, i*410, cid, 103, areas[i+1], psyDmg, 0, 0, spell)
end
end
end
doSetCreatureOutfit(cid, {lookType = 1001}, -1)
setPlayerStorageValue(cid, 9658783, 1)
addEvent(sendAtk, 2000, cid) 

elseif spell == "Ground Crusher" then
local pos = getThingPosWithDebug(cid)
local areas = {rock1, rock2, rock3, rock4, rock5}
local ret = {}
   ret.id = 0
   ret.cd = 12
   ret.eff = 0
   ret.check = 0
   ret.spell = spell
   ret.cond = "Stun"

local function endMove(cid)
if isCreature(cid) then
  doRemoveCondition(cid, CONDITION_OUTFIT)  
end
end
doSetCreatureOutfit(cid, {lookType = 1449}, -1)
stopNow(cid, 16*360)
addEvent(endMove, 16*360, cid)
----
for i = 0, 4 do
   addEvent(doMoveInArea2, i*350, cid, 100, areas[i+1], GROUNDDAMAGE, min, max, spell, ret)
   addEvent(doMoveInArea2, i*360, cid, 100, areas[i+1], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 4, 8 do
   local a = i-3
   addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
   addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 8, 12 do
   local a = i-7
   addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
   addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 12, 16 do
   local a = i-11
   addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
   addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end
for i = 16, 20 do
   local a = i-15
   addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
   addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
end
elseif spell == "Last Resort" then
local pos = getThingPosWithDebug(cid)
local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}
for i = 0, 9 do
   addEvent(doMoveInArea2, i*400, cid, 3, areas[i+1], NORMALDAMAGE, min, max, spell)
   addEvent(doMoveInArea2, i*410, cid, 3, areas[i+1], NORMALDAMAGE, 0, 0, spell)
end
elseif spell == "Psy Impact" then
local master = getCreatureMaster(cid) or 0
local ret = {}
ret.id = 0
ret.cd = 9
ret.eff = 0
ret.check = 0
ret.spell = spell
ret.cond = "Miss"

for rocks = 1, 42 do
   addEvent(fall, rocks*35, cid, master, psyDmg, -1, 98)
end
addEvent(doMoveInArea2, 500, cid, 0, BigArea2, psyDmg, min, max, spell, ret)
elseif spell == "Two Face Shock" then
local atk = {
[1] = {179, ICEDAMAGE},
[2] = {127, GROUNDDAMAGE}
}
   local rand = math.random(1, 2)
doAreaCombatHealth(cid, atk[rand][2], getThingPosWithDebug(cid), splash, -min, -max, 255)
local sps = getThingPosWithDebug(cid)
sps.x = sps.x+1
sps.y = sps.y+1
doSendMagicEffect(sps, atk[rand][1])

elseif spell == "Aerial Ace" then
local eff = {16, 221, 223, 243}
for rocks = 1, 32 do
   addEvent(fall, rocks*22, cid, master, FLYINGDAMAGE, -1, eff[math.random(1, 4)])
end
addEvent(doMoveInArea2, 500, cid, 0, BigArea2, FLYINGDAMAGE, min, max, spell)
elseif spell == "Echoed Voice" then
local p = getThingPosWithDebug(cid)
local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
function sendAtk(cid, area)
if isCreature(cid) then
  if not isSightClear(p, area, false) then return true end
  doAreaCombatHealth(cid, NORMALDAMAGE, area, pulse2, -min, -max, 255)
end
end
for a = 0, 5 do
local t = {
[0] = {39, {x=p.x, y=p.y-(a+1), z=p.z}},	
[1] = {39, {x=p.x+(a+1), y=p.y, z=p.z}},
[2] = {39, {x=p.x, y=p.y+(a+1), z=p.z}},
[3] = {39, {x=p.x-(a+1), y=p.y, z=p.z}}						   
}  
addEvent(sendAtk, 400*a, cid, t[d][2])
addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
end
elseif spell == "Electro Field" or spell == "Petal Tornado" then
local p = getThingPos(cid)
local pos1 = {
[1] = {{x = p.x, y = p.y+4, z = p.z}, {x = p.x+1, y = p.y+4, z = p.z}, {x = p.x+2, y = p.y+3, z = p.z}, {x = p.x+3, y = p.y+2, z = p.z}, {x = p.x+4, y = p.y+1, z = p.z}, {x = p.x+4, y = p.y, z = p.z}},
[2] = {{x = p.x, y = p.y+3, z = p.z}, {x = p.x+1, y = p.y+3, z = p.z}, {x = p.x+2, y = p.y+2, z = p.z}, {x = p.x+3, y = p.y+1, z = p.z}, {x = p.x+3, y = p.y, z = p.z}},
[3] = {{x = p.x, y = p.y+2, z = p.z}, {x = p.x+1, y = p.y+2, z = p.z}, {x = p.x+2, y = p.y+1, z = p.z}, {x = p.x+2, y = p.y, z = p.z}},
[4] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y, z = p.z}},
}
local pos2 = {
[1] = {{x = p.x, y = p.y-4, z = p.z}, {x = p.x-1, y = p.y-4, z = p.z}, {x = p.x-2, y = p.y-3, z = p.z}, {x = p.x-3, y = p.y-2, z = p.z}, {x = p.x-4, y = p.y-1, z = p.z}, {x = p.x-4, y = p.y, z = p.z}},
[2] = {{x = p.x, y = p.y-3, z = p.z}, {x = p.x-1, y = p.y-3, z = p.z}, {x = p.x-2, y = p.y-2, z = p.z}, {x = p.x-3, y = p.y-1, z = p.z}, {x = p.x-3, y = p.y, z = p.z}},
[3] = {{x = p.x, y = p.y-2, z = p.z}, {x = p.x-1, y = p.y-2, z = p.z}, {x = p.x-2, y = p.y-1, z = p.z}, {x = p.x-2, y = p.y, z = p.z}},
[4] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y, z = p.z}},
}
local pos3 = {
[1] = {{x = p.x+4, y = p.y, z = p.z}, {x = p.x+4, y = p.y-1, z = p.z}, {x = p.x+3, y = p.y-2, z = p.z}, {x = p.x+2, y = p.y-3, z = p.z}, {x = p.x+1, y = p.y-4, z = p.z}, {x = p.x, y = p.y-4, z = p.z}},
[2] = {{x = p.x+3, y = p.y, z = p.z}, {x = p.x+3, y = p.y-1, z = p.z}, {x = p.x+2, y = p.y-2, z = p.z}, {x = p.x+1, y = p.y-3, z = p.z}, {x = p.x, y = p.y-3, z = p.z}},
[3] = {{x = p.x+2, y = p.y, z = p.z}, {x = p.x+2, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-2, z = p.z}, {x = p.x, y = p.y-2, z = p.z}},
[4] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x, y = p.y-1, z = p.z}},
}
local pos4 = {
[1] = {{x = p.x-4, y = p.y, z = p.z}, {x = p.x-4, y = p.y+1, z = p.z}, {x = p.x-3, y = p.y+2, z = p.z}, {x = p.x-2, y = p.y+3, z = p.z}, {x = p.x-1, y = p.y+4, z = p.z}, {x = p.x, y = p.y+4, z = p.z}},
[2] = {{x = p.x-3, y = p.y, z = p.z}, {x = p.x-3, y = p.y+1, z = p.z}, {x = p.x-2, y = p.y+2, z = p.z}, {x = p.x-1, y = p.y+3, z = p.z}, {x = p.x, y = p.y+3, z = p.z}},
[3] = {{x = p.x-2, y = p.y, z = p.z}, {x = p.x-2, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+2, z = p.z}, {x = p.x, y = p.y+2, z = p.z}},
[4] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x, y = p.y+1, z = p.z}},
}
local atk = {
["Electro Field"] = {41, 207, ELECTRICDAMAGE},
["Petal Tornado"] = {14, 54, GRASSDAMAGE},
}
local ret = {}				
ret.id = 0
ret.cd = 12
ret.eff = 48
ret.check = 0
ret.spell = spell
ret.cond = "Stun"
local function sendDist(cid, posi1, posi2, eff, delay)
if posi1 and posi2 and isCreature(cid) then
  addEvent(doSendDistanceShoot, delay, posi1, posi2, eff)
end
end
local function sendDano(cid, pos, eff, delay, min, max)
if pos and isCreature(cid) then
  addEvent(doAreaCombatHealth, delay, cid, atk[spell][3], pos, 0, -min, -max, eff)
end
end
local function doTornado(cid)
if isCreature(cid) then
for j = 1, 4 do
  for i = 1, 6 do												  --41/207  -- 14/54
   addEvent(sendDist, 350, cid, pos1[j][i], pos1[j][i+1], atk[spell][1], i*330)
   addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*300, min, max)
   addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*310, 0, 0)
   ---
   addEvent(sendDist, 350, cid, pos2[j][i], pos2[j][i+1], atk[spell][1], i*330)
   addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*300, min, max)
   addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*310, 0, 0)
   ----
   addEvent(sendDist, 800, cid, pos3[j][i], pos3[j][i+1], atk[spell][1], i*330)
   addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*300, min, max)
   addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*310, 0, 0)
   ---
   addEvent(sendDist, 800, cid, pos4[j][i], pos4[j][i+1], atk[spell][1], i*330)
   addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*300, min, max)
   addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*310, 0, 0)
  end
end
end
end
if spell == "Electro Field" then
  addEvent(doMoveInArea2, 1000, cid, 0, electro, ELECTRICDAMAGE, 0, 0, spell, ret)
end
for b = 0, 2 do
   addEvent(doTornado, b*1500, cid)
end
end
return true
end

 

 

 

Espero Que Ajude!

Link para o comentário
Compartilhar em outros sites

ss eu ja baixei mais fui subistituir e nao apareçeu os loot =s

 

@otal2012 alguem ja tem todos os shiny na pasta pra me passa? com portait tudo?

ae cara eu tenho varios shinys + de 151 + tem alguns que aind não tem loot + voce quer assim msm ??
Link para o comentário
Compartilhar em outros sites

Slicer o problema tava no pokemon moves da atualização ...

 

Stigal vlw ai agr volto a funcionar ;D rep + pena q ta desatualizado :C com problemas de possiveis erros.

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

@galhem

se tas usando a versao 1.6/2.6+ party agora eh soh pra upar em conjunto... o duel agora eh por Order! de order na pessoa q tu quer duelar e entao escolha qnts pokes vao ser usados e entao a outra pessoa tem q usar Order em ti tb para aceitar o duel!

 

 

@Slicer

 

VC PODERIA ME ENSINAR A TIRAR ESSE SISTEMA DE DUEL E A COLOCAR O ANTIGO QUE SO PRECISAR DAR PARTY E DUELA SEM TER QUE DAR ORDER É QUE AQUI ELE DA DEBUG TE AGRADEÇO

Link para o comentário
Compartilhar em outros sites

@stigal

vc gosta de aumentar a qntdade de post tua neh? ;/ sempre flando oq n sabe ^^

Slicer o problema tava no pokemon moves da atualização ...

 

Stigal vlw ai agr volto a funcionar ;D rep + pena q ta desatualizado :C com problemas de possiveis erros.

Sorry é esse que uso (*base).

 

Slicer não tou aqui para ficar discutindo com você, porque e uma total perca de tempo.

estou aqui para ajudar.

 

Atenciosamente, Stigal.

Link para o comentário
Compartilhar em outros sites

aew Slicer tou com um problema com seu npc de police a oficial e o giovanny da rocket

 

 

13:44 [ADM] [121]: hi

13:44 Oficial Janny: Hello, you want partipa team of police?

13:44 [ADM] [121]: join

13:44 Oficial Janny: Then you want to join to the police?

13:44 [ADM] [121]: yes

 

 

 

 

ai ele n fala nada e n da a outifit =/

 

e aparece esse bug no distro:

 

[23/09/2012 13:44:47] [Error - Npc interface]

[23/09/2012 13:44:51] data/npc/scripts/Oficial Janny.lua:onCreatureSay

[23/09/2012 13:44:51] Description:

[23/09/2012 13:44:51] data/npc/scripts/Oficial Janny.lua:27: attempt to call global 'isRocket' (a nil value)

[23/09/2012 13:44:51] stack traceback:

[23/09/2012 13:44:51] data/npc/scripts/Oficial Janny.lua:27: in function 'callback'

[23/09/2012 13:44:51] data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'

[23/09/2012 13:44:51] data/npc/scripts/Oficial Janny.lua:9: in function <data/npc/scripts/Oficial Janny.lua:9>

[23/09/2012 13:45:21] > Broadcasted message: "Para saber mais sobre nossos sistema diga !sistemas.

[23/09/2012 13:45:21] ".

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...