-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
script alguém pode me ajudar nessa spells aqui, queira que colocassem pro meu personagem ficar inatingível por 6 segundos e podendo atacar livremente
Por lazaroszz,
- 0 respostas
- 1045 visualizações
-
- 9 respostas
- 2377 visualizações
-
- 0 respostas
- 2070 visualizações
-
- 3 respostas
- 4324 visualizações
-
- 2 respostas
- 1947 visualizações
-

Pergunta
Developer Berg 65
Olá Galera, queria pedir a ajuda de vcs, estou com 2 scripts que está dando erros quando é ativadas, quero remover esses erros sem danificar as scripts e sem desativar as funções delas, a primeira script é uma spell chamada Poision Job, uso base pde de poketibia. quando um monstro selvagem que possui essa spell ataca meu pokemon a distro da esse erro.
Script para tirar o erro da spell.
script da spell que indica na lib
const_distance_delay = 56 RollOuts = { ["Voltorb"] = {lookType = 638}, ["Electrode"] = {lookType = 637}, ["Sandshrew"] = {lookType = 635}, ["Sandslash"] = {lookType = 636}, ["Omastar"] = {lookType = 1811}, ["Shiny Omastar"] = {lookType = 1811}, ["Phanpy"] = {lookType = 1005}, ["Shiny Phanpy"] = {lookType = 1705}, ["Donphan"] = {lookType = 1456}, ["Shiny Donphan"] = {lookType = 1590}, ["Pink Donphan"] = {lookType = 1837}, ["Miltank"] = {lookType = 1006}, --alterado v2.6 peguem o script todo!! ["Golem"] = {lookType = 639}, ["Shiny Sandshrew"] = {lookType = 1615}, ["Shiny Sandslash"] = {lookType = 1617}, ["Shiny Electrode"] = {lookType = 1387}, ["Shiny Golem"] = {lookType = 1403}, ["Shiny Voltorb"] = {lookType = 1388} } --//////////////////////////////////////////////////////////////////////////////////////////////////////////-- local function getSubName(cid, target) if not isCreature(cid) then return "" end if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then return getPlayerStorageValue(cid, 1010) elseif pokeHaveReflect(cid) and isCreature(target) then return getCreatureName(target) else --alterado v2.6.1 return getCreatureName(cid) end end local function getThingName(cid) if not isCreature(cid) then return "" end --alterado v2.6 return getCreatureName(cid) end function getTableMove(cid, move) --alterado v2.6 local backup = {f = 0, t = ""} if getThingName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then name = getPlayerStorageValue(cid, 1010) else name = getThingName(cid) end if not isCreature(cid) or name == "" or not move then return backup end local x = movestable[name] if not x then return "" end local z = {x.move1, x.move2, x.move3, x.move4, x.move5, x.move6, x.move7, x.move8, x.move9, x.move10, x.move11, x.move12, x.passive1, x.passive2, x.passive3, x.tmove1, x.tmove2, x.tmove3} if getPlayerStorageValue(cid, 21103) ~= -1 then local sto = getPlayerStorageValue(cid, 21103) setPlayerStorageValue(cid, 21103, -1) return {f = sto, t = ""} end for j = 1, 15 do if z[j] and z[j].name == move then return z[j] end end return movesinfo[move] end function getMasterTarget(cid) if isCreature(cid) and getPlayerStorageValue(cid, 21101) ~= -1 then return getPlayerStorageValue(cid, 21101) --alterado v2.6 end if isSummon(cid) then return getCreatureTarget(getCreatureMaster(cid)) else return getCreatureTarget(cid) end end local function getSubName(cid, target) if not isCreature(cid) then return "" end if getCreatureName(cid) == "Shiny Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Shiny Ditto" then return getPlayerStorageValue(cid, 1010) elseif pokeHaveReflect(cid) and isCreature(target) then return getCreatureName(target) else --alterado v2.6.1 return getCreatureName(cid) end end local function getThingName(cid) if not isCreature(cid) then return "" end --alterado v2.6 return getCreatureName(cid) end function getTableMove(cid, move) --alterado v2.6 local backup = {f = 0, t = ""} if getThingName(cid) == "Shiny Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Shiny Ditto" then name = getPlayerStorageValue(cid, 1010) else name = getThingName(cid) end if not isCreature(cid) or name == "" or not move then return backup end local x = movestable[name] if not x then return "" end local z = {x.move1, x.move2, x.move3, x.move4, x.move5, x.move6, x.move7, x.move8, x.move9, x.move10, x.move11, x.move12, x.passive1, x.passive2, x.passive3, x.tmove1, x.tmove2, x.tmove3} if getPlayerStorageValue(cid, 21103) ~= -1 then local sto = getPlayerStorageValue(cid, 21103) setPlayerStorageValue(cid, 21103, -1) return {f = sto, t = ""} end for j = 1, 15 do if z[j] and z[j].name == move then return z[j] end end return movesinfo[move] end function getMasterTarget(cid) if isCreature(cid) and getPlayerStorageValue(cid, 21101) ~= -1 then return getPlayerStorageValue(cid, 21101) --alterado v2.6 end if isSummon(cid) then return getCreatureTarget(getCreatureMaster(cid)) else return getCreatureTarget(cid) end end --////////////////////////////////////////////////////////////////////////////////////////////////////////-- function docastspell(cid, spell, mina, maxa) local target = 0 local getDistDelay = 0 if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return false end --alterado v2.6 if isSleeping(cid) and getPlayerStorageValue(cid, 21100) <= -1 then return true end --alterado v2.6 if isCreature(getMasterTarget(cid)) then target = getMasterTarget(cid) getDistDelay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay end if isMonster(cid) and not isSummon(cid) then if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end doCreatureAddCondition(cid, wildexhaust) end local mydir = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local min = 0 local max = 0 local movetype = getSpecialAttack(cid) local table = getTableMove(cid, spell) --alterado v2.6 --alterado v2.7 \/\/ if ehMonstro(cid) and isCreature(getMasterTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getMasterTarget(cid))) then local target = getMasterTarget(cid) if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then if isCreature(getMasterTarget(target)) then doSendMagicEffect(getThingPosWithDebug(target), 211) doSendAnimatedText(getThingPosWithDebug(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPosWithDebug(cid)), false) doSendMagicEffect(getThingPosWithDebug(target), 211) doFaceCreature(target, getThingPosWithDebug(cid)) return false --alterado v2.8 end end end --- FEAR / ROAR / SILENCE --- if (isWithFear(cid) or isSilence(cid)) and getPlayerStorageValue(cid, 21100) <= -1 then return true --alterado v2.6!! end ---------------------------- if mina and maxa then min = math.abs(mina) max = math.abs(maxa) elseif not isPlayer(cid) then if table ~= "" then --alterado v2.6 if table.t == "fighting" then --alterado v2.6 movetype = getOffense(cid) * 0.95 + getSpecialAttack(cid) * 0.45 elseif table.t == "normal" then --alterado v2.6 movetype = movetype * 0.6 + getOffense(cid) * 0.6 end --alterado v2.6 min = 5 + getPokemonLevel(cid) + (table.f / 100 * movetype * specialoffenseRate) max = min + getPokemonLevel(cid) * levelFactor if spell == "Selfdestruct" then min = getCreatureHealth(cid) --alterado v2.6 max = getCreatureHealth(cid) end if not isSummon(cid) and not isInArray({"Demon Puncher", "Demon Kicker"}, spell) then --alterado v2.7 doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER) end if isNpcSummon(cid) then local mnn = {" use ", " "} local use = mnn[math.random(#mnn)] doCreatureSay(getCreatureMaster(cid), getPlayerStorageValue(cid, 1007)..","..use..""..doCorrectString(spell).."!", 1) end else print("Error trying to use move "..spell..", move not specified in the pokemon table.") end end --- FOCUS ---------------------------------- if getPlayerStorageValue(cid, 253) >= 0 and table ~= "" and table.f ~= 0 then --alterado v2.6 min = min * 2 max = max * 2 setPlayerStorageValue(cid, 253, -1) end --- Shredder Team ------------------------------- if getPlayerStorageValue(cid, 637501) >= 1 then if #getCreatureSummons(cid) == 1 then docastspell(getCreatureSummons(cid)[1], spell) elseif #getCreatureSummons(cid) == 2 then docastspell(getCreatureSummons(cid)[1], spell) docastspell(getCreatureSummons(cid)[2], spell) end elseif getPlayerStorageValue(cid, 637500) >= 1 then min = 0 max = 0 end ------------------Miss System-------------------------- local cd = getPlayerStorageValue(cid, conds["Miss"]) local cd2 = getPlayerStorageValue(cid, conds["Confusion"]) --alterado v2.5 local cd3 = getPlayerStorageValue(cid, conds["Stun"]) if cd >= 0 or cd2 >= 0 or cd3 >= 0 then --alterado v2.7 if not isInArray({"Aromateraphy", "Emergency Call", "Magical Leaf", "Sunny Day", "Safeguard", "Rain Dance"}, spell) and getPlayerStorageValue(cid, 21100) <= -1 then if math.random(1, 100) > 30 then --alterado v2.6 doSendAnimatedText(getThingPosWithDebug(cid), "MISS", 215) return false end end end ---------------GHOST DAMAGE----------------------- ghostDmg = GHOSTDAMAGE psyDmg = PSYCHICDAMAGE if getPlayerStorageValue(cid, 999457) >= 1 and table ~= "" and table.f ~= 0 then --alterado v2.6 psyDmg = MIRACLEDAMAGE ghostDmg = DARK_EYEDAMAGE addEvent(setPlayerStorageValue, 50, cid, 999457, -1) end --------------------REFLECT---------------------- setPlayerStorageValue(cid, 21100, -1) --alterado v2.6 if not isInArray({"Psybeam", "Sand Attack", "Flamethrower"}, spell) then --alterado v2.8 setPlayerStorageValue(cid, 21101, -1) end setPlayerStorageValue(cid, 21102, spell) --------------------------------------------------- if spell == "Reflect" or spell == "Magic Coat" or spell == "Mimic" then if spell == "Magic Coat" then eff = 11 elseif spell == "Mimic" then eff = 135 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) doDanoInTargetWithDelay(cid, target, GRASSDAMAGE, min, max, 245) --alterado v2.7 end addEvent(throw, 0, cid, target) addEvent(throw, 100, cid, target) --alterado v2.7 elseif spell == "Vine Whip" then local area = getThingPosWithDebug(cid) local dano = {} local effect = 255 if mydir == 0 then area.x = area.x + 1 area.y = area.y - 1 dano = whipn effect = 80 elseif mydir == 1 then area.x = area.x + 2 area.y = area.y + 1 dano = whipe effect = 83 elseif mydir == 2 then area.x = area.x + 1 area.y = area.y + 2 dano = whips effect = 81 elseif mydir == 3 then area.x = area.x - 1 area.y = area.y + 1 dano = whipw effect = 82 end doSendMagicEffect(area, effect) doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), dano, -min, -max, 255) elseif spell == "Headbutt" then doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 118) elseif spell == "Leech Seed" then local ret = {} ret.id = target ret.attacker = cid ret.cd = 5 ret.check = getPlayerStorageValue(target, conds["Leech"]) ret.damage = isSummon(cid) and getMasterLevel(cid)+getPokemonBoost(cid) or getPokemonLevel(cid) ret.cond = "Leech" doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 1) addEvent(doMoveDano2, 1000, cid, target, GRASSDAMAGE, 0, 0, ret, spell) elseif spell == "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 doChangeSpeed(cid, -getCreatureSpeed(cid)) setPlayerStorageValue(cid, 3644587, 1) --alterado v2.6 n sei pq mas tava dando debug doSendMagicEffect(getThingPosWithDebug(cid), 132) addEvent(useSolarBeam, 650, cid) elseif spell == "Sleep Powder" then local ret = {} ret.id = 0 ret.cd = math.random(6, 9) ret.check = 0 ret.first = true --alterado v2.6 ret.cond = "Sleep" doMoveInArea2(cid, 27, confusion, NORMALDAMAGE, 0, 0, spell, ret) elseif spell == "Stun Spore" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 0 ret.check = 0 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret) elseif spell == "Poison Powder" then local ret = {} ret.id = 0 ret.cd = math.random(6, 15) --alterado v2.6 ret.check = 0 local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid) ret.damage = math.floor((getPokemonLevel(cid)+lvl)/2) ret.cond = "Poison" doMoveInArea2(cid, 84, confusion, NORMALDAMAGE, 0, 0, spell, ret) elseif spell == "Bullet Seed" then --cid, effDist, effDano, areaEff, areaDano, element, min, max doMoveInAreaMulti(cid, 1, 45, bullet, bulletDano, GRASSDAMAGE, min, max) elseif spell == "Body Slam" then 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) doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 15) --alterado v2.7 elseif spell == "Flamethrower" then local flamepos = getThingPosWithDebug(cid) local effect = 255 local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) if a == 0 then flamepos.x = flamepos.x+1 flamepos.y = flamepos.y-1 effect = 106 elseif a == 1 then flamepos.x = flamepos.x+3 flamepos.y = flamepos.y+1 effect = 109 elseif a == 2 then flamepos.x = flamepos.x+1 flamepos.y = flamepos.y+3 effect = 107 elseif a == 3 then flamepos.x = flamepos.x-1 flamepos.y = flamepos.y+1 effect = 108 end doMoveInArea2(cid, 0, flamek, FIREDAMAGE, min, max, spell) doSendMagicEffect(flamepos, effect) elseif spell == "Fireball" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3) addEvent(doDanoWithProtect, 200, cid, FIREDAMAGE, getThingPosWithDebug(target), waba, min, max, 5) elseif spell == "Fire Fang" then doSendMagicEffect(getThingPosWithDebug(target), 138) doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 15) --alterado v2.7 elseif spell == "Fire Blast" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area, eff) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, FIREDAMAGE, area, 0, 0, 0, eff) doAreaCombatHealth(cid, FIREDAMAGE, area, whirl3, -min, -max, 35) end end for a = 0, 4 do local t = { [0] = {60, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.4 [1] = {61, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {62, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {63, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1]) end elseif spell == "Rage" then local ret = {} ret.id = cid ret.cd = 15 ret.eff = 13 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Raging Blast" then --cid, effDist, effDano, areaEff, areaDano, element, min, max doMoveInAreaMulti(cid, 3, 6, bullet, bulletDano, FIREDAMAGE, min, max) elseif spell == "Dragon Claw" then doDanoWithProtect(cid, DRAGONDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 141) elseif spell == "Wing Attack" or spell == "Steel Wing" then local effectpos = getThingPosWithDebug(cid) local effect = 255 local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) if a == 0 then effect = spell == "Steel Wing" and 251 or 128 effectpos.x = effectpos.x + 1 effectpos.y = effectpos.y - 1 --alterado v1.4 elseif a == 1 then effectpos.x = effectpos.x + 2 effectpos.y = effectpos.y + 1 effect = spell == "Steel Wing" and 253 or 129 elseif a == 2 then effectpos.x = effectpos.x + 1 effectpos.y = effectpos.y + 2 effect = spell == "Steel Wing" and 252 or 131 elseif a == 3 then effectpos.x = effectpos.x - 1 effectpos.y = effectpos.y + 1 effect = spell == "Steel Wing" and 254 or 130 end doSendMagicEffect(effectpos, effect) doMoveInArea2(cid, 0, wingatk, FLYINGDAMAGE, min, max, spell) elseif spell == "Magma Storm" then local eff = {6, 35, 35, 6} local area = {flames1, flames2, flames3, flames4} addEvent(doMoveInArea2, 2*450, cid, 2, flames0, FIREDAMAGE, min, max, spell) for i = 0, 3 do addEvent(doMoveInArea2, i*450, cid, eff[i+1], area[i+1], FIREDAMAGE, min, max, spell) end elseif spell == "Bubbles" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2) doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 25) --alterado v2.7 elseif spell == "Clamp" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2) doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 53) --alterado v2.7 elseif spell == "Water Gun" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local p = getThingPosWithDebug(cid) local t = { [0] = {69, {x=p.x, y=p.y-1, z=p.z}}, [1] = {70, {x=p.x+6, y=p.y, z=p.z}}, --alterado v2.8 [2] = {71, {x=p.x, y=p.y+6, z=p.z}}, [3] = {72, {x=p.x-1, y=p.y, z=p.z}}, } doMoveInArea2(cid, 0, triplo6, WATERDAMAGE, min, max, spell) doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "Waterball" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2) doDanoWithProtectWithDelay(cid, target, WATERDAMAGE, min, max, 68, waba) elseif spell == "Aqua Tail" then local function rebackSpd(cid, sss) if not isCreature(cid) then return true end doChangeSpeed(cid, sss) setPlayerStorageValue(cid, 446, -1) end local x = getCreatureSpeed(cid) doFaceOpposite(cid) doChangeSpeed(cid, -x) addEvent(rebackSpd, 400, cid, x) setPlayerStorageValue(cid, 446, 1) doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 68) elseif spell == "Hydro Cannon" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area, eff) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, WATERDAMAGE, area, 0, 0, 0, eff) doAreaCombatHealth(cid, WATERDAMAGE, area, whirl3, -min, -max, 68) end end for a = 0, 4 do local t = { --alterado v1.4 [0] = {64, {x=p.x, y=p.y-(a+1), z=p.z}}, [1] = {65, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {66, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {67, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1]) end elseif spell == "Harden" or spell == "Calm Mind" or spell == "Defense Curl" or spell == "Charm" then --alterado v1.4 if spell == "Calm Mind" then eff = 133 elseif spell == "Charm" then eff = 147 --efeito n eh esse.. e n sei se eh soh bonus de def, ou sp.def tb.. ;x else eff = 144 end local ret = {} ret.id = cid ret.cd = 8 ret.eff = eff ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Bubble Blast" then --cid, effDist, effDano, areaEff, areaDano, element, min, max doMoveInAreaMulti(cid, 2, 68, bullet, bulletDano, WATERDAMAGE, min, max) elseif spell == "Skull Bash" then local ret = {} ret.id = 0 ret.cd = 9 --alterado v2.6 ret.eff = 118 ret.check = 0 ret.first = true ret.cond = "Paralyze" doMoveInArea2(cid, 118, reto5, NORMALDAMAGE, min, max, spell, ret) elseif spell == "Hydropump" then local pos = getThingPosWithDebug(cid) local function doSendBubble(cid, pos) if not isCreature(cid) then return true end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doSendDistanceShoot(getThingPosWithDebug(cid), pos, 2) doSendMagicEffect(pos, 53) end --alterado!! for a = 1, 20 do local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z} addEvent(doSendBubble, a * 25, cid, lugar) end addEvent(doDanoWithProtect, 150, cid, WATERDAMAGE, pos, waterarea, -min, -max, 0) elseif spell == "String Shot" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23) local ret = {} ret.id = target ret.cd = 6 ret.eff = 137 ret.check = getPlayerStorageValue(target, conds["Stun"]) ret.spell = spell ret.cond = "Stun" addEvent(doMoveDano2, 150, cid, target, BUGDAMAGE, 0, 0, ret, spell) elseif spell == "Bug Bite" then doSendMagicEffect(getThingPosWithDebug(target), 244) doDanoInTargetWithDelay(cid, target, BUGDAMAGE, min, max, 8) --alterado v2.7 elseif spell == "Super Sonic" then local rounds = math.random(4, 7) rounds = rounds + math.floor(getPokemonLevel(cid) / 35) doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32) local ret = {} ret.id = target ret.cd = rounds ret.check = getPlayerStorageValue(target, conds["Confusion"]) ret.cond = "Confusion" addEvent(doMoveDano2, 150, cid, target, NORMALDAMAGE, 0, 0, ret, spell) elseif spell == "Whirlwind" then area = {SL1, SL2, SL3, SL4} for i = 0, 3 do addEvent(doMoveInArea2, i*300, cid, 42, area[i+1], FLYINGDAMAGE, min, max, spell) end elseif spell == "Psybeam" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local t = { [0] = 58, --alterado v2.6 [1] = 234, [2] = 58, [3] = 209, } doMoveInArea2(cid, t[a], reto4, psyDmg, min, max, spell) --alterado v1.4 elseif spell == "Sand Attack" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local t = { [0] = 120, [1] = 121, [2] = 122, [3] = 119, } local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 34 ret.check = 0 ret.spell = spell ret.cond = "Miss" doCreatureSetLookDir(cid, a) --sera? '-' stopNow(cid, 1000) doMoveInArea2(cid, t[a], reto5, GROUNDDAMAGE, 0, 0, spell, ret) elseif spell == "Confusion" or spell == "Night Shade" then local rounds = math.random(4, 7) --rever area... rounds = rounds + math.floor(getPokemonLevel(cid) / 35) if spell == "Confusion" then dano = psyDmg --alterado v1.4 else dano = ghostDmg end local ret = {} ret.id = 0 ret.check = 0 ret.cd = rounds ret.cond = "Confusion" doMoveInArea2(cid, 136, selfArea1, dano, min, max, spell, ret) elseif spell == "Horn Attack" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15) doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v2.7 elseif spell == "Poison Sting" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15) doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 8) --alterado v2.7 elseif spell == "Fury Cutter" or spell == "Red Fury" then local effectpos = getThingPosWithDebug(cid) local effect = 255 local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) if a == 0 then if getSubName(cid, target) == "Scizor" then --alterado v2.6.1 effect = 236 else effect = 128 end effectpos.x = effectpos.x + 1 effectpos.y = effectpos.y - 1 elseif a == 1 then effectpos.x = effectpos.x + 2 effectpos.y = effectpos.y + 1 if getSubName(cid, target) == "Scizor" then --alterado v2.6.1 effect = 232 else effect = 129 end elseif a == 2 then effectpos.x = effectpos.x + 1 effectpos.y = effectpos.y + 2 if getSubName(cid, target) == "Scizor" then --alterado v2.6.1 effect = 233 else effect = 131 end elseif a == 3 then effectpos.x = effectpos.x - 1 effectpos.y = effectpos.y + 1 if getSubName(cid, target) == "Scizor" then --alterado v2.6.1 effect = 224 else effect = 130 end end local function doFury(cid, effect) if not isCreature(cid) then return true end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doSendMagicEffect(effectpos, effect) doMoveInArea2(cid, 2, wingatk, BUGDAMAGE, min, max, spell) end addEvent(doFury, 0, cid, effect) addEvent(doFury, 350, cid, effect) elseif spell == "Pin Missile" then doMoveInAreaMulti(cid, 13, 7, bullet, bulletDano, BUGDAMAGE, min, max) elseif spell == "Strafe" or spell == "Agility" then local ret = {} ret.id = cid ret.cd = 15 ret.eff = 14 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Gust" then doMoveInArea2(cid, 42, reto5, FLYINGDAMAGE, min, max, spell) elseif spell == "Drill Peck" then doDanoWithProtect(cid, FLYINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 148) elseif spell == "Tornado" then local pos = getThingPosWithDebug(cid) local function doSendTornado(cid, pos) if not isCreature(cid) then return true end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doSendDistanceShoot(getThingPosWithDebug(cid), pos, 22) doSendMagicEffect(pos, 42) end for b = 1, 3 do for a = 1, 20 do local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z} addEvent(doSendTornado, a * 75, cid, lugar) end end doDanoWithProtect(cid, FLYINGDAMAGE, pos, waterarea, -min, -max, 0) elseif spell == "Bite" or tonumber(spell) == 5 then doDanoWithProtect(cid, DARKDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 146) elseif spell == "Super Fang" then doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 244) elseif spell == "Poison Fang" then doSendMagicEffect(getThingPosWithDebug(target), 244) doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 114) --alterado v2.7 elseif spell == "Sting Gun" then local function doGun(cid, target) if not isCreature(cid) or not isCreature(target) then return true end --alterado v2.7 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 13) doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 8) --alterado v2.7 end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 200, cid, 3644587, 1) for i = 0, 2 do addEvent(doGun, i*100, cid, target) end elseif spell == "Acid" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 14) doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 20) --alterado v2.7 elseif spell == "Fear" or spell == "Roar" then local ret = {} ret.id = 0 ret.cd = 5 ret.check = 0 ret.skill = spell ret.cond = "Fear" doMoveInArea2(cid, 0, confusion, DARKDAMAGE, 0, 0, spell, ret) elseif spell == "Iron Tail" then local function rebackSpd(cid, sss) if not isCreature(cid) then return true end doChangeSpeed(cid, sss) setPlayerStorageValue(cid, 446, -1) end local x = getCreatureSpeed(cid) doFaceOpposite(cid) doChangeSpeed(cid, -x) addEvent(rebackSpd, 400, cid, x) setPlayerStorageValue(cid, 446, 1) doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 160) elseif spell == "Thunder Shock" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 40) doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v2.7 elseif spell == "Thunder Bolt" then --alterado v2.7 local function doThunderFall(cid, frompos, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local ry = math.abs(frompos.y - pos.y) doSendDistanceShoot(frompos, getThingPosWithDebug(target), 41) addEvent(doDanoInTarget, ry * 11, cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v2.7 end local function doThunderUp(cid, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local mps = getThingPosWithDebug(cid) local xrg = math.floor((pos.x - mps.x) / 2) local topos = mps topos.x = topos.x + xrg local rd = 7 topos.y = topos.y - rd doSendDistanceShoot(getThingPosWithDebug(cid), topos, 41) addEvent(doThunderFall, rd * 49, cid, topos, target) end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 350, cid, 3644587, -1) for thnds = 1, 2 do addEvent(doThunderUp, thnds * 155, cid, target) end elseif spell == "Thunder Wave" then local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 48 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 48, db1, ELECTRICDAMAGE, min, max, spell, ret) --alterado v2.8 elseif spell == "Thunder" then local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 48 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 48, thunderr, ELECTRICDAMAGE, min, max, spell, ret) elseif spell == "Mega Kick" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113) --alterado v2.7 elseif spell == "Thunder Punch" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doSendMagicEffect(getThingPosWithDebug(target), 112) doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v2.7 elseif spell == "Electric Storm" then local master = isSummon(cid) and getCreatureMaster(cid) or cid local function doFall(cid) for rocks = 1, 42 do addEvent(fall, rocks*35, cid, master, ELECTRICDAMAGE, 41, 48) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, 41) end addEvent(doFall, 450, cid) local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 48 ret.spell = spell ret.cond = "Stun" addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ELECTRICDAMAGE, min, max, spell, ret) elseif spell == "Mud Shot" or spell == "Mud Slap" then if isCreature(target) then --alterado v2.8 local contudion = spell == "Mud Shot" and "Miss" or "Stun" local ret = {} ret.id = target ret.cd = 9 ret.eff = 34 ret.check = getPlayerStorageValue(target, conds[contudion]) ret.spell = spell ret.cond = contudion doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6) addEvent(doMoveDano2, 100, cid, target, GROUNDDAMAGE, -min, -max, ret, spell) end elseif spell == "Rollout" then --alterado v2.6 tabela agora esta no começo do script local function setOutfit(cid, outfit) if isCreature(cid) and getCreatureCondition(cid, CONDITION_OUTFIT) == true then if getCreatureOutfit(cid).lookType == outfit then doRemoveCondition(cid, CONDITION_OUTFIT) if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then if isSummon(cid) then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v2.8 end end end end end local function setOutfit(cid, outfit) if isCreature(cid) and getCreatureCondition(cid, CONDITION_OUTFIT) == true then if getCreatureOutfit(cid).lookType == outfit then doRemoveCondition(cid, CONDITION_OUTFIT) if getCreatureName(cid) == "Shiny Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Shiny Ditto" then if isSummon(cid) then local item = getPlayerSlotItem(getCreatureMaster(cid), 8) doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v2.8 end end end end end if RollOuts[getSubName(cid, target)] then doSetCreatureOutfit(cid, RollOuts[getSubName(cid, target)], -1) --alterado v2.6.1 end local outfit = getCreatureOutfit(cid).lookType local function roll(cid, outfit) if not isCreature(cid) then return true end if isSleeping(cid) then return true end if RollOuts[getSubName(cid, target)] then doSetCreatureOutfit(cid, RollOuts[getSubName(cid, target)], -1) --alterado v2.6.1 end doDanoWithProtect(cid, ROCKDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0) end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 9000, cid, 3644587, -1) for r = 1, 11 do --8 addEvent(roll, 750 * r, cid, outfit) end addEvent(setOutfit, 9050, cid, outfit) elseif spell == "Shockwave" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area, areaEff, eff) if isCreature(cid) then if not isSightClear(p, area, false) then return true end --testar o atk!! doAreaCombatHealth(cid, GROUNDDAMAGE, areaEff, 0, 0, 0, eff) doAreaCombatHealth(cid, GROUNDDAMAGE, area, whirl3, -min, -max, 255) end end for a = 0, 5 do local t = { [0] = {126, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}}, [1] = {124, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+1), y=p.y+1, z=p.z}}, [2] = {125, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+1), z=p.z}}, [3] = {123, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}} } addEvent(sendAtk, 325*a, cid, t[d][2], t[d][3], t[d][1]) end elseif spell == "Earthshock" then local eff = getSubName(cid, target) == "Crystal Onix" and 179 or 127 --alterado v2.6.1 doAreaCombatHealth(cid, GROUNDDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255) local sps = getThingPosWithDebug(cid) sps.x = sps.x+1 sps.y = sps.y+1 doSendMagicEffect(sps, eff) elseif spell == "Earthquake" then local eff = getSubName(cid, target) == "Crystal Onix" and 175 or 118 --alterado v2.6.1 local function doQuake(cid) if not isCreature(cid) then return false end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doMoveInArea2(cid, eff, confusion, GROUNDDAMAGE, min, max, spell) end times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000} setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1) for i = 1, #times do --alterado v1.4 addEvent(doQuake, times[i], cid) end elseif spell == "Stomp" then local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 34 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret) elseif spell == "Toxic Spikes" then local function doToxic(cid, target) if not isCreature(cid) or not isCreature(target) then return true end --alterado v2.7 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15) doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 114) --alterado v2.7 end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 300, cid, 3644587, -1) addEvent(doToxic, 0, cid, target) addEvent(doToxic, 300, cid, target) elseif spell == "Horn Drill" then local function doHorn(cid, target) if not isCreature(cid) or not isCreature(target) then return true end --alterado v2.7 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 25) doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v2.7 end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 300, cid, 3644587, -1) addEvent(doHorn, 0, cid, target) addEvent(doHorn, 300, cid, target) elseif spell == "Doubleslap" then doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 148) elseif spell == "Lovely Kiss" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 16) local ret = {} ret.id = target ret.cd = 9 ret.check = getPlayerStorageValue(target, conds["Stun"]) ret.eff = 147 ret.spell = spell ret.cond = "Stun" addEvent(doMoveDano2, 150, cid, target, NORMALDAMAGE, 0, 0, ret, spell) elseif spell == "Sing" then local ret = {} ret.id = 0 ret.cd = math.random(6, 10) ret.check = 0 ret.first = true ret.cond = "Sleep" --alterado v2.6 doMoveInArea2(cid, 33, selfArea1, NORMALDAMAGE, 0, 0, spell, ret) elseif spell == "Multislap" then doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 3) elseif spell == "Metronome" then local spells = {"Shadow Storm", "Electric Storm", "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 --alterado v2.8 o atk ta la pra baixo agora... local function sendFireEff(cid, dir) if not isCreature(cid) then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doDanoWithProtect(cid, FIREDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 15) end local function doWheel(cid) if not isCreature(cid) then return true end local t = { [1] = SOUTH, [2] = SOUTHEAST, [3] = EAST, [4] = NORTHEAST, [5] = NORTH, --alterado! [6] = NORTHWEST, [7] = WEST, [8] = SOUTHWEST, } for a = 1, 8 do addEvent(sendFireEff, a * 140, cid, t[a]) end end doWheel(cid, false, cid) ]] elseif spell == "Hyper Voice" then local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 22 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 22, tw1, NORMALDAMAGE, min, max, spell, ret) elseif spell == "Restore" or spell == "Selfheal" then local min = (getCreatureMaxHealth(cid) * 75) / 100 local max = (getCreatureMaxHealth(cid) * 85) / 100 local function doHealArea(cid, min, max) local amount = math.random(min, max) if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid)) end if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then doCreatureAddHealth(cid, amount) doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) end end doSendMagicEffect(getThingPosWithDebug(cid), 132) doHealArea(cid, min, max) elseif spell == "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 --alterado v2.7 local function doThunderFall(cid, frompos, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local ry = math.abs(frompos.y - pos.y) doSendDistanceShoot(frompos, getThingPosWithDebug(target), 39) addEvent(doDanoInTarget, ry * 11, cid, target, NORMALDAMAGE, min, max, 28) --alterado v2.7 end local function doThunderUp(cid, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local mps = getThingPosWithDebug(cid) local xrg = math.floor((pos.x - mps.x) / 2) local topos = mps topos.x = topos.x + xrg local rd = 7 topos.y = topos.y - rd doSendDistanceShoot(getThingPosWithDebug(cid), topos, 39) addEvent(doThunderFall, rd * 49, cid, topos, target) end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 350, cid, 3644587, -1) for thnds = 1, 2 do addEvent(doThunderUp, thnds * 155, cid, target) end elseif spell == "Psywave" then doMoveInArea2(cid, 133, db1, psyDmg, min, max, spell) elseif spell == "Triple Kick" or spell == "Triple Kick Lee" then doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 110) elseif spell == "Karate Chop" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 113) --alterado v2.7 elseif spell == "Ground Chop" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area, area2, eff) --alterado v2.6 if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, FIGHTINGDAMAGE, area, 0, 0, 0, eff) doAreaCombatHealth(cid, FIGHTINGDAMAGE, area2, whirl3, -min, -max, 255) --alterado v2.6 end end for a = 0, 4 do local t = { [0] = {99, {x=p.x+1, y=p.y-(a+1), z=p.z}, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v2.6 [1] = {99, {x=p.x+(a+2), y=p.y+1, z=p.z}, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {99, {x=p.x+1, y=p.y+(a+2), z=p.z}, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {99, {x=p.x-(a+1), y=p.y+1, z=p.z}, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 270*a, cid, t[d][2], t[d][3], t[d][1]) --alterado v2.6 end elseif spell == "Mega Punch" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 112) --alterado v2.7 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) local ret = {} ret.id = target ret.cd = math.random(6, 9) ret.check = getPlayerStorageValue(target, conds["Sleep"]) ret.first = true --alterado v2.6 ret.cond = "Sleep" addEvent(doMoveDano2, 150, cid, target, PSYCHICDAMAGE, 0, 0, ret, spell) elseif spell == "Dizzy Punch" then local rounds = getPokemonLevel(cid) / 12 rounds = rounds + 2 local ret = {} ret.id = target ret.check = getPlayerStorageValue(target, conds["Confusion"]) ret.cd = rounds ret.cond = "Confusion" doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 26) doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 112) addEvent(doMoveDano2, 50, cid, target, NORMALDAMAGE, 0, 0, ret, spell) elseif spell == "Ice Punch" then local ret = {} ret.id = target ret.cd = 9 ret.eff = 43 ret.check = getPlayerStorageValue(target, conds["Slow"]) ret.first = true ret.cond = "Slow" doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28) doSendMagicEffect(getThingPosWithDebug(target), 112) doDanoWithProtectWithDelay(cid, target, ICEDAMAGE, min, max, 43) addEvent(doMoveDano2, 200, cid, target, ICEDAMAGE, 0, 0, ret, spell) elseif spell == "Ice Beam" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local p = getThingPosWithDebug(cid) local t = { [0] = {97, {x=p.x+1, y=p.y-1, z=p.z}}, [1] = {96, {x=p.x+6, y=p.y+1, z=p.z}}, [2] = {97, {x=p.x+1, y=p.y+6, z=p.z}}, [3] = {96, {x=p.x-1, y=p.y+1, z=p.z}}, } local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 43 ret.check = 0 ret.first = true ret.cond = "Slow" doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret) doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "Psy Pulse" or spell == "Cyber Pulse" or spell == "Dark Pulse" then damage = skill == "Dark Pulse" and DARKDAMAGE or psyDmg local function doPulse(cid, eff) if not isCreature(cid) then return true end doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3) doDanoInTargetWithDelay(cid, target, damage, min, max, eff) --alterado v2.7 end if spell == "Cyber Pulse" then eff = 11 elseif spell == "Dark Pulse" then eff = 47 --efeito n eh esse mas... ;p else eff = 133 end addEvent(doPulse, 0, cid, eff) addEvent(doPulse, 250, cid, eff) elseif spell == "Psyusion" then local rounds = math.random(4, 7) rounds = rounds + math.floor(getPokemonLevel(cid) / 35) local eff = {136, 133, 136, 133, 137} local area = {psy1, psy2, psy3, psy4, psy5} local ret = {} ret.id = 0 ret.check = 0 ret.cd = rounds ret.cond = "Confusion" setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1) for i = 0, 4 do addEvent(doMoveInArea2, i*400, cid, eff[i+1], area[i+1], psyDmg, min, max, spell, ret) end elseif spell == "Triple Punch" then doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 110) elseif spell == "Fist Machine" then local mpos = getThingPosWithDebug(cid) local b = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local effect = 0 local xvar = 0 local yvar = 0 if b == SOUTH then effect = 218 yvar = 2 elseif b == NORTH then effect = 217 elseif b == WEST then effect = 216 elseif b == EAST then effect = 215 xvar = 2 end mpos.x = mpos.x + xvar mpos.y = mpos.y + yvar doSendMagicEffect(mpos, effect) doMoveInArea2(cid, 0, machine, FIGHTINGDAMAGE, min, max, spell) elseif spell == "Destroyer Hand" then doMoveInAreaMulti(cid, 26, 111, bullet, bulletDano, FIGHTINGDAMAGE, min, max) elseif spell == "Rock Throw" then local effD = getSubName(cid, target) == "Crystal Onix" and 0 or 11 local eff = getSubName(cid, target) == "Crystal Onix" and 176 or 44 --alterado v2.6.1 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), effD) doDanoInTargetWithDelay(cid, target, ROCKDAMAGE, min, max, eff) --alterado v2.7 elseif spell == "Rock Slide" or spell == "Stone Edge" then atk = { ["Rock Slide"] = {11, 44, 0, 176}, ["Stone Edge"] = {11, 239} } local effD = getSubName(cid, target) == "Crystal Onix" and atk[spell][3] or atk[spell][1] local eff = getSubName(cid, target) == "Crystal Onix" and atk[spell][4] or atk[spell][2] --alterado v2.6.1 --alterado v2.7 local function doRockFall(cid, frompos, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local ry = math.abs(frompos.y - pos.y) doSendDistanceShoot(frompos, getThingPosWithDebug(target), effD) addEvent(doDanoInTarget, ry * 11, cid, target, ROCKDAMAGE, min, max, eff) --alterado v2.7 end local function doRockUp(cid, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local mps = getThingPosWithDebug(cid) local xrg = math.floor((pos.x - mps.x) / 2) local topos = mps topos.x = topos.x + xrg local rd = 7 topos.y = topos.y - rd doSendDistanceShoot(getThingPosWithDebug(cid), topos, effD) addEvent(doRockFall, rd * 49, cid, topos, target) end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 350, cid, 3644587, -1) for thnds = 1, 2 do addEvent(doRockUp, thnds * 155, cid, target) end elseif spell == "Falling Rocks" then local effD = getSubName(cid, target) == "Crystal Onix" and 0 or 11 local eff = getSubName(cid, target) == "Crystal Onix" and 176 or 44 --alterado v2.6.1 local master = isSummon(cid) and getCreatureMaster(cid) or cid ------------ local function doFall(cid) for rocks = 1, 62 do addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, effD) end addEvent(doFall, 450, cid) addEvent(doDanoWithProtect, 1400, cid, ROCKDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0) elseif spell == "Selfdestruct" then local function death(cid) if isCreature(cid) then if pokeHaveReflect(cid) then return true end --alterado v2.6 doCreatureAddHealth(cid, -getCreatureMaxHealth(cid)) end end doMoveInArea2(cid, 5, selfArea1, NORMALDAMAGE, min, max, spell) --alterado v2.6 addEvent(death, 300, cid) elseif spell == "Crusher Stomp" then local pL = getThingPosWithDebug(cid) pL.x = pL.x+5 pL.y = pL.y+1 ----------------- local pO = getThingPosWithDebug(cid) pO.x = pO.x-3 pO.y = pO.y+1 ------------------ local pN = getThingPosWithDebug(cid) pN.x = pN.x+1 pN.y = pN.y+5 ----------------- local pS = getThingPosWithDebug(cid) pS.x = pS.x+1 pS.y = pS.y-3 local po = {pL, pO, pN, pS} local po2 = { {x = pL.x, y = pL.y-1, z = pL.z}, {x = pO.x, y = pO.y-1, z = pO.z}, {x = pN.x-1, y = pN.y, z = pN.z}, {x = pS.x-1, y = pS.y, z = pS.z}, } local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 34 ret.spell = spell ret.cond = "Stun" for i = 1, 4 do doSendMagicEffect(po[i], 127) doAreaCombatHealth(cid, GROUNDDAMAGE, po2[i], crusher, -min, -max, 255) end doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret) elseif spell == "Water Pulse" then 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) doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v2.7 end addEvent(doBoom, 0, cid) addEvent(doBoom, 250, cid) elseif spell == "Stickmerang" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 34) doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 212) --alterado v2.7 elseif spell == "Stickslash" then local function sendStickEff(cid, dir) if not isCreature(cid) then return true end doAreaCombatHealth(cid, FLYINGDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 212) end local function doStick(cid) if not isCreature(cid) then return true end local t = { [1] = SOUTHWEST, [2] = SOUTH, [3] = SOUTHEAST, [4] = EAST, [5] = NORTHEAST, [6] = NORTH, [7] = NORTHWEST, [8] = WEST, [9] = SOUTHWEST, } for a = 1, 9 do addEvent(sendStickEff, a * 140, cid, t[a]) end end doStick(cid, false, cid) elseif spell == "Stick Throw" then stopNow(cid, 2000) doMoveInArea2(cid, 212, reto4, FLYINGDAMAGE, min, max, spell) elseif spell == "Pluck" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 111) --alterado v2.7 elseif spell == "Tri-Attack" then --alterado v2.7 setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 600, cid, 3644587, -1) doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 42) for i = 0, 2 do addEvent(doDanoInTargetWithDelay, i*300, cid, target, NORMALDAMAGE, min, max, 238) --alterado v2.7 end elseif spell == "Fury Attack" then --alterado v2.7 setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 600, cid, 3644587, -1) for i = 0, 2 do addEvent(doDanoInTargetWithDelay, i*300, cid, target, NORMALDAMAGE, min, max, 110) --alterado v2.7 end elseif spell == "Ice Shards" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28) doDanoInTargetWithDelay(cid, target, ICEDAMAGE, min, max, 43) --alterado v2.7 elseif spell == "Icy Wind" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 43 ret.check = 0 ret.first = true ret.cond = "Slow" doMoveInArea2(cid, 17, 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] = {57, {x=p.x+6, y=p.y+1, z=p.z}}, --alterado v2.6 [2] = {186, {x=p.x+1, y=p.y+6, z=p.z}}, [3] = {57, {x=p.x-1, y=p.y+1, z=p.z}}, --alterado v2.6 } local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 43 ret.check = 0 ret.first = true ret.cond = "Slow" doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret) doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "Rest" then local ret = {} ret.id = cid ret.cd = 6 ret.eff = 0 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Sludge" then --alterado v2.7 local function doSludgeFall(cid, frompos, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local ry = math.abs(frompos.y - pos.y) doSendDistanceShoot(frompos, getThingPosWithDebug(target), 6) addEvent(doDanoInTargetWithDelay, ry * 11, cid, target, POISONDAMAGE, min, max, 116) --alterado v2.7 end local function doSludgeUp(cid, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local mps = getThingPosWithDebug(cid) local xrg = math.floor((pos.x - mps.x) / 2) local topos = mps topos.x = topos.x + xrg local rd = 7 topos.y = topos.y - rd doSendDistanceShoot(getThingPosWithDebug(cid), topos, 6) addEvent(doSludgeFall, rd * 49, cid, topos, target) end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 350, cid, 3644587, -1) for thnds = 1, 2 do addEvent(doSludgeUp, thnds * 155, cid, target) end elseif spell == "Mud Bomb" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6) --alterado v2.8 doDanoWithProtectWithDelay(cid, target, MUDBOMBDAMAGE, min, max, 116, bombWee2) elseif spell == "Mortal Gas" then local pos = getThingPosWithDebug(cid) local function doSendAcid(cid, pos) if not isCreature(cid) then return true end doSendDistanceShoot(getThingPosWithDebug(cid), pos, 14) doSendMagicEffect(pos, 114) end for b = 1, 3 do for a = 1, 20 do local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z} addEvent(doSendAcid, a * 75, cid, lugar) end end doDanoWithProtect(cid, POISONDAMAGE, pos, waterarea, -min, -max, 0) elseif spell == "Rock Drill" or spell == "Megahorn" or spell == "Rock Blast" then 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 stopNow(cid, 200) --alterado v2.6 doCreatureSetLookDir(cid, 2) local effect = 0 local pos = getThingPosWithDebug(cid) pos.x = pos.x + 1 pos.y = pos.y + 1 local effect = getSubName(cid, target) == "Tangela" and 213 or 229 --alterado v2.6.1 doSendMagicEffect(pos, effect) doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0) elseif spell == "Super Vines" then stopNow(cid, 200) --alterado v2.6 doCreatureSetLookDir(cid, 2) local effect = 0 local pos = getThingPosWithDebug(cid) pos.x = pos.x + 1 pos.y = pos.y + 1 local effect = getSubName(cid, target) == "Tangrowth" and 213 or 229 --alterado v2.6.1 doSendMagicEffect(pos, effect) doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0) elseif spell == "Epicenter" then doMoveInArea2(cid, 127, epicenter, GROUNDDAMAGE, min, max, spell) elseif spell == "Bubblebeam" then local function sendBubbles(cid) if not isCreature(cid) or not isCreature(target) then return true end doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2) doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 25) --alterado v2.7 end sendBubbles(cid) addEvent(sendBubbles, 250, cid) elseif spell == "Swift" then local function sendSwift(cid, target) if not isCreature(cid) or not isCreature(target) then return true end doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32) doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v2.7 end addEvent(sendSwift, 100, cid, target) addEvent(sendSwift, 200, cid, target) elseif spell == "Spark" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32) doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v2.7 elseif spell == "Mimic Wall" then local p = getThingPosWithDebug(cid) local dirr = getCreatureLookDir(cid) if dirr == 0 or dirr == 2 then item = 11439 else item = 11440 end local wall = { [0] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}}, [2] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}}, [1] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}}, [3] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}}, } function removeAllActionIDs(pos, onlyOne) if onlyOne then local thing1 = {x=pos.x,y=pos.y,z=pos.z,stackpos=0} local tile1 = getTileThingWithProtect(thing1).uid doSetItemActionId(tile1, 0) end n = 0 for i = 1, #pos do n = n + 1 thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=0} local tile = getTileThingWithProtect(thing).uid doSetItemActionId(tile, 0) end end for i = 1, 3 do if wall[dirr] then local t = wall[dirr] if hasTile(t[i]) and 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", ["Shiny Scizor"] = "Shiny ScizorTeam", } local function RemoveTeam(cid) if isCreature(cid) then doSendMagicEffect(getThingPosWithDebug(cid), 211) doRemoveCreature(cid) end end local function sendEff(cid, master, t) if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then doSendMagicEffect(getThingPosWithDebug(cid), 86, master) addEvent(sendEff, 1000, cid, master, t-1) --alterado v2.9 end end if getPlayerStorageValue(cid, 637500) >= 1 then return true end local master = getCreatureMaster(cid) local item = getPlayerSlotItem(master, 8) local life, maxLife = getCreatureHealth(cid), getCreatureMaxHealth(cid) local name = getItemAttribute(item.uid, "poke") local pos = getThingPosWithDebug(cid) local time = 21 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 = getSubName(cid, target) == "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 getSubName(cid, target) == "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 sendEff(cid, master, time) --alterado v2.9 setPlayerStorageValue(pk2, 637500, 1) setPlayerStorageValue(pk3, 637500, 1) if getSubName(cid, target) == "Scizor" then setPlayerStorageValue(pk4, 637500, 1) end setPlayerStorageValue(master, 637501, 1) addEvent(setPlayerStorageValue, time * 1000, master, 637501, -2) addEvent(RemoveTeam, time * 1000, pk2) addEvent(RemoveTeam, time * 1000, pk3) if getSubName(cid, target) == "Scizor" then addEvent(RemoveTeam, time * 1000, pk4) end end elseif spell == "Team Slice" or spell == "Team Claw" then --alterado v2.4 local master = getCreatureMaster(cid) if #getCreatureSummons(master) < 2 or not isCreature(target) then return true end local summons = getCreatureSummons(master) local posis = {[1] = pos1, [2] = pos2, [3] = pos3, [4] = pos4} if getSubName(cid, target) == "Scyther" then --alterado v2.6.1 eff = 27 elseif getSubName(cid, target) == "Shiny Scyther" then --alterado v2.6.1 eff = 29 else eff = 42 --alterado v2.5 end if #getCreatureSummons(master) >= 2 and isCreature(target) then if isCreature(cid) then addEvent(doDanoInTarget, 500, cid, target, BUGDAMAGE, -min, -max, 0) --alterado v2.7 for i = 1, #summons do posis[i] = getThingPosWithDebug(summons[i]) doDisapear(summons[i]) stopNow(summons[i], 670) addEvent(doSendMagicEffect, 300, posis[i], 211) addEvent(doSendDistanceShoot, 350, posis[i], getThingPosWithDebug(target), eff) addEvent(doSendDistanceShoot, 450, getThingPosWithDebug(target), posis[i], eff) addEvent(doSendDistanceShoot, 600, posis[i], getThingPosWithDebug(target), eff) addEvent(doSendDistanceShoot, 650, getThingPosWithDebug(target), posis[i], eff) addEvent(doAppear, 670, summons[i]) end end end elseif spell == "Blizzard" then local master = isSummon(cid) and getCreatureMaster(cid) or cid local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 43 ret.check = 0 ret.first = true ret.cond = "Slow" local function doFall(cid) for rocks = 1, 42 do addEvent(fall, rocks*35, cid, master, ICEDAMAGE, 28, 52) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, 28) end --alterado v1.4 addEvent(doFall, 450, cid) addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ICEDAMAGE, min, max, spell, ret) elseif spell == "Great Love" then local master = getCreatureMaster(cid) or 0 local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 147 ret.check = 0 ret.spell = spell ret.cond = "Stun" for rocks = 1, 62 do addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 147) end addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret) elseif spell == "Fire Punch" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doSendMagicEffect(getThingPosWithDebug(target), 112) doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 35) --alterado v2.7 elseif spell == "Guillotine" then doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 146) elseif spell == "Hyper Beam" then --alterado v2.7 \/ local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local p = getThingPosWithDebug(cid) local t = { [0] = {149, {x=p.x+1, y=p.y-1, z=p.z}}, [1] = {150, {x=p.x+6, y=p.y+1, z=p.z}}, [2] = {149, {x=p.x+1, y=p.y+6, z=p.z}}, [3] = {150, {x=p.x-1, y=p.y+1, z=p.z}}, } doMoveInArea2(cid, 0, triplo6, NORMALDAMAGE, min, max, spell) doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "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) doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v2.7 elseif spell == "Zap Cannon" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local p = getThingPosWithDebug(cid) local t = { [0] = {73, {x=p.x, y=p.y-1, z=p.z}}, [1] = {74, {x=p.x+6, y=p.y, z=p.z}}, --alterado v2.8 [2] = {75, {x=p.x, y=p.y+6, z=p.z}}, [3] = {76, {x=p.x-1, y=p.y, z=p.z}}, } doMoveInArea2(cid, 0, triplo6, ELECTRICDAMAGE, min, max, spell) doMoveInArea2(cid, 177, reto6, ELECTRICDAMAGE, 0, 0, "Zap Cannon Eff") doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "Charge Beam" then local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local p = getThingPosWithDebug(cid) local t = { [0] = {73, {x=p.x, y=p.y-1, z=p.z}}, [1] = {74, {x=p.x+6, y=p.y, z=p.z}}, --alterado v2.8 [2] = {75, {x=p.x, y=p.y+6, z=p.z}}, [3] = {76, {x=p.x-1, y=p.y, z=p.z}}, } doMoveInArea2(cid, 0, triplo6, ELECTRICDAMAGE, min, max, spell) doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "Sacred Fire" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3) doDanoWithProtectWithDelay(cid, target, SACREDDAMAGE, min, max, 143, sacred) --alterado v2.6 elseif spell == "Blaze Kick" then doMoveInArea2(cid, 6, blaze, FIREDAMAGE, min, max, spell) addEvent(doMoveInArea2, 200, cid, 6, kick, FIREDAMAGE, min, max, spell) elseif spell == "Cross Chop" then doMoveInArea2(cid, 118, blaze, FIGHTINGDAMAGE, min, max, spell) addEvent(doMoveInArea2, 200, cid, 118, kick, FIGHTINGDAMAGE, min, max, spell) elseif spell == "Overheat" then doMoveInArea2(cid, 5, reto5, FIREDAMAGE, min, max, spell) elseif spell == "Ancient Power" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area, eff) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, ROCKDAMAGE, area, 0, 0, 0, eff) doAreaCombatHealth(cid, ROCKDAMAGE, area, whirl3, -min, -max, 137) end end for a = 0, 4 do local t = { [0] = {18, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.4 [1] = {18, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {18, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {18, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1]) end elseif spell == "Twister" then doMoveInAreaMulti(cid, 28, 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(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell) elseif spell == "Bonemerang" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7) doDanoInTargetWithDelay(cid, target, GROUNDDAMAGE, min, max, 227) --alterado v2.7 addEvent(doSendDistanceShoot, 250, getThingPosWithDebug(target), getThingPosWithDebug(cid), 7) elseif spell == "Bone Club" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7) doDanoInTargetWithDelay(cid, target, GROUNDDAMAGE, min, max, 118) --alterado v2.7 elseif spell == "Bone Slash" then local function sendStickEff(cid, dir) if not isCreature(cid) then return true end doAreaCombatHealth(cid, GROUNDDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 227) end local function doStick(cid) if not isCreature(cid) then return true end local t = { [1] = SOUTHWEST, [2] = SOUTH, [3] = SOUTHEAST, [4] = EAST, [5] = NORTHEAST, [6] = NORTH, [7] = NORTHWEST, [8] = WEST, [9] = SOUTHWEST, } for a = 1, 9 do addEvent(sendStickEff, a * 140, cid, t[a]) end end doStick(cid, false, cid) --alterado v1.4 elseif spell == "Furious Legs" or spell == "Ultimate Champion" or spell == "Fighter Spirit" then local ret = {} ret.id = cid ret.cd = 15 ret.eff = 13 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Sludge 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 --alterado v2.6 setPlayerStorageValue(cid, 95487, 1) doSendMagicEffect(getThingPosWithDebug(cid), 132) doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoWithProtectWithDelay(cid, target, psyDmg, -min, -max, 138) elseif spell == "Dark Eye" or spell == "Miracle Eye" then doSendMagicEffect(getThingPosWithDebug(cid), 47) setPlayerStorageValue(cid, 999457, 1) elseif spell == "Elemental Hands" then if getCreatureOutfit(cid).lookType == 1301 then print("Error occurred with move 'Elemental Hands', outfit of hitmonchan is wrong") doPlayerSendTextMessage(getCreatureMaster(cid), MESSAGE_STATUS_CONSOLE_BLUE, "A error are ocurred... A msg is sent to gamemasters!") return true end --proteçao pra n usar o move com o shiny hitmonchan com outfit diferente da do elite monchan do PO... local e = getCreatureMaster(cid) local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke") local hands = getItemAttribute(getPlayerSlotItem(e, 8).uid, "hands") if hands == 4 then doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", 0) doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][0].eff) doSetCreatureOutfit(cid, {lookType = hitmonchans[name][0].out}, -1) else doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", hands+1) doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][hands+1].eff) doSetCreatureOutfit(cid, {lookType = hitmonchans[name][hands+1].out}, -1) end elseif spell == "Crabhammer" then doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 225) elseif spell == "Ancient Fury" then local ret = {} ret.id = cid ret.cd = 15 ret.eff = 0 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Divine Punishment" then local roardirections = { [NORTH] = {SOUTH}, [SOUTH] = {NORTH}, [WEST] = {EAST}, [EAST] = {WEST}} local function divineBack(cid) if not isCreature(cid) then return true end local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1) for _,pid in pairs(uid) do dirrr = getCreatureDirectionToTarget(pid, cid) delay = getNextStepDelay(pid, 0) if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then setPlayerStorageValue(pid, 654878, 1) doChangeSpeed(pid, -getCreatureSpeed(pid)) doChangeSpeed(pid, 100) doPushCreature(pid, roardirections[dirrr][1], 1, 0) doChangeSpeed(pid, -getCreatureSpeed(pid)) addEvent(setPlayerStorageValue, 6450, pid, 654878, -1) addEvent(doRegainSpeed, 6450, pid) elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then setPlayerStorageValue(pid, 654878, 1) doChangeSpeed(pid, -getCreatureSpeed(pid)) doChangeSpeed(pid, 100) doPushCreature(pid, roardirections[dirrr][1], 1, 0) doChangeSpeed(pid, -getCreatureSpeed(pid)) addEvent(doRegainSpeed, 6450, pid) addEvent(setPlayerStorageValue, 6450, pid, 654878, -1) end end end local function doDivine(cid, min, max, spell, rounds, area) if not isCreature(cid) then return true end local ret = {} ret.id = 0 ret.check = 0 ret.cd = rounds ret.cond = "Confusion" for i = 1, 9 do addEvent(doMoveInArea2, i*500, cid, 137, area[i], psyDmg, min, max, spell, ret) end end local rounds = math.random(9, 12) local area = {punish1, punish2, punish3, punish1, punish2, punish3, punish1, punish2, punish3} local posi = getThingPosWithDebug(cid) posi.x = posi.x+1 posi.y = posi.y+1 setPlayerStorageValue(cid, 2365487, 1) addEvent(setPlayerStorageValue, 6450, cid, 2365487, -1) --alterado v1.4 doDisapear(cid) doChangeSpeed(cid, -getCreatureSpeed(cid)) doSendMagicEffect(posi, 247) addEvent(doAppear, 6450, cid) addEvent(doRegainSpeed, 6450, cid) local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1) for _,pid in pairs(uid) do if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then doChangeSpeed(pid, -getCreatureSpeed(pid)) elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then doChangeSpeed(pid, -getCreatureSpeed(pid)) end end addEvent(divineBack, 2100, cid) addEvent(doDivine, 2200, cid, min, max, spell, rounds, area) elseif isInArray({"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(doMoveDano2, 200, cid, target, GHOSTDAMAGE, 0, 0, ret, spell) elseif spell == "Leaf Blade" then local a = getThingPosWithDebug(target) posi = {x = a.x+1, y = a.y+1, z = a.z} doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) addEvent(doSendMagicEffect, 200, posi, 240) doDanoWithProtectWithDelay(cid, target, GRASSDAMAGE, -min, -max, 0, LeafBlade) elseif spell == "Eruption" or spell == "Elecball" then pos = getThingPosWithDebug(cid) pos.x = pos.x+1 pos.y = pos.y+1 atk = { ["Eruption"] = {241, FIREDAMAGE}, ["Elecball"] = {171, ELECTRICDAMAGE} } stopNow(cid, 1000) doSendMagicEffect(pos, atk[spell][1]) doMoveInArea2(cid, 0, bombWee1, atk[spell][2], min, max, spell) elseif spell == "Meteor Smash" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 20) doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, -min, -max, 242) --alterado v2.7 elseif spell == "Draco Meteor" then local effD = 5 local eff = 248 local master = isSummon(cid) and getCreatureMaster(cid) or cid local function doFall(cid) for rocks = 5, 42 do addEvent(fall, rocks*35, cid, master, DRAGONDAMAGE, effD, eff) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, effD) end addEvent(doFall, 450, cid) addEvent(doDanoWithProtect, 1400, cid, DRAGONDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0) elseif spell == "Dragon Pulse" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, DRAGONDAMAGE, area, pulse2, -min, -max, 255) end end for a = 0, 3 do local t = { [0] = {249, {x=p.x, y=p.y-(a+1), z=p.z}}, [1] = {249, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {249, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {249, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 300*a, cid, t[d][2]) addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse2, 0, 0, 177) addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse1, 0, 0, t[d][1]) end elseif spell == "Psy Ball" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3) doDanoInTargetWithDelay(cid, target, psyDmg, min, max, 250) --alterado v2.7 elseif spell == "SmokeScreen" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 34 ret.check = 0 ret.spell = spell ret.cond = "Miss" local function smoke(cid) if not isCreature(cid) then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doMoveInArea2(cid, 34, confusion, NORMALDAMAGE, 0, 0, spell, ret) end setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 1000, cid, 3644587, -1) for i = 0, 2 do addEvent(smoke, i*500, cid) end elseif spell == "Faint Attack" or spell == "Sucker Punch" then --alterado v2.5 doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, DARKDAMAGE, min, max, 237) --alterado v2.7 elseif spell == "Assurance" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area1, area2, eff) if isCreature(cid) then if not isSightClear(p, area1, false) then return true end if not isSightClear(p, area2, false) then return true end doAreaCombatHealth(cid, DARKDAMAGE, area1, 0, 0, 0, eff) doAreaCombatHealth(cid, DARKDAMAGE, area2, whirl3, -min, -max, 0) end end for a = 0, 3 do local t = { [0] = {230, {x=p.x+1, y=p.y-(a+1), z=p.z}, {x=p.x, y=p.y-(a+1), z=p.z}}, [1] = {226, {x=p.x+(a+2), y=p.y+1, z=p.z}, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {235, {x=p.x+1, y=p.y+(a+1), z=p.z}, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {231, {x=p.x-(a+1), y=p.y+1, z=p.z}, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 300*a, cid, t[d][2], t[d][3], t[d][1]) end elseif spell == "Scary Face" then local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 0 ret.spell = spell ret.cond = "Stun" local p = getThingPosWithDebug(cid) doSendMagicEffect({x=p.x+1, y=p.y+1, z=p.z}, 228) doMoveInArea2(cid, 0, 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 v2.5 } local pos = getThingPosWithDebug(cid) local p = getThingPosWithDebug(target) local newPos = getClosestFreeTile(target, p) if pokeHaveReflect(cid) then eff = getCreatureName(target) == "Shiny Arcanine" and atk[spell][3] or atk[spell][1] --alterado v2.6 else eff = getCreatureName(cid) == "Shiny Arcanine" and atk[spell][3] or atk[spell][1] end local damage = atk[spell][2] ----------- doDisapear(cid) doChangeSpeed(cid, -getCreatureSpeed(cid)) ----------- addEvent(doSendMagicEffect, 300, pos, 211) addEvent(doSendDistanceShoot, 400, pos, p, eff) addEvent(doSendDistanceShoot, 400, newPos, p, eff) addEvent(doDanoInTarget, 400, cid, target, damage, -min, -max, 0) --alterado v2.7 addEvent(doSendDistanceShoot, 800, p, pos, eff) addEvent(doSendMagicEffect, 850, pos, 211) addEvent(doRegainSpeed, 1000, cid) addEvent(doAppear, 1000, cid) elseif spell == "Egg Rain" then local effD = 12 local eff = 5 local master = isSummon(cid) and getCreatureMaster(cid) or cid ------------ local function doFall(cid) for rocks = 1, 62 do addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, effD) end addEvent(doFall, 450, cid) addEvent(doDanoWithProtect, 1400, cid, NORMALDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0) elseif spell == "Air Cutter" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, FLYINGDAMAGE, area, whirl3, -min, -max, 255) end end for a = 0, 5 do local t = { [0] = {128, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}}, [1] = {129, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+2), y=p.y+1, z=p.z}}, [2] = {131, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+2), z=p.z}}, [3] = {130, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}} } addEvent(doSendMagicEffect, 300*a, t[d][3], t[d][1]) addEvent(sendAtk, 300*a, cid, t[d][2]) end elseif spell == "Venom Gale" then local area = {gale1, gale2, gale3, gale4, gale3, gale2, gale1} for i = 0, 6 do addEvent(doMoveInArea2, i*400, cid, 138, area[i+1], POISONDAMAGE, min, max, spell) end elseif spell == "Crunch" then doMoveInArea2(cid, 146, Crunch1, DARKDAMAGE, min, max, spell) addEvent(doMoveInArea2, 300, cid, 146, Crunch2, DARKDAMAGE, min, max, spell) elseif spell == "Ice Fang" then doTargetCombatHealth(cid, target, ICEDAMAGE, 0, 0, 146) addEvent(doDanoWithProtect, 250, cid, ICEDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 17) elseif spell == "Psyshock" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area, eff) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, psyDmg, area, 0, 0, 0, eff) --alterado v1.4 doAreaCombatHealth(cid, psyDmg, area, whirl3, -min, -max, 255) --alterado v1.4 end end for a = 0, 4 do local t = { [0] = {250, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.4 [1] = {250, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {250, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {250, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 370*a, cid, t[d][2], t[d][1]) end elseif spell == "Hurricane" then local function hurricane(cid) if not isCreature(cid) then return true end if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end doMoveInArea2(cid, 42, bombWee1, FLYINGDAMAGE, min, max, spell) end doSetCreatureOutfit(cid, {lookType = 1398}, 10000) setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 17*600, cid, 3644587, -1) for i = 1, 17 do addEvent(hurricane, i*600, cid) --alterado v1.4 end elseif spell == "Aromateraphy" or spell == "Emergency Call" then eff = spell == "Aromateraphy" and 14 or 13 doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), bombWee3, 0, 0, eff) if isSummon(cid) then doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all") end doCureStatus(cid, "all") local uid = checkAreaUid(getThingPosWithDebug(cid), confusion, 1, 1) for _,pid in pairs(uid) do if isCreature(pid) then if ehMonstro(cid) and ehMonstro(pid) and pid ~= cid then doCureStatus(pid, "all") elseif isSummon(cid) and ((isSummon(pid) and canAttackOther(cid, pid) == "Cant") or (isPlayer(pid) and canAttackOther(cid, pid) == "Cant")) and pid ~= cid then if isSummon(pid) then doCureBallStatus(getPlayerSlotItem(getCreatureMaster(pid), 8).uid, "all") end doCureStatus(pid, "all") end end end elseif spell == "Synthesis" or spell == "Roost" then local min = (getCreatureMaxHealth(cid) * 45) / 100 local max = (getCreatureMaxHealth(cid) * 60) / 100 local function doHealArea(cid, min, max) local amount = math.random(min, max) if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid)) end if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then doCreatureAddHealth(cid, amount) doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) end end doSendMagicEffect(getThingPosWithDebug(cid), 39) doHealArea(cid, min, max) elseif spell == "Cotton Spore" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 0 ret.check = 0 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret) elseif spell == "Peck" then sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 3) --alterado v2.7 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 = getSubName(cid, target) == "Hitmontop" and 1193 or 1451 --alterado v2.6.1 local function doSendBubble(cid, pos) if not isCreature(cid) then return true end doSendDistanceShoot(getThingPosWithDebug(cid), pos, 39) doSendMagicEffect(pos, eff) end --alterado!! for a = 1, 20 do local r1 = math.random(-4, 4) local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3) -- local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z} addEvent(doSendBubble, a * 25, cid, lugar) end if isInArray({"Hitmontop", "Shiny Hitmontop"}, getSubName(cid, target)) then --alterado v2.6.1 doSetCreatureOutfit(cid, {lookType = out}, 400) end addEvent(doDanoWithProtect, 150, cid, dmg, pos, waterarea, -min, -max, 0) elseif spell == "Safeguard" then doSendMagicEffect(getThingPosWithDebug(cid), 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 --alterado v2.7 \/ local function doPulse(cid, eff) if not isCreature(cid) or not isCreature(target) then return true end doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 9) doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, -min, -max, eff) end addEvent(doPulse, 0, cid, 137) addEvent(doPulse, 100, cid, 137) elseif spell == "Tailwind" then local ret = {} ret.id = cid ret.cd = 10 ret.eff = 137 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Double Team" then local function RemoveTeam(cid, master) if isCreature(cid) then local p = getThingPosWithDebug(cid) doSendMagicEffect(p, 211) doRemoveCreature(cid) end end local function sendEff(cid, master, t) if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then doSendMagicEffect(getThingPosWithDebug(cid), 86, master) addEvent(sendEff, 1000, cid, master, t-1) --alterado v2.9 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[getSubName(cid, target)]) --alterado v2.6.1 local pk = getCreatureSummons(master)[2] adjustStatus(pk, item.uid, true, true, true) --------- doTeleportThing(pk, getClosestFreeTile(pk, pos), false) doTeleportThing(cid, getClosestFreeTile(cid, pos), false) doCreatureSetLookDir(pk, dir) doCreatureSetLookDir(cid, dir) doSendMagicEffect(getThingPosWithDebug(pk), 211) doSendMagicEffect(getThingPosWithDebug(cid), 211) if getPlayerStorageValue(cid, 9658783) >= 1 then --gambiarra doSetCreatureOutfit(cid, {lookType = 1446}, -1) end sendEff(cid, master, time) --alterado v2.9 -------- setPlayerStorageValue(pk, 637500, 1) setPlayerStorageValue(master, 637501, 1) addEvent(RemoveTeam, time*1000, pk, master) addEvent(setPlayerStorageValue, time*1000, master, 637501, -2) --alterado v2.6 elseif spell == "Tackle" then doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 111) elseif spell == "Giga Drain" then local life = getCreatureHealth(target) doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14) local newlife = life - getCreatureHealth(target) doSendMagicEffect(getThingPosWithDebug(cid), 14) if newlife >= 1 then doCreatureAddHealth(cid, newlife) doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32) end elseif spell == "Bug Fighter" then local ret = {} ret.id = cid ret.cd = 10 ret.eff = 0 ret.check = 0 ret.buff = spell ret.first = true doCondition2(ret) elseif spell == "Metal Claw" then doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 160) elseif spell == "Power Gem" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, ROCKDAMAGE, area, pulse2, -min, -max, 255) end end for a = 0, 3 do local t = { [0] = {29, {x=p.x, y=p.y-(a+1), z=p.z}}, [1] = {29, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {29, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {29, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 400*a, cid, t[d][2]) addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, t[d][1]) addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, 103) end elseif spell == "Octazooka" then local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 34 ret.cond = "Silence" doMoveInAreaMulti(cid, 6, 116, multi, multiDano, WATERDAMAGE, min, max) doMoveInArea2(cid, 0, multiDano, WATERDAMAGE, 0, 0, spell, ret) elseif spell == "Take Down" then doMoveInArea2(cid, 111, reto5, NORMALDAMAGE, min, max, spell) elseif spell == "Yawn" then local ret = {} ret.id = target ret.cd = math.random(6, 9) ret.check = getPlayerStorageValue(target, conds["Sleep"]) ret.first = true ret.cond = "Sleep" doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 11) addEvent(doMoveDano2, 1500, cid, target, NORMALDAMAGE, 0, 0, ret, spell) elseif spell == "Tongue Hook" then sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38) addEvent(doTeleportThing, 200, target, getClosestFreeTile(cid, getThingPosWithDebug(cid)), true) addEvent(sendDistanceShootWithProtect, 200, cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38) elseif spell == "Tongue Grap" then local function distEff(cid, target) if not isCreature(cid) or not isCreature(target) or not isSilence(target) then return true end --alterado v2.6 sendDistanceShootWithProtect(cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38) end local ret = {} ret.id = target ret.cd = 10 ret.check = getPlayerStorageValue(target, conds["Silence"]) ret.eff = 185 ret.cond = "Silence" sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38) addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell) for i = 1, 10 do addEvent(distEff, i*930, cid, target) end elseif spell == "Struggle Bug" then local function sendFireEff(cid, dir) if not isCreature(cid) then return true end doDanoWithProtect(cid, BUGDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 105) end local function doWheel(cid) if not isCreature(cid) then return true end local t = { [1] = SOUTH, [2] = SOUTHEAST, [3] = EAST, [4] = NORTHEAST, [5] = NORTH, --alterado v2.5 [6] = NORTHWEST, [7] = WEST, [8] = SOUTHWEST, } for a = 1, 8 do addEvent(sendFireEff, a * 200, cid, t[a]) end end doWheel(cid, false, cid) elseif spell == "Low Kick" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113) --alterado v2.7 elseif spell == "Present" then local function sendHeal(cid) if isCreature(cid) and isCreature(target) then doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), crusher, min, max, 5) doSendAnimatedText(getThingPosWithDebug(target), "HEALTH!", 65) end end doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 31) if math.random(1, 100) >= 10 then doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 5, crusher) else addEvent(sendHeal, 100, cid) end elseif spell == "Inferno" or spell == "Fissure" then local pos = getThingPosWithDebug(cid) atk = { ["Inferno"] = {101, FIREDAMAGE}, ["Fissure"] = {102, GROUNDDAMAGE} } doMoveInArea2(cid, atk[spell][1], inferno1, atk[spell][2], 0, 0, spell) addEvent(doDanoWithProtect, math.random(100, 400), cid, atk[spell][2], pos, inferno2, -min, -max, 0) elseif spell == "Wrap" then local ret = {} ret.id = target ret.cd = 10 ret.check = getPlayerStorageValue(target, conds["Silence"]) ret.eff = 104 ret.cond = "Silence" doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) addEvent(doMoveDano2, 150, cid, target, NORMALDAMAGE, 0, 0, ret, spell) elseif spell == "Rock n'Roll" then local pos = getThingPosWithDebug(cid) local areas = {rock1, rock2, rock3, rock4, rock5, rock4, rock3, rock2, rock1} local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 1 ret.check = 0 ret.spell = spell ret.cond = "Miss" for i = 0, 8 do addEvent(doMoveInArea2, i*400, cid, 1, areas[i+1], NORMALDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, i*410, cid, 1, areas[i+1], NORMALDAMAGE, 0, 0, spell) end elseif spell == "Power Wave" then local pos = getThingPosWithDebug(cid) local areas = {rock1, rock2, rock3, rock4, rock5} local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 103 ret.check = 0 ret.first = true ret.cond = "Paralyze" local function sendAtk(cid) if isCreature(cid) then doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 9658783, -1) for i = 0, 4 do addEvent(doMoveInArea2, i*400, cid, 103, areas[i+1], psyDmg, min, max, spell, ret) addEvent(doMoveInArea2, i*410, cid, 103, areas[i+1], psyDmg, 0, 0, spell) end end end doSetCreatureOutfit(cid, {lookType = 1001}, -1) setPlayerStorageValue(cid, 9658783, 1) addEvent(sendAtk, 2000, cid) elseif spell == "Ground Crusher" then local pos = getThingPosWithDebug(cid) local areas = {rock1, rock2, rock3, rock4, rock5} local ret = {} ret.id = 0 ret.cd = 12 ret.eff = 0 ret.check = 0 ret.spell = spell ret.cond = "Stun" local function endMove(cid) if isCreature(cid) then doRemoveCondition(cid, CONDITION_OUTFIT) end end doSetCreatureOutfit(cid, {lookType = 1449}, -1) stopNow(cid, 16*360) addEvent(endMove, 16*360, cid) ---- for i = 0, 4 do addEvent(doMoveInArea2, i*350, cid, 100, areas[i+1], GROUNDDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, i*360, cid, 100, areas[i+1], GROUNDDAMAGE, 0, 0, spell, ret) end for i = 4, 8 do local a = i-3 addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret) end for i = 8, 12 do local a = i-7 addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret) end for i = 12, 16 do local a = i-11 addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret) end for i = 16, 20 do local a = i-15 addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret) end elseif spell == "Last Resort" then local pos = getThingPosWithDebug(cid) local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1} for i = 0, 9 do addEvent(doMoveInArea2, i*400, cid, 3, areas[i+1], NORMALDAMAGE, min, max, spell) addEvent(doMoveInArea2, i*410, cid, 3, areas[i+1], NORMALDAMAGE, 0, 0, spell) end elseif spell == "Psy Impact" then local master = getCreatureMaster(cid) or 0 local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 0 ret.check = 0 ret.spell = spell ret.cond = "Miss" for rocks = 1, 42 do addEvent(fall, rocks*35, cid, master, psyDmg, -1, 98) end addEvent(doMoveInArea2, 500, cid, 0, BigArea2, psyDmg, min, max, spell, ret) elseif spell == "Two Face Shock" then local atk = { [1] = {179, ICEDAMAGE}, [2] = {127, GROUNDDAMAGE} } local rand = math.random(1, 2) doAreaCombatHealth(cid, atk[rand][2], getThingPosWithDebug(cid), splash, -min, -max, 255) local sps = getThingPosWithDebug(cid) sps.x = sps.x+1 sps.y = sps.y+1 doSendMagicEffect(sps, atk[rand][1]) elseif spell == "Aerial Ace" then local eff = {16, 221, 223, 243} for rocks = 1, 32 do addEvent(fall, rocks*22, cid, master, FLYINGDAMAGE, -1, eff[math.random(1, 4)]) end addEvent(doMoveInArea2, 500, cid, 0, BigArea2, FLYINGDAMAGE, min, max, spell) elseif spell == "Echoed Voice" then local p = getThingPosWithDebug(cid) local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) function sendAtk(cid, area) if isCreature(cid) then if not isSightClear(p, area, false) then return true end doAreaCombatHealth(cid, NORMALDAMAGE, area, pulse2, -min, -max, 255) end end for a = 0, 5 do local t = { [0] = {39, {x=p.x, y=p.y-(a+1), z=p.z}}, [1] = {39, {x=p.x+(a+1), y=p.y, z=p.z}}, [2] = {39, {x=p.x, y=p.y+(a+1), z=p.z}}, [3] = {39, {x=p.x-(a+1), y=p.y, z=p.z}} } addEvent(sendAtk, 400*a, cid, t[d][2]) addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, t[d][1]) end elseif spell == "Electro Field" or spell == "Petal Tornado" or spell == "Flame Wheel" then --alterado v2.8 local p = getThingPos(cid) local pos1 = { [1] = {{x = p.x, y = p.y+4, z = p.z}, {x = p.x+1, y = p.y+4, z = p.z}, {x = p.x+2, y = p.y+3, z = p.z}, {x = p.x+3, y = p.y+2, z = p.z}, {x = p.x+4, y = p.y+1, z = p.z}, {x = p.x+4, y = p.y, z = p.z}}, [2] = {{x = p.x, y = p.y+3, z = p.z}, {x = p.x+1, y = p.y+3, z = p.z}, {x = p.x+2, y = p.y+2, z = p.z}, {x = p.x+3, y = p.y+1, z = p.z}, {x = p.x+3, y = p.y, z = p.z}}, [3] = {{x = p.x, y = p.y+2, z = p.z}, {x = p.x+1, y = p.y+2, z = p.z}, {x = p.x+2, y = p.y+1, z = p.z}, {x = p.x+2, y = p.y, z = p.z}}, [4] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y, z = p.z}}, } local pos2 = { [1] = {{x = p.x, y = p.y-4, z = p.z}, {x = p.x-1, y = p.y-4, z = p.z}, {x = p.x-2, y = p.y-3, z = p.z}, {x = p.x-3, y = p.y-2, z = p.z}, {x = p.x-4, y = p.y-1, z = p.z}, {x = p.x-4, y = p.y, z = p.z}}, [2] = {{x = p.x, y = p.y-3, z = p.z}, {x = p.x-1, y = p.y-3, z = p.z}, {x = p.x-2, y = p.y-2, z = p.z}, {x = p.x-3, y = p.y-1, z = p.z}, {x = p.x-3, y = p.y, z = p.z}}, [3] = {{x = p.x, y = p.y-2, z = p.z}, {x = p.x-1, y = p.y-2, z = p.z}, {x = p.x-2, y = p.y-1, z = p.z}, {x = p.x-2, y = p.y, z = p.z}}, [4] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y, z = p.z}}, } local pos3 = { [1] = {{x = p.x+4, y = p.y, z = p.z}, {x = p.x+4, y = p.y-1, z = p.z}, {x = p.x+3, y = p.y-2, z = p.z}, {x = p.x+2, y = p.y-3, z = p.z}, {x = p.x+1, y = p.y-4, z = p.z}, {x = p.x, y = p.y-4, z = p.z}}, [2] = {{x = p.x+3, y = p.y, z = p.z}, {x = p.x+3, y = p.y-1, z = p.z}, {x = p.x+2, y = p.y-2, z = p.z}, {x = p.x+1, y = p.y-3, z = p.z}, {x = p.x, y = p.y-3, z = p.z}}, [3] = {{x = p.x+2, y = p.y, z = p.z}, {x = p.x+2, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-2, z = p.z}, {x = p.x, y = p.y-2, z = p.z}}, [4] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x, y = p.y-1, z = p.z}}, } local pos4 = { [1] = {{x = p.x-4, y = p.y, z = p.z}, {x = p.x-4, y = p.y+1, z = p.z}, {x = p.x-3, y = p.y+2, z = p.z}, {x = p.x-2, y = p.y+3, z = p.z}, {x = p.x-1, y = p.y+4, z = p.z}, {x = p.x, y = p.y+4, z = p.z}}, [2] = {{x = p.x-3, y = p.y, z = p.z}, {x = p.x-3, y = p.y+1, z = p.z}, {x = p.x-2, y = p.y+2, z = p.z}, {x = p.x-1, y = p.y+3, z = p.z}, {x = p.x, y = p.y+3, z = p.z}}, [3] = {{x = p.x-2, y = p.y, z = p.z}, {x = p.x-2, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+2, z = p.z}, {x = p.x, y = p.y+2, z = p.z}}, [4] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x, y = p.y+1, z = p.z}}, } local atk = { ["Electro Field"] = {41, 207, ELECTRICDAMAGE}, ["Petal Tornado"] = {14, 54, GRASSDAMAGE}, ["Flame Wheel"] = {-1, 6, FIREDAMAGE}, --alterado v2.9 } 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(sendDistanceShootWithProtect, delay, cid, posi1, posi2, eff) --alterado v2.6 end end local function sendDano(cid, pos, eff, delay, min, max) if pos and isCreature(cid) then addEvent(doDanoWithProtect, delay, cid, atk[spell][3], pos, 0, -min, -max, eff) --alterado v2.6 end end local function doTornado(cid) if isCreature(cid) then for j = 1, 4 do for i = 1, 6 do --41/207 -- 14/54 addEvent(sendDist, 350, cid, pos1[j][i], pos1[j][i+1], atk[spell][1], i*330) addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*300, min, max) addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*310, 0, 0) --- addEvent(sendDist, 350, cid, pos2[j][i], pos2[j][i+1], atk[spell][1], i*330) addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*300, min, max) addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*310, 0, 0) ---- addEvent(sendDist, 800, cid, pos3[j][i], pos3[j][i+1], atk[spell][1], i*330) addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*300, min, max) addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*310, 0, 0) --- addEvent(sendDist, 800, cid, pos4[j][i], pos4[j][i+1], atk[spell][1], i*330) addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*300, min, max) addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*310, 0, 0) end end end end if spell == "Electro Field" then addEvent(doMoveInArea2, 1000, cid, 0, electro, ELECTRICDAMAGE, 0, 0, spell, ret) end if spell == "Flame Wheel" then --alterado v2.8 doTornado(cid) else for b = 0, 2 do addEvent(doTornado, b*1500, cid) end end elseif spell == "Seed Bomb" then --alterado v2.6 local master = isSummon(cid) and getCreatureMaster(cid) or cid local function doFall(cid) for rocks = 1, 42 do --62 addEvent(fall, rocks*35, cid, master, SEED_BOMBDAMAGE, 1, 54) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, 1) end addEvent(doFall, 450, cid) addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, SEED_BOMBDAMAGE, min, max, spell) elseif spell == "Reverse Earthshock" then ---alterado v2.7 \/\/ local p = getThingPosWithDebug(cid) p.x = p.x+1 p.y = p.y+1 sendEffWithProtect(cid, p, 151) --send eff local function doDano(cid) local pos = getThingPosWithDebug(cid) local function doSendBubble(cid, pos) if not isCreature(cid) then return true end doSendDistanceShoot(getThingPosWithDebug(cid), pos, 39) doSendMagicEffect(pos, 239) end --alterado!! for a = 1, 20 do local r1 = math.random(-4, 4) local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3) -- local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z} addEvent(doSendBubble, a * 25, cid, lugar) end addEvent(doDanoWithProtect, 150, cid, ROCKDAMAGE, pos, waterarea, -min, -max, 0) end addEvent(doDano, 1250, cid) elseif spell == "Fury Swipes" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23) doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 152) elseif spell == "Poison Jab" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15) doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 153) elseif spell == "Cross Poison" then doMoveInArea2(cid, 153, cross, POISONDAMAGE, -min, -max, spell) elseif spell == "Hydro Dance" then local eff = {155, 154, 53, 155, 53} local area = {psy1, psy2, psy3, psy4, psy5} --n sei se eh essa a area xD setPlayerStorageValue(cid, 3644587, 1) addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1) for i = 0, 4 do addEvent(doMoveInArea2, i*400, cid, eff[i+1], area[i+1], WATERDAMAGE, min, max, spell) end elseif spell == "Waterfall" then local function sendStickEff(cid, dir) if not isCreature(cid) then return true end doAreaCombatHealth(cid, WATERDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 155) 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 * 200, cid, t[a]) end end stopNow(cid, 1800) doStick(cid, false, cid) elseif spell == "Gyro Ball" then local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 0 ret.spell = spell ret.cond = "Stun" stopNow(cid, 2000) doMoveInArea2(cid, 156, reto5, STEELDAMAGE, min, max, spell, ret) elseif spell == "Rock Tomb" then local ret = {} ret.id = target ret.cd = 9 ret.eff = 0 ret.check = getPlayerStorageValue(target, conds["Slow"]) ret.first = true ret.cond = "Slow" local function doRockFall(cid, frompos, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local ry = math.abs(frompos.y - pos.y) doSendDistanceShoot(frompos, pos, 39) addEvent(doMoveDano2, ry * 11, cid, target, ROCKDAMAGE, min, max, ret, spell) addEvent(sendEffWithProtect, ry*11, cid, pos, 157) end local function doRockUp(cid, target) if not isCreature(target) or not isCreature(cid) then return true end local pos = getThingPosWithDebug(target) local mps = getThingPosWithDebug(cid) local xrg = math.floor((pos.x - mps.x) / 2) local topos = mps topos.x = topos.x + xrg local rd = 7 topos.y = topos.y - rd doSendDistanceShoot(getThingPosWithDebug(cid), topos, 39) addEvent(doRockFall, rd * 49, cid, topos, target) end addEvent(doRockUp, 155, cid, target) elseif spell == "Sand Tomb" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 34 ret.check = 0 ret.spell = spell ret.cond = "Miss" doMoveInAreaMulti(cid, 22, 158, bullet, bulletDano, GROUNDDAMAGE, min, max, ret) elseif spell == "Rain Dance" then local master = isSummon(cid) and getCreatureMaster(cid) or cid ------------ local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 1 ret.cond = "Silence" --- local function doFall(cid) for rocks = 1, 42 do --62 addEvent(fall, rocks*35, cid, master, WATERDAMAGE, 52, 1) end end --- local function doRain(cid) if isSummon(cid) then doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all") end --cura status doCureStatus(cid, "all") --- setPlayerStorageValue(cid, 253, 1) --focus doSendMagicEffect(getThingPosWithDebug(cid), 132) --- doMoveInArea2(cid, 0, confusion, WATERDAMAGE, 0, 0, spell, ret) end --- addEvent(doFall, 200, cid) addEvent(doRain, 1000, cid) elseif spell == "Night Slash" then local p = getThingPosWithDebug(cid) local t = { {251, {x = p.x+1, y = p.y-1, z = p.z}}, {253, {x = p.x+2, y = p.y+1, z = p.z}}, {252, {x = p.x+1, y = p.y+2, z = p.z}}, {254, {x = p.x-1, y = p.y+1, z = p.z}}, } doAreaCombatHealth(cid, DARKDAMAGE, p, scyther5, -min, -max, 165) for a = 0, 1 do for i = 1, 4 do addEvent(doSendMagicEffect, a*400, t[i][2], t[i][1]) --alterado v2.8 end end addEvent(doAreaCombatHealth, 400, cid, DARKDAMAGE, p, scyther5, -min, -max, 165) elseif spell == "Wild Charge" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 48 ret.check = 0 ret.spell = spell ret.cond = "Stun" local pos = getThingPosWithDebug(cid) local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1} for i = 0, 14 do addEvent(doMoveInArea2, i*320, cid, 48, areas[i+1], ELECTRICDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, i*330, cid, 48, areas[i+1], ELECTRICDAMAGE, 0, 0, spell) end elseif spell == "Jump Kick" then doMoveInAreaMulti(cid, 42, 113, bullet, bulletDano, FIGHTINGDAMAGE, min, max) elseif spell == "Lava Plume" then --alterado v2.8 \/\/\/ doMoveInArea2(cid, 5, cross, FIREDAMAGE, -min, -max, spell) doMoveInArea2(cid, 87, cross, FIREDAMAGE, 0, 0, spell) elseif spell == "Silver Wind" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoWithProtectWithDelay(cid, target, BUGDAMAGE, min, max, 78, SilverWing) elseif spell == "Bug Buzz" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 0 ret.check = 0 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 86, db1, BUGDAMAGE, min, max, spell, ret) addEvent(doMoveInArea2, 250, cid, 86, db1, BUGDAMAGE, 0, 0, spell) elseif spell == "Whirlpool" then local function setSto(cid) if isCreature(cid) then setPlayerStorageValue(cid, 3644587, -1) end end local function doDano(cid) if isSleeping(cid) then return true end doDanoWithProtect(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, min, max, 89) end setPlayerStorageValue(cid, 3644587, 1) for r = 0, 10 do addEvent(doDano, 600 * r, cid) end addEvent(setSto, 600*10, cid) elseif spell == "Iron Head" then doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doDanoInTargetWithDelay(cid, target, STEELDAMAGE, -min, -max, 77) elseif spell == "Brick Beak" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 88 ret.check = 0 ret.first = true ret.cond = "Paralyze" local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local p = getThingPosWithDebug(cid) local t = { [0] = {90, {x=p.x+1, y=p.y-1, z=p.z}}, [1] = {90, {x=p.x+2, y=p.y+1, z=p.z}}, [2] = {90, {x=p.x+1, y=p.y+2, z=p.z}}, [3] = {90, {x=p.x-1, y=p.y+1, z=p.z}}, } doMoveInArea2(cid, 0, BrickBeak, FIGHTINGDAMAGE, min, max, spell, ret) doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "Volcano Burst" then local pos = getThingPosWithDebug(cid) doMoveInArea2(cid, 91, inferno1, FIREDAMAGE, 0, 0, spell) addEvent(doDanoWithProtect, math.random(100, 400), cid, FIREDAMAGE, pos, inferno2, -min, -max, 0) elseif spell == "Hammer Arm" then local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 88 ret.check = 0 ret.first = true ret.cond = "Paralyze" local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid) local p = getThingPosWithDebug(cid) local t = { [0] = {92, {x=p.x, y=p.y-1, z=p.z}}, [1] = {94, {x=p.x+2, y=p.y, z=p.z}}, [2] = {95, {x=p.x+1, y=p.y+2, z=p.z}}, [3] = {93, {x=p.x-1, y=p.y, z=p.z}}, } doMoveInArea2(cid, 0, BrickBeak, FIGHTINGDAMAGE, min, max, spell, ret) doSendMagicEffect(t[a][2], t[a][1]) elseif spell == "Powder Snow" then snowP = getThingPosWithDebug(cid) local ret = {} ret.id = 0 ret.cd = 10 ret.check = 0 ret.eff = 43 ret.spell = spell ret.cond = "Slow" doMoveInArea2(cid, 0, check, ICEDAMAGE, min, max, spell, ret) doSendMagicEffect({x = snowP.x + 1, y = snowP.y, z = snowP.z}, 206) elseif spell == "Revenge" then local effs = {92, 93, 99, 94, 93} for i = 1, #effs do addEvent(function() if not isCreature(cid) then return true end doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, effs[i]) end, i * 500) end elseif spell == "Dig" then local dig_area = area --Área da spell. local slow_time = 5 --Tempo que durará o slow. local time = 3 --Tempo que ficará em baixo da terra. local eff = 102 --Efeito que vai aparecer no pokémon quando afundar/voltar para a superfície. local eff_dmg = 102 --Efeito do dano. local ret = {} ret.id = 0 ret.cd = slow_time ret.eff = 0 ret.check = 0 ret.first = true ret.cond = "Slow" doSendMagicEffect(getThingPos(cid), eff) doDisapear(cid) addEvent(function() if not isCreature(cid) then return true end doAppear(cid) doSendMagicEffect(getThingPos(cid), eff) doMoveInArea2(cid, eff_dmg, dig_area, GROUNDDAMAGE, min, max, spell, ret) end, time*1000) elseif spell == "Bullet Storm" then local master = isSummon(cid) and getCreatureMaster(cid) or cid local ret = {} ret.id = 0 ret.cd = 9 ret.eff = 45 ret.check = 0 ret.first = true ret.cond = "Slow" local function doFall(cid) for rocks = 1, 45 do addEvent(fall, rocks*35, cid, master, GRASSDAMAGE, 1, 45) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, 1) end --alterado v1.4 addEvent(doFall, 450, cid) addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, GRASSDAMAGE, min, max, spell, ret) --/////////////////////// PASSIVAS /////////////////////////-- elseif spell == "Counter Helix" then -- [nome] = {out = outfit girando, efeitos} local OutFit = { ["Scyther"] = {out = 496, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --scyther ["Scizor"] = {out = 918, cima = 236, direita = 232, esquerda = 224, baixo = 233}, --Scizor ["Shiny Scizor"] = {out = 918, cima = 236, direita = 232, esquerda = 224, baixo = 233}, --Scizor ["Shiny Scyther"] = {out = 849, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Scyther ["Hitmontop"] = {out = 1193, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --Hitmontop ["Shiny Hitmontop"] = {out = 1451, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --Shiny Hitmontop ["Pineco"] = {out = 1194, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --pineco ["Shiny Pineco"] = {out = 1697, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --shpineco ["Forretress"] = {out = 1192, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --Forretress } if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas... return true end local nome1 = getSubName(cid, target) --alterado v2.6.1 local outfitt = OutFit[nome1] --alterado v2.6.1 local function damage(cid, min, max) if isCreature(cid) then if isInArray({"Scyther", "Shiny Scyther", "Pineco", "Shiny Pineco"}, nome1) then --alterado v2.6 damage = BUGDAMAGE elseif isInArray({"Hitmontop", "Shiny Hitmontop"}, nome1) then damage = FIGHTINGDAMAGE --alterado v2.6.1 else damage = STEELDAMAGE end doAreaCombatHealth(cid, damage, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE) --alterado v2.6.1 --- doAreaCombatHealth(cid, null, getThingPos(cid), scythe1, 0, 0, outfitt.cima) --cima doAreaCombatHealth(cid, null, getThingPos(cid), scythe2, 0, 0, outfitt.baixo) --baixo doAreaCombatHealth(cid, null, getThingPos(cid), scythe3, 0, 0, outfitt.direita) --direita doAreaCombatHealth(cid, null, getThingPos(cid), scythe4, 0, 0, outfitt.esquerda) --esquerda end end local function sendEff(cid) if isCreature(cid) then doAreaCombatHealth(cid, null, getThingPos(cid), scythe1, 0, 0, outfitt.cima) --cima doAreaCombatHealth(cid, null, getThingPos(cid), scythe2, 0, 0, outfitt.baixo) --baixo doAreaCombatHealth(cid, null, getThingPos(cid), scythe3, 0, 0, outfitt.direita) --direita --alterado v2.6 doAreaCombatHealth(cid, null, getThingPos(cid), scythe4, 0, 0, outfitt.esquerda) --esquerda end end local function doChangeO(cid) if not isCreature(cid) then return true end setPlayerStorageValue(cid, 32623, 0) if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1) else doRemoveCondition(cid, CONDITION_OUTFIT) end end local delay = 200 -- não mexe local master = isSummon(cid) and getCreatureMaster(cid) or cid --alterado v2.6 local summons = getCreatureSummons(master) if (isPlayer(master) and #summons >= 2) or (ehMonstro(master) and #summons >= 1) then for j = 1, #summons do setPlayerStorageValue(summons[j], 32623, 1) doSetCreatureOutfit(summons[j], {lookType = outfitt.out}, -1) for i = 1, 2 do --alterado v2.6 addEvent(sendEff, delay*i, summons[j]) end addEvent(doChangeO, 2 * 300 + 10, summons[j]) end for i = 1, 2 do addEvent(damage, delay*i, (isPlayer(master) and summons[1] or master), min, max) end else setPlayerStorageValue(cid, 32623, 1) doSetCreatureOutfit(cid, {lookType = outfitt.out}, -1) for i = 1, 2 do --alterado v2.6 addEvent(damage, delay*i, cid, min, max) end addEvent(doChangeO, 2 * 300 + 10, cid) end elseif spell == "Lava-Electricity" then --["Nome"] = {effeito, damage} local eff = { ["Magmortar"] = {5, FIREDAMAGE, 1782}, ["Shiny Magmortar"] = {5, FIREDAMAGE}, ["Magmar"] = {5, FIREDAMAGE, 1461}, ["Magby"] = {5, FIREDAMAGE}, ["Reshiram"] = {5, FIREDAMAGE}, ["Shiny Magby"] = {5, FIREDAMAGE}, --alterado v1.5 ["Electivire"] = {207, ELECTRICDAMAGE}, ["Shiny Electivire"] = {207, ELECTRICDAMAGE}, ["Electabuzz"] = {207, ELECTRICDAMAGE, 1462}, ["Shiny Electabuzz"] = {207, ELECTRICDAMAGE, 1460}, ["Zekrom"] = {207, ELECTRICDAMAGE}, ["Joltik"] = {207, ELECTRICDAMAGE}, ["Galvantula"] = {207, ELECTRICDAMAGE}, ["Elekid"] = {207, ELECTRICDAMAGE}, ["Shiny Elekid"] = {207, ELECTRICDAMAGE}, } if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas... return true end local tabela = eff[getSubName(cid, target)] --alterado v1.6.1 local canDoStun = false if math.random(1, 100) <= 30 then --alterado v1.6 canDoStun = true end local function sendFireEff(cid, dir, eff, damage) if not isCreature(cid) then return true end doAreaCombatHealth(cid, damage, getPosByDir(getThingPos(cid), dir), 0, -min, -max, eff) local pid = getThingFromPosWithProtect(getPosByDir(getThingPos(cid), dir)) --alterado v1.6 if isCreature(pid) and not isNpc(pid) and tabela[2] == ELECTRICDAMAGE and canDoStun then local ret = {} ret.id = pid ret.cd = 9 ret.eff = 48 ret.check = getPlayerStorageValue(pid, conds["Stun"]) ret.spell = "Electricity" --alterado v1.6 ret.cond = "Stun" doMoveDano2(cid, pid, ELECTRICDAMAGE, 0, 0, ret, "Electricity") end end local function doSpinFire(cid) if not isCreature(cid) then return true end local t = { [1] = EAST, [2] = SOUTHEAST, [3] = SOUTH, [4] = SOUTHWEST, [5] = WEST, [6] = NORTHWEST, [7] = NORTH, [8] = NORTHEAST, } for a = 1, 8 do addEvent(sendFireEff, a * 140, cid, t[a], tabela[1], tabela[2]) end addEvent(setPlayerStorageValue, 8*140, cid, 32623, 0) --proteçao end local out = tabela[3] if out then doSetCreatureOutfit(cid, {lookType = out}, 8*140) end setPlayerStorageValue(cid, 32623, 1) --proteçao doSpinFire(cid) elseif spell == "Bone Counter" then --["Nome"] = {effeito, damage} local eff = { ["Cubone"] = {227, GROUNDDAMAGE}, ["Marowak"] = {227, GROUNDDAMAGE}, ["Shiny Cubone"] = {227, GROUNDDAMAGE}, ["Shiny Marowak"] = {227, GROUNDDAMAGE}, } if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas... return true end local tabela = eff[getSubName(cid, target)] --alterado v1.6.1 local canDoStun = false if math.random(1, 100) <= 30 then --alterado v1.6 canDoStun = true end local function sendFireEff(cid, dir, eff, damage) if not isCreature(cid) then return true end doAreaCombatHealth(cid, damage, getPosByDir(getThingPos(cid), dir), 0, -min, -max, eff) local pid = getThingFromPosWithProtect(getPosByDir(getThingPos(cid), dir)) --alterado v1.6 if isCreature(pid) and not isNpc(pid) and tabela[2] == ELECTRICDAMAGE and canDoStun then local ret = {} ret.id = pid ret.cd = 9 ret.eff = 48 ret.check = getPlayerStorageValue(pid, conds["Stun"]) ret.spell = "Electricity" --alterado v1.6 ret.cond = "Stun" doMoveDano2(cid, pid, ELECTRICDAMAGE, 0, 0, ret, "Electricity") end end local function doSpinFire(cid) if not isCreature(cid) then return true end local t = { [1] = EAST, [2] = SOUTHEAST, [3] = SOUTH, [4] = SOUTHWEST, [5] = WEST, [6] = NORTHWEST, [7] = NORTH, [8] = NORTHEAST, } for a = 1, 8 do addEvent(sendFireEff, a * 140, cid, t[a], tabela[1], tabela[2]) end addEvent(setPlayerStorageValue, 8*140, cid, 32623, 0) --proteçao end local out = tabela[3] if out then doSetCreatureOutfit(cid, {lookType = out}, 8*140) end setPlayerStorageValue(cid, 32623, 1) --proteçao doSpinFire(cid) elseif spell == "Mega Drain" then local uid = checkAreaUid(getThingPos(cid), check, 1, 1) for _,pid in pairs(uid) do if isCreature(cid) and isCreature(pid) and pid ~= cid then if isPlayer(pid) and #getCreatureSummons(pid) >= 1 then return false end local life = getCreatureHealth(pid) doAreaCombatHealth(cid, GRASSDAMAGE, getThingPos(pid), 0, -min, -max, 14) local newlife = life - getCreatureHealth(pid) doSendMagicEffect(getThingPos(cid), 14) if newlife >= 1 then doCreatureAddHealth(cid, newlife) doSendAnimatedText(getThingPos(cid), "+"..newlife.."", 32) end end end elseif spell == "Melody" then local ret = {} ret.id = 0 ret.cd = math.random(6, 8) ret.check = 0 ret.first = true --alterado v2.6 ret.cond = "Sleep" doMoveInArea2(cid, 33, selfArea1, NORMALDAMAGE, 0, 0, "Melody", ret) elseif spell == "Spores Reaction" then local random = math.random(1, 3) if random == 1 then local ret = {} ret.id = 0 ret.cd = math.random(2, 3) ret.check = 0 --alterado v2.6 ret.first = true ret.cond = "Sleep" doMoveInArea2(cid, 27, selfArea1, NORMALDAMAGE, 0, 0, "Spores Reaction", ret) elseif random == 2 then local ret = {} ret.id = 0 ret.cd = 6 ret.eff = 0 ret.check = 0 ret.spell = spell ret.cond = "Stun" doMoveInArea2(cid, 85, confusion, NORMALDAMAGE, 0, 0, "Spores Reaction", ret) else local ret = {} ret.id = 0 ret.cd = math.random(6, 10) ret.check = 0 local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid) --alterado v2.6 ret.damage = math.floor((getPokemonLevel(cid)+lvl)/2) ret.cond = "Poison" doMoveInArea2(cid, 84, confusion, NORMALDAMAGE, 0, 0, "Spores Reaction", ret) end elseif spell == "Stunning Confusion" then if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas... return true end local function damage(cid) if isCreature(cid) then doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPosWithDebug(cid), bombWee3, -min, -max, 136) end end setPlayerStorageValue(cid, 32623, 1) --proteçao for i = 1, 7 do addEvent(damage, i*500, cid) end addEvent(setPlayerStorageValue, 3500, cid, 32623, 0) --proteçao elseif spell == "Amnesia" then if getPlayerStorageValue(cid, 253) >= 1 then return true end doCreatureSay(cid, "????", 20) doSendMagicEffect(getThingPosWithDebug(cid), 132) setPlayerStorageValue(cid, 253, 1) elseif spell == "Dragon Fury" then if getPlayerStorageValue(cid, 32623) == 1 then return true end setPlayerStorageValue(cid, 32623, 1) if isInArray({"Persian", "Raticate", "Shiny Raticate"}, getSubName(cid, target)) then --alterado v2.6.1 doRaiseStatus(cid, 2, 0, 0, 10) else --alterado v1.5 doRaiseStatus(cid, 2, 2, 0, 10) end for t = 1, 7 do --alterado v1.5 addEvent(sendMoveEffect, t*1500, cid, 12) end addEvent(setPlayerStorageValue, 10500, cid, 32623, 0) --alterado v2.8 elseif spell == "Electric Charge" then if getPlayerStorageValue(cid, 253) >= 1 then return true end setPlayerStorageValue(cid, 253, 1) doSendMagicEffect(getThingPosWithDebug(cid), 207) doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144) elseif spell == "Groundshock" then doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), scyther5, -min, -max, 255) local sps = getThingPosWithDebug(cid) sps.x = sps.x+1 sps.y = sps.y+1 doSendMagicEffect(sps, 127) elseif spell == "Mirror Coat" then if getPlayerStorageValue(cid, 21099) <= 0 then setPlayerStorageValue(cid, 21099, 1) doSetCreatureOutfit(cid, {lookType = 1447}, -1) end elseif spell == "Zen Mind" then function doCure(cid) if not isCreature(cid) then return true end if isSummon(cid) then doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all") end doCureStatus(cid, "all") end addEvent(doCure, 1000, cid) doSetCreatureOutfit(cid, {lookType = 1001}, 2000) elseif spell == "Demon Kicker" then --[outfit] = outfit chutando, local hitmonlees = { ["Hitmonlee"] = 652, --hitmonlee ["Shiny Hitmonlee"] = 878, --shiny hitmonlee } local nome = getCreatureName(cid) --alterado v2.7 if (not hitmonlees[nome] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Demon Kicker"][nome]) then if getDistanceBetween(getThingPos(cid), getThingPos(target)) > 1 then return true end if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas... return true end if not isSummon(cid) then --alterado v2.7 doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER) end local function doChangeHitmon(cid) if not isCreature(cid) then return true end setPlayerStorageValue(cid, 32623, 0) --proteçao if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1) else doRemoveCondition(cid, CONDITION_OUTFIT) end end setPlayerStorageValue(cid, 32623, 1) --proteçao local look = hitmonlees[nome] or getPlayerStorageValue(cid, 21104) --alterado v2.6 doCreatureSetLookDir(cid, getCreatureDirectionToTarget(cid, target)) doSetCreatureOutfit(cid, {lookType = look}, -1) --alterado v2.6 doTargetCombatHealth(cid, target, FIGHTINGDAMAGE, -min, -max, 255) addEvent(doChangeHitmon, 700, cid) end elseif spell == "Demon Puncher" then local name = getCreatureName(cid) --alterado v2.7 if (not hitmonchans[name] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Demon Puncher"][name]) then if getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) > 1 then return true end if not isSummon(cid) then --alterado v2.7 doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER) end if ehMonstro(cid) or not hitmonchans[name] then hands = 0 else hands = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "hands") end if not hitmonchans[name] then tabela = hitmonchans[getCreatureName(target)][hands] else tabela = hitmonchans[name][hands] end doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39) doTargetCombatHealth(cid, target, tabela.type, -min, -max, 255) local alvo = getThingPosWithDebug(target) alvo.x = alvo.x + 1 ---alterado v2.7 if hands == 4 then doSendMagicEffect(alvo, tabela.eff) --alterado v2.7 else doSendMagicEffect(getThingPosWithDebug(target), tabela.eff) end if hands == 3 then local ret = {} ret.id = target ret.cd = 9 --alterado v2.6 ret.eff = 43 ret.check = getPlayerStorageValue(target, conds["Slow"]) ret.first = true ret.cond = "Slow" doMoveDano2(cid, target, FIGHTINGDAMAGE, 0, 0, ret, spell) end end end return true endO 2° erro.
é o seguinte, o segundo erro acontece quando eu do order no Ditto para ele se transformar no poke que estou dando order em cima dele, quando tento fazer o ditto se transformar ele da esse erro.
Script que indica o erro.
local skills = specialabilities local surfborders = {4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663} local txt = { ["rock smash"] = {"break that rock!", "smash that rock!", "destroy that rock!", "smash it!", "break it!", "destroy it!"}, ["cut"] = {"cut that bush!", "cut it down!", "cut it off!", "cut off that bush!", "cut down that bush!", "cut that bush down!"}, ["move"] = {"move!", "move there!", "go there!", "walk there!"}, ["light"] = {"flash!", "light!", "flash this place!", "light up this place!"}, ["dig"] = {"open that hole!", "dig that hole!", "open it!", "dig it!"}, ["blink"] = {"teleport there!", "blink there!", "blink!", "teleport!"}, ["portal"] = {"teleport there!", "dark portal!", "teleport!"}, ["ride"] = {"let me ride you!", "let's ride!", "let me mount you!", "let me get on you!"}, ["fly"] = {"let's fly!", "let me get on you!"}, ["levitate"] = {"let's levitate!"}, ["untransform"] = {"go back to normal!", "transform into yourself again!", "stop transformation!"}, ["headbutt"] = {"headbutt on tree", "headbutt that tree!", "headbutt it off"}, --alterado v1.6 } function onUse(cid, item, frompos, item2, topos) local checkpos = topos checkpos.stackpos = 0 if getTileThingByPos(checkpos).uid <= 0 then return true end --------END FLY/RIDE -------- if getCreatureCondition(cid, CONDITION_OUTFIT) and (item2.uid == cid or getRecorderPlayer(topos) == cid) and (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then if isInArray({460, 11675, 11676, 11677}, getTileInfo(getThingPos(cid)).itemid) then doPlayerSendCancel(cid, "You can\'t stop flying at this height!") return true end local item = getPlayerSlotItem(cid, 8) local pokemon = getItemAttribute(item.uid, "poke") local x = pokes[pokemon] if getTileInfo(getThingPos(cid)).itemid >= 4820 and getTileInfo(getThingPos(cid)).itemid <= 4825 then doPlayerSendCancel(cid, "You can\'t stop flying above the water!") return true end doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then pk = doCreateMonster(pokemon, backupPos) if not isCreature(pk) then doPlayerSendCancel(cid, "You can't stop flying/riding here.") return true end doConvinceCreature(cid, pk) end doTeleportThing(pk, getThingPos(cid), false) doCreatureSetLookDir(pk, getCreatureLookDir(cid)) adjustStatus(pk, item.uid, true, false, true) doPlayerSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", let me get down!", 1) doRegainSpeed(cid) --alterado v1.7 doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 17000, -1) setPlayerStorageValue(cid, 17001, -1) return true end ----------------------------- -------- DUEL SYSTEM ------------------------ if isPlayer(item2.uid) and (item2.uid ~= cid or getRecorderPlayer(topos) ~= cid) and getPlayerStorageValue(item2.uid, 6598754) <= -1 and getPlayerStorageValue(item2.uid, 52480) <= -1 and getCreatureOutfit(item2.uid).lookType ~= 814 then --- if getPlayerStorageValue(cid, 52480) >= 1 then --alterado v1.6.1 return doPlayerSendTextMessage(cid, 20, "You already invited somebody to duel or already is dueling with somebody") end local storages = {17000, 63215, 17001, 13008, 5700} for s = 1, #storages do if getPlayerStorageValue(cid, storages[s]) >= 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!") end end if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while in PVP zone!") end --- local player = getRecorderPlayer(topos) --alterado v1.6.1 doPlayerSetVocation(cid, 8) openChannelDialog(cid) setPlayerStorageValue(cid, 52480, 1) setPlayerStorageValue(cid, 6598754, 5) setPlayerStorageValue(cid, 52482, getCreatureName(player)) --alterado v1.6.1 setPlayerStorageValue(cid, 52483, 0) doCreatureSetSkullType(cid, 2) return true elseif isPlayer(item2.uid) and (item2.uid ~= cid or getRecorderPlayer(topos) ~= cid) and getPlayerStorageValue(item2.uid, 6598754) == 5 and getCreatureOutfit(item2.uid).lookType ~= 814 then --- if getPlayerStorageValue(cid, 52481) <= -1 then return true --alterado v1.6.1 end if getPlayerStorageValue(cid, 52480) >= 1 then return doPlayerSendTextMessage(cid, 20, "You already invited somebody to duel or already is dueling with somebody") end local storages = {17000, 63215, 17001, 13008, 5700} for s = 1, #storages do if getPlayerStorageValue(cid, storages[s]) >= 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!") end end if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while in PVP zone!") end --- --alterado v1.6.1 funçao agora em lib/some function.lua local player = getRecorderPlayer(topos) --alterado v1.6.1 setPlayerStorageValue(cid, 52480, 1) setPlayerStorageValue(player, 52483, 1) --alterado v1.6.1 doCreatureSetSkullType(cid, 1) doCreatureSetSkullType(player, 1) --alterado v1.6.1 doSendAnimatedText(getThingPos(cid), "BATTLE", COLOR_ELECTRIC) beginDuel(cid, player, 6) --alterado v1.6.1 return true end ------------------------------------------------------------------------------------ if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "You need a pokemon to use order!") end if getCreatureNoMove(getCreatureSummons(cid)[1]) then return true end markLP(getCreatureSummons(cid)[1], -1) if getMarkedPos(getCreatureSummons(cid)[1]).x == topos.x and getMarkedPos(getCreatureSummons(cid)[1]).y == topos.y then return true end local unfix = {x = 1, y = 1, z = 1} local thisball = getPlayerSlotItem(cid, 8) local mysum = getCreatureSummons(cid)[1] local sid = mysum or cid local maxMoveDist = getDistanceBetween(getThingPos(sid), topos) * 2 + 1 markPos(mysum, topos) markOwnerPos(mysum, getThingPos(cid)) -------- ROCK SMASH --------- if item2.itemid == 1285 and isInArray(skills["rock smash"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["rock smash"][math.random(1, #txt["rock smash"])].."", 1) addEvent(goThere, 500, mysum, topos, "rock smash", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- HEADBUTT ----------- if item2.itemid == 2703 and isInArray(skills["headbutt"], getPokemonName(mysum)) then --alterado v1.6 --id do item arvore normal doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["headbutt"][math.random(1, #txt["headbutt"])].."", 1) addEvent(goThere, 500, mysum, topos, "headbutt", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- CUT ---------------- if item2.itemid == 2767 and isInArray(skills["cut"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["cut"][math.random(1, #txt["cut"])].."", 1) addEvent(goThere, 500, mysum, topos, "cut", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- TRANSFORM ---------- --alterado v1.7 if (getCreatureName(mysum) == "Ditto" or getCreatureName(mysum) == "Shiny Ditto") and isMonster(item2.uid) and pokes[getCreatureName(item2.uid)] then if item2.uid == mysum then --edited if isTransformed(mysum) then deTransform(mysum, getItemAttribute(thisball.uid, "transTurn")) markPos(mysum, unfix) doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["untransform"][math.random(1, #txt["untransform"])].."", 1) return true end doPlayerSendCancel(cid, "Your ditto is not transformed.") markPos(mysum, unfix) return true end if getCreatureName(item2.uid) == "Ditto" or getCreatureName(item2.uid) == "Shiny Ditto" then --edited transform for shiny ditto doPlayerSendCancel(cid, "Your ditto can't transform into another ditto.") markPos(mysum, unfix) return true end if getCreatureName(item2.uid) == getPlayerStorageValue(mysum, 1010) then doPlayerSendCancel(cid, "Your ditto is already transformed into that pokemon.") markPos(mysum, unfix) return true end if getCreatureName(item2.uid) == "Smeargle" then doPlayerSendCancel(cid, "Your ditto can't copy a smeargle.") markPos(mysum, unfix) return true end if isOutlanderPokemon(getCreatureName(item2.uid)) then doPlayerSendCancel(cid, "Your ditto can't copy a outlander pokemon.") markPos(mysum, unfix) return true end if isLegendaryPokemon(getCreatureName(item2.uid)) then doPlayerSendCancel(cid, "Your ditto can't copy a legendary pokemon.") markPos(mysum, unfix) return true end if isMegaPokemon(getCreatureName(item2.uid)) then doPlayerSendCancel(cid, "Your ditto can't copy a mega pokemon.") markPos(mysum, unfix) return true end if isShiny(item2.uid) then boost = getItemAttribute(thisball.uid, "boost") or 0 if boost < 50 then doPlayerSendCancel(cid, "Your ditto can't copy a shiny pokemon.") markPos(mysum, unfix) return true end end if isInArray(dittoShinyCopy, getCreatureName(item2.uid)) then doPlayerSendCancel(cid, "Your ditto can't copy a shiny of a clan.") markPos(mysum, unfix) return true end if getCreatureCondition(getCreatureMaster(mysum), CONDITION_INFIGHT) then doPlayerSendCancel(cid, "You ditto can't copy during fight.") markPos(mysum, unfix) return true end if isSummon(item2.uid) and getPlayerGroupId(getCreatureMaster(item2.uid)) >= 3 then doPlayerSendCancel(cid, "You can't copy a pokemon of a staff member!") markPos(mysum, unfix) return true end if pokes[getCreatureName(item2.uid)] then if pokes[getCreatureName(item2.uid)].level > getPlayerLevel(cid) then doPlayerSendCancel(cid, "You need level "..pokes[getCreatureName(item2.uid)].level.." to transform in this pokemon.") markPos(mysum, unfix) return true end end local cd = getCD(thisball.uid, "trans", 30) if cd > 0 then doPlayerSendCancel(cid, "Your pokemon is too tired to transform again. Cooldown: ("..getStringmytempo(cd)..")") markPos(mysum, unfix) return true end if getHappiness(mysum) <= 50 then doSendMagicEffect(getThingPos(mysum), happinessRate[1].effect) markPos(mysum, unfix) return true end if isTransformed(mysum) then doPlayerSendTextMessage(cid, 27, "Your ditto already transformed.") markPos(mysum, unfix) return true end local turn = getItemAttribute(thisball.uid, "transTurn") if not turn or turn > 10 then doItemSetAttribute(thisball.uid, "transTurn", 0) else doItemSetAttribute(thisball.uid, "transTurn", turn + 1) end local time = 10800 turn = getItemAttribute(thisball.uid, "transTurn") markPos(mysum, unfix) setPlayerStorageValue(mysum, 1010, getCreatureName(item2.uid)) doSetCreatureOutfit(mysum, getCreatureOutfit(item2.uid), -1) addEvent(deTransform, time * 1000, mysum, turn) doSendMagicEffect(getThingPos(mysum), 184) doCreatureSay(mysum, "TRANSFORM!", TALKTYPE_MONSTER) local name = getCreatureName(item2.uid) setCD(thisball.uid, "trans", 40) doItemSetAttribute(thisball.uid, "transBegin", os.clock()) doSetItemAttribute(thisball.uid, "transLeft", time) doSetItemAttribute(thisball.uid, "transOutfit", getCreatureOutfit(item2.uid).lookType) doSetItemAttribute(thisball.uid, "transName", getCreatureName(item2.uid)) doFaceCreature(mysum, getThingPos(item2.uid)) doPlayerSay(cid, ""..getPokeName(mysum)..", transform into "..getArticle(name).." "..name.."!", 1) if useKpdoDlls then doUpdateMoves(cid) --alterado v1.6 end if dittoCopiesStatusToo then adjustStatus(mysum, thisball.uid, true, false) end return true end ----------------------------- -------- LIGHT -------------- if isMonster(item2.uid) and getCreatureMaster(item2.uid) == cid then markPos(mysum, unfix) if not isInArray(skills["light"], getPokemonName(item2.uid)) then doPlayerSendCancel(cid, "Your pokemon can't use flash.") return true end local cd = getCD(thisball.uid, "light", 30) if cd > 0 then doPlayerSendCancel(cid, "Your pokemon is too tired to use flash. Cooldown: ("..getStringmytempo(cd)..")") return true end doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["light"][math.random(1, #txt["light"])].."", 1) doCreatureSay(mysum, "FLASH!", TALKTYPE_MONSTER) doSendMagicEffect(getThingPos(mysum), 28) local size = 5 size = size + math.floor(getSpecialAttack(mysum) / 60) size = size + math.ceil(getPokemonLevel(mysum) / 60) if size > 11 then size = 11 end doSetCreatureLight(mysum, size, 215, 600*1000) local delay = math.floor(30 - getPokemonLevel(mysum) / 4) if delay > 0 then setCD(thisball.uid, "light", delay) end return true end ----------------------------- -------- DIG ---------------- if isInArray(skills["digholes"], item2.itemid) and isInArray(skills["dig"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["dig"][math.random(1, #txt["dig"])].."", 1) addEvent(goThere, 500, mysum, topos, "dig", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- BLINK / MOVE ------- if not isCreature(item2.uid) and isInArray(skills["blink"], getPokemonName(mysum)) then local cd = getCD(thisball.uid, "blink", 30) if getPlayerStorageValue(mysum, 2365487) == 1 then return true --alterado v1.4 end if getTileInfo(topos).protection and getCreatureCondition(getCreatureMaster(cid), CONDITION_INFIGHT) then doPlayerSendTextMessage(cid, 27, "You can't move your pokemon to a protection zone during fight.") return true end if cd > 0 or not canWalkOnPos(topos, false, false, true, true, true) then if isInArray(darkPortalList, getPokeName(mysum)) then frase = "Dark Portal" else frase = "Blink" end doPlayerSendCancel(cid, frase.." cooldown: ("..getStringmytempo(cd)..")") doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", 1) addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) return true end local CD = isShinyName(getCreatureName(mysum)) and 20 or 30 --edited blink markPos(mysum, topos) markOwnerPos(mysum, getThingPos(cid)) setCD(thisball.uid, "blink", CD) if isInArray(darkPortalList, getPokeName(mysum)) then pos = {x = getThingPos(mysum).x + 1, y = getThingPos(mysum).y + 1, z = getThingPos(mysum).z} doSendMagicEffect(pos, 94) doDisapear(mysum) doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["portal"][math.random(1, #txt["portal"])].."", 1) pos2 = {x = topos.x + 1, y = topos.y + 1, z = topos.z} addEvent(doSendMagicEffect, 500, pos2, 94) addEvent(doAppear, 500, mysum) addEvent(doTeleportThing, 500, mysum, topos, false) addEvent(doCreatureSay, 500, mysum, "DARK PORTAL!", TALKTYPE_MONSTER) addEvent(goThere, 500, mysum, topos, "blink", isCreature(getCreatureTarget(cid))) --edited blink return true end doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["blink"][math.random(1, #txt["blink"])].."", 1) doSendDistanceShoot(getThingPos(mysum), topos, 39) doSendMagicEffect(getThingPos(mysum), 211) doTeleportThing(mysum, topos, false) doSendMagicEffect(topos, 134) doCreatureSay(mysum, "BLINK!", TALKTYPE_MONSTER) goThere(mysum, topos, "blink", isCreature(getCreatureTarget(cid))) --edited blink return true end ----------------------------- ----START FLYorRIDE --------- if (item2.uid == cid or getRecorderPlayer(topos) == cid) and (isInArray(skills["fly"], getPokemonName(mysum)) or getItemAttribute(getPlayerSlotItem(cid, 8).uid, "flyItem") or isInArray(skills["ride"], getPokemonName(mysum))) then --if not isPremium(cid) then --doPlayerSendCancel(cid, "Only premium members are allowed to fly or ride.") --return true --end if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then return doPlayerSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7 end if getPlayerStorageValue(cid, 212124) >= 1 then --alterado v1.6 return doPlayerSendCancel(cid, "You can't do it with a pokemon with mind controlled!") end if getPlayerStorageValue(cid, 52480) >= 1 then return doPlayerSendCancel(cid, "You can't do it while a duel!") --alterado v1.6 end if getPlayerStorageValue(cid, 5700) == 1 then doPlayerSendCancel(cid, "You can't do that while is mount in a bike!") --edited proteçao pra bike return true end if getPlayerStorageValue(cid, 22545) >= 1 and (isInArray(skills["fly"], getPokemonName(mysum)) or getItemAttribute(getPlayerSlotItem(cid, 8).uid, "flyItem")) then --alterado v1.4 return doPlayerSendCancel(cid, "You can't do that while in the Golden Arena!") end if getPlayerStorageValue(cid, 31040) >= 1 then doPlayerSendCancel(cid, "You can't use this on a Outland.") return true end local pct = getCreatureHealth(mysum) / getCreatureMaxHealth(mysum) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", 1 - pct) if isInArray(skills["fly"], getPokemonName(mysum)) or getItemAttribute(getPlayerSlotItem(cid, 8).uid, "flyItem") then if isInArray(levitateFlyList, getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["levitate"][math.random(1, #txt["levitate"])].."", 1) else doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["fly"][math.random(1, #txt["fly"])].."", 1) end addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid))) else doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["ride"][math.random(1, #txt["ride"])].."", 1) addEvent(goThere, 500, mysum, topos, "ride", isCreature(getCreatureTarget(cid))) end return true end ----------------------------- ----------------------------------Control Mind-------------------------------------------- alterado v1.5 if isCreature(item2.uid) and ehMonstro(item2.uid) and isInArray(skills["control mind"], getCreatureName(mysum)) and item2.uid ~= mysum then if not isCreature(item2.uid) then return true end if isSleeping(mysum) then return doPlayerSendCancel(cid, "Your pokemon is sleeping.") end if getTileInfo(getThingPos(cid)).protection or getTileInfo(getThingPos(getCreatureSummons(cid)[1])).protection then return doPlayerSendCancel(cid, "You or your pokemon are in Pz zone!") end if #getCreatureSummons(cid) == 2 then return doPlayerSendCancel(cid, "You only can control one Pokemon!") end local cd = getCD(thisball.uid, "control", 120) if cd > 0 then doPlayerSendCancel(cid, "You have to wait "..cd.." segs to use Control Mind again!") return true end if getPokemonLevel(item2.uid) >= getPokemonLevel(mysum) or isLegendaryPokemon(getCreatureName(item2.uid)) or isShiny(item2.uid) then return doPlayerSendCancel(cid, "Your pokemon can't control this mind!") end if getPlayerStorageValue(cid, 22545) >= 1 then --alterado v1.7 return doPlayerSendCancel(cid, "You can't do that while in the Golden Arena!") end local cmed = item2.uid setCD(thisball.uid, "control", 120) local gender = getPokemonGender(cmed) doSendDistanceShoot(getThingPos(mysum), getThingPos(cmed), 39) -------------- setPlayerStorageValue(cid, 212124, 1) doConvinceCreature(cid, cmed) setPlayerStorageValue(cmed, 212123, 1) doCreatureSay(cid, ""..getCreatureName(mysum)..", control "..string.lower(getCreatureName(cmed)).."'s mind!", 1) local cmname = getCreatureName(mysum) local cmpos = getThingPos(mysum) local pokelife = (getCreatureHealth(mysum) / getCreatureMaxHealth(mysum)) doItemSetAttribute(thisball.uid, "hp", pokelife) doRemoveCreature(mysum) local cmzao = doSummonCreature(""..cmname.." cm", cmpos) doConvinceCreature(cid, cmzao) setPlayerStorageValue(cid, 888, 1) if useKpdoDlls then doUpdateMoves(cid) end local function check(cid, controled, rod) if isCreature(cid) then ball2 = getPlayerSlotItem(cid, 8) if getPlayerStorageValue(cid, 888) <= 0 then return true end if not isCreature(controled) then setPlayerStorageValue(cid, 212124, 0) local sum = isCreature(getCreatureSummons(cid)[1]) and getCreatureSummons(cid)[1] or getCreatureSummons(cid)[2] local pkcmpos = getThingPos(sum) doRemoveCreature(sum) local item = getPlayerSlotItem(cid, 8) local pk = doSummonCreature(getItemAttribute(item.uid, "poke"), pkcmpos) doConvinceCreature(cid, pk) doCreatureSetLookDir(getCreatureSummons(cid)[1], 2) addEvent(doAdjustWithDelay, 100, cid, pk, true, true, false) setPlayerStorageValue(cid, 888, -1) --alterado v1.7 cleanCMcds(item.uid) registerCreatureEvent(pk, "SummonDeath") --alterado v1.6 if useKpdoDlls then doUpdateMoves(cid) end return true end if rod <= 0 then --Pokemon controlado local cmed2 = getCreatureSummons(cid)[1] local poscmed = getThingPos(cmed2) local cmeddir = getCreatureLookDir(cmed2) local namecmed = getCreatureName(cmed2) local gender = getPokemonGender(cmed2) local hp, maxHp = getCreatureHealth(getCreatureSummons(cid)[1]), getCreatureMaxHealth(getCreatureSummons(cid)[1]) doRemoveCreature(getCreatureSummons(cid)[1]) local back = doCreateMonster(namecmed, poscmed) addEvent(doCreatureSetSkullType, 150, back, gender) doWildAttackPlayer(back, cid) doCreatureSetLookDir(back, cmeddir) addEvent(doCreatureAddHealth, 100, back, hp-maxHp) -- pokemon controlador local mynewpos = getThingPos(getCreatureSummons(cid)[1]) doRemoveCreature(getCreatureSummons(cid)[1]) local pk2 = doSummonCreature(getItemAttribute(ball2.uid, "poke"), mynewpos) doConvinceCreature(cid, pk2) addEvent(doAdjustWithDelay, 100, cid, pk2, true, true, false) setPlayerStorageValue(cid, 888, -1) --alterado v1.7 doCreatureSetLookDir(getCreatureSummons(cid)[1], 2) setPlayerStorageValue(cid, 212124, 0) cleanCMcds(ball2.uid) registerCreatureEvent(pk2, "SummonDeath") --alterado v1.6 if useKpdoDlls then doUpdateMoves(cid) end else if isInArray({"Haunter", "Gengar", "Shiny Gengar"}, cmname) then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 214) else doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 220) end end end addEvent(check, 500, cid, controled, rod-1) end check(cid, cmed, 40) return true end --------------------------------------------------------------------- -------- MOVE / END --------- local onlyWater = false if isWater(getTileThingByPos(checkpos).itemid) then onlyWater = true for checkwater = 0, 7 do if not isWater(getTileThingByPos(getPosByDir(checkpos, checkwater)).itemid) then onlyWater = false end end end if onlyWater then doPlayerSendCancel(cid, "Destination is not reachable.") return true end doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", TALKTYPE_MONSTER) if isCreature(getCreatureTarget(cid)) then goThere(mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) else addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) end ----------------------------- return true endé isso. Do Rep+ Quem Me Ajudar. obg
Up
Editado por ricardobergLink para o comentário
https://xtibia.com/forum/topic/238961-erros-em-scripts/Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados