Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const_distance_delay = 56
- RollOuts = {
- ["Voltorb"] = {lookType = 638},
- ["Electrode"] = {lookType = 637},
- ["Sandshrew"] = {lookType = 635},
- ["Sandslash"] = {lookType = 636},
- ["Phanpy"] = {lookType = 1005},
- ["Donphan"] = {lookType = 1007},
- ["Miltank"] = {lookType = 1006},
- ["Golem"] = {lookType = 639},
- ["Omastar"] = {lookType = 1579},
- ["Shiny Electrode"] = {lookType = 1387},
- ["Shiny Golem"] = {lookType = 1403},
- ["Shiny Voltorb"] = {lookType = 1388},
- ["Shiny Sandslash"] = {lookType = 1506}
- }
- FireOuts = {
- }
- --//////////////////////////////////////////////////////////////////////////////////////////////////////////--
- local function getSubName(cid, target)
- if not isCreature(cid) then return "" end
- if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
- return getPlayerStorageValue(cid, 1010)
- elseif pokeHaveReflect(cid) and isCreature(target) then
- return getCreatureName(target)
- else --alterado v1.6.1
- return getCreatureName(cid)
- end
- end
- local function getThingName(cid)
- if not isCreature(cid) then return "" end --alterado v1.6
- return getCreatureName(cid)
- end
- function getTableMove(cid, move) --alterado v1.6
- local backup = {f = 0, t = ""}
- if getThingName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
- name = getPlayerStorageValue(cid, 1010)
- else
- name = getThingName(cid)
- end
- if not isCreature(cid) or name == "" or not move then return backup end
- local x = movestable[name]
- if not x then return "" end
- local z = {x.move1, x.move2, x.move3, x.move4, x.move5, x.move6, x.move7, x.move8, x.move9, x.move10, x.move11, x.move12, x.passive1, x.passive2, x.passive3}
- if getPlayerStorageValue(cid, 21103) ~= -1 then
- local sto = getPlayerStorageValue(cid, 21103)
- setPlayerStorageValue(cid, 21103, -1)
- return {f = sto, t = ""}
- end
- for j = 1, 15 do
- if z[j] and z[j].name == move then
- return z[j]
- end
- end
- return movesinfo[move]
- end
- function getMasterTarget(cid)
- if isCreature(cid) and getPlayerStorageValue(cid, 21101) ~= -1 then
- return getPlayerStorageValue(cid, 21101) --alterado v1.6
- end
- if isSummon(cid) then
- return getCreatureTarget(getCreatureMaster(cid))
- else
- return getCreatureTarget(cid)
- end
- end
- --////////////////////////////////////////////////////////////////////////////////////////////////////////--
- function docastspell(cid, spell, mina, maxa)
- Pkattacker = cid
- local target = 0
- local getDistDelay = 0
- if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return false end --alterado v1.6
- if isSleeping(cid) and getPlayerStorageValue(cid, 21100) <= -1 then return true end --alterado v1.6
- if isCreature(getMasterTarget(cid)) then
- target = getMasterTarget(cid)
- getDistDelay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay
- end
- if isMonster(cid) and not isSummon(cid) then
- if getCreatureCondition(cid, CONDITION_EXHAUST) then
- return true
- end
- doCreatureAddCondition(cid, wildexhaust)
- end
- local mydir = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local table = getTableMove(cid, spell) --alterado v1.6
- local min = 0
- local max = 0
- --alterado v1.7 \/\/
- if ehMonstro(cid) and isCreature(getMasterTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getMasterTarget(cid))) then
- local target = getMasterTarget(cid)
- if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then
- if isCreature(getMasterTarget(target)) then --alterado v1.6
- doSendMagicEffect(getThingPosWithDebug(target), 211)
- doSendAnimatedText(getThingPosWithDebug(target), "TOO BAD", 215)
- doTeleportThing(target, getClosestFreeTile(target, getThingPosWithDebug(cid)), false)
- doSendMagicEffect(getThingPosWithDebug(target), 211)
- doFaceCreature(target, getThingPosWithDebug(cid))
- return false --alterado v1.8
- end
- end
- end
- --- FEAR / ROAR / SILENCE ---
- if (isWithFear(cid) or isSilence(cid)) and getPlayerStorageValue(cid, 21100) <= -1 then
- return true --alterado v1.6!!
- end
- ----------------------------
- if mina and maxa then
- min = math.abs(mina)
- max = math.abs(maxa)
- elseif not isPlayer(cid) then
- if table ~= "" then --alterado v1.6
- min = getSpecialAttack(cid) * (table and table.f or 0) * 0.1 --alterado v1.6
- max = min + (isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid))
- if spell == "Selfdestruct" then
- min = getCreatureHealth(cid) --alterado v1.6
- max = getCreatureHealth(cid)
- end
- if not isSummon(cid) and not isInArray({"Demon Puncher", "Demon Kicker", "Blaze Kicker"}, spell) then --alterado v1.7
- doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
- end
- if isNpcSummon(cid) then
- local mnn = {" use ", " "}
- local use = mnn[math.random(#mnn)]
- doCreatureSay(getCreatureMaster(cid), getPlayerStorageValue(cid, 1007)..","..use..""..doCorrectString(spell).."!", 1)
- end
- else
- print("Error trying to use move "..spell..", move not specified in the pokemon table.")
- end
- end
- --- FOCUS ----------------------------------
- if getPlayerStorageValue(cid, 253) >= 0 and table ~= "" and table.f ~= 0 then --alterado v1.6
- min = min * 2
- max = max * 2
- setPlayerStorageValue(cid, 253, -1)
- end
- --- Shredder Team -------------------------------
- if getPlayerStorageValue(cid, 637501) >= 1 then
- if #getCreatureSummons(cid) == 1 then
- docastspell(getCreatureSummons(cid)[1], spell)
- elseif #getCreatureSummons(cid) == 2 then
- docastspell(getCreatureSummons(cid)[1], spell)
- docastspell(getCreatureSummons(cid)[2], spell)
- end
- elseif getPlayerStorageValue(cid, 637500) >= 1 then
- min = 0
- max = 0
- end
- ------------------Miss System--------------------------
- local cd = getPlayerStorageValue(cid, conds["Miss"])
- local cd2 = getPlayerStorageValue(cid, conds["Confusion"]) --alterado v1.5
- local cd3 = getPlayerStorageValue(cid, conds["Stun"])
- if cd >= 0 or cd2 >= 0 or cd3 >= 0 then --alterado v1.7
- if not isInArray({"Shock-Counter", "Lava-Counter", "Counter Helix", "Demon Puncher", "Blaze Kicker", "Demon Kicker", "Stunning Confusion", "Electric Charge", "Melody", "Mirror Coat", "Mega Drain",
- "Aromateraphy", "Heal Bell", "Emergency Call", "Magical Leaf", "Sunny Day", "Taunt", "Skull Bash", "Safeguard", "Rain Dance", "Spores Reaction", "Giroball", "Counter Claw", "Counter Spin", "Dragon Fury",
- "Amnesia", "Zen Mind", "Bone Spin"}, spell) and getPlayerStorageValue(cid, 21100) <= -1 then
- if math.random(1, 100) > 30 then --alterado v1.6
- doSendAnimatedText(getThingPosWithDebug(cid), "MISS", 215)
- return false
- end
- end
- end
- ---------------GHOST DAMAGE-----------------------
- ghostDmg = GHOSTDAMAGE
- psyDmg = PSYCHICDAMAGE
- if getPlayerStorageValue(cid, 999457) >= 1 and table ~= "" and table.f ~= 0 then --alterado v1.6
- psyDmg = MIRACLEDAMAGE
- ghostDmg = DARK_EYEDAMAGE
- addEvent(setPlayerStorageValue, 50, cid, 999457, -1)
- end
- --------------------REFLECT----------------------
- setPlayerStorageValue(cid, 21100, -1) --alterado v1.6
- if not isInArray({"Psybeam", "Sand Attack", "Flamethrower", "Heal Bell"}, spell) then --alterado v1.8
- setPlayerStorageValue(cid, 21101, -1)
- end
- setPlayerStorageValue(cid, 21102, spell)
- ---------------------------------------------------
- if spell == "Reflect" or spell == "Mimic" or spell == "Magic Coat" then
- if spell == "Magic Coat" then
- eff = 11
- else
- eff = 135
- end
- doSendMagicEffect(getThingPosWithDebug(cid), eff)
- setPlayerStorageValue(cid, 21099, 1)
- elseif spell == "Quick Attack" then
- doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 111)
- elseif spell == "Razor Leaf" or spell == "Magical Leaf" then
- local eff = spell == "Razor Leaf" and 8 or 21
- local function throw(cid, target)
- if not isCreature(cid) or not isCreature(target) then return false end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), eff)
- doDanoInTargetWithDelay(cid, target, GRASSDAMAGE, min, max, 245) --alterado v1.7
- end
- addEvent(throw, 0, cid, target)
- addEvent(throw, 100, cid, target) --alterado v1.7
- elseif spell == "Vine Whip" then
- local area = getThingPosWithDebug(cid)
- local dano = {}
- local effect = 255
- if mydir == 0 then
- area.x = area.x + 1
- area.y = area.y - 1
- dano = whipn
- effect = 80
- elseif mydir == 1 then
- area.x = area.x + 2
- area.y = area.y + 1
- dano = whipe
- effect = 83
- elseif mydir == 2 then
- area.x = area.x + 1
- area.y = area.y + 2
- dano = whips
- effect = 81
- elseif mydir == 3 then
- area.x = area.x - 1
- area.y = area.y + 1
- dano = whipw
- effect = 82
- end
- doSendMagicEffect(area, effect)
- doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), dano, -min, -max, 255)
- elseif spell == "Headbutt" then
- doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 118)
- elseif spell == "Mega Evolution" then
- local effect = 170 --Efeito de mega evolução.
- if isSummon(cid) then
- local pid = getCreatureMaster(cid)
- if isPlayer(pid) then
- local ball = getPlayerSlotItem(pid, 8).uid
- if ball > 0 then
- local attr = getItemAttribute(ball, "megaStone")
- if attr and megaEvolutions[attr] then
- local oldPosition, oldLookdir = getThingPos(cid), getCreatureLookDir(cid)
- doItemSetAttribute(ball, "poke", megaEvolutions[attr][2])
- doSendMagicEffect(getThingPos(cid), effect)
- doRemoveCreature(cid)
- doSummonMonster(pid, megaEvolutions[attr][2])
- local newPoke = getCreatureSummons(pid)[1]
- doTeleportThing(newPoke, oldPosition, false)
- doCreatureSetLookDir(newPoke, oldLookdir)
- adjustStatus(newPoke, ball, true, false)
- if useKpdoDlls then
- addEvent(doUpdateMoves, 5, pid)
- end
- end
- end
- end
- end
- elseif spell == "Magnitude" 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
- if getSubName(cid, target) == "Mega Swampert" then
- doSetCreatureOutfit(cid, {lookType = 1828}, -1)
- else
- doSetCreatureOutfit(cid, {lookType = 1828}, -1)
- end
- 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 == "Hex" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 0
- ret.check = 0
- ret.first = true
- ret.cond = "Slow"
- docastspell(cid, "Protect")
- doRaiseStatus(cid, 0, 0, 150, 5)
- addEvent(doMoveInArea2, 5000, cid, 222, hex, GHOSTDAMAGE, min, max, spell, ret)
- elseif spell == "Instant Teleportation" then
- doDisapear(cid)
- p = getThingPosWithDebug(cid)
- doSendMagicEffect(p, 211)
- if isMonster(cid) then
- local pos = getThingPosWithDebug(cid)
- doTeleportThing(cid, {x=4, y=3, z=10}, false) --
- doTeleportThing(cid, pos, false)
- end
- addEvent(doAppear, 3000, cid)
- addEvent(sendEffWithProtect, 3000, cid, getThingPosWithDebug(cid), 211)
- local ret = {}
- ret.id = cid
- ret.cd = 3
- ret.eff = 0
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Kinesis" then
- local function doCurse(cid)
- if not isCreature(cid) then return false end
- local uid = checkAreaUid(getThingPosWithDebug(cid), confusion, 0, 1)
- for _,pid in pairs(uid) do
- if isCreature(cid) and isCreature(pid) and pid ~= cid then
- doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPos(pid), 0, -min, -max, 220)
- end
- end
- end
- for i = 0, 9 do
- addEvent(doCurse, 300 * i, cid)
- end
- elseif spell == "Protect" then
- local ret = {}
- ret.id = cid
- ret.cd = 5
- ret.eff = 117
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Leech Seed" then
- local ret = {}
- ret.id = target
- ret.attacker = cid
- ret.cd = 5
- ret.check = getPlayerStorageValue(target, conds["Leech"])
- ret.damage = isSummon(cid) and getMasterLevel(cid)+getPokemonBoost(cid) or getPokemonLevel(cid)
- ret.cond = "Leech"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 1)
- addEvent(doMoveDano2, 1000, cid, target, GRASSDAMAGE, 0, 0, ret, spell)
- elseif spell == "Protection" then
- local pos = getPosfromArea(cid, heal)
- local n = 0
- while n < #pos do
- n = n+1
- thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}
- local pid = getThingFromPosWithProtect(thing)
- local pospid = getThingPosWithDebug(pid)
- local poscid = getThingPosWithDebug(cid)
- doSendMagicEffect(pos[n], 12)
- for i = 0, 9 do
- if isCreature(pid) then
- if isSummon(cid) and (isSummon(pid) or isPlayer(pid)) then
- if canAttackOther(cid, pid) == "Cant" then
- doCreatureSetNoMove(pid, true)
- doCreatureSetNoMove(cid, true)
- setPlayerStorageValue(pid, 9658783, 1)
- setPlayerStorageValue(cid, 9658783, 1)
- addEvent(doSendMagicEffect, i*800, pospid, 117)
- addEvent(doSendMagicEffect, i*800, poscid, 117)
- addEvent(setPlayerStorageValue, 8000, pid, 9658783, -1)
- addEvent(setPlayerStorageValue, 8000, cid, 9658783, -1)
- addEvent(doCreatureSetNoMove, 8000, pid, false)
- addEvent(doCreatureSetNoMove, 8000, cid, false)
- end
- elseif ehMonstro(cid) and ehMonstro(pid) then
- doCreatureSetNoMove(pid, true)
- doCreatureSetNoMove(cid, true)
- setPlayerStorageValue(pid, 9658783, 1)
- setPlayerStorageValue(cid, 9658783, 1)
- addEvent(doSendMagicEffect, i*800, pospid, 117)
- addEvent(doSendMagicEffect, i*800, poscid, 117)
- addEvent(setPlayerStorageValue, 8000, pid, 9658783, -1)
- addEvent(setPlayerStorageValue, 8000, cid, 9658783, -1)
- addEvent(doCreatureSetNoMove, 8000, pid, false)
- addEvent(doCreatureSetNoMove, 8000, cid, false)
- end
- end
- end
- end
- elseif spell == "Solar Beam" then
- local function useSolarBeam(cid)
- if not isCreature(cid) then
- return true
- end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
- return true
- end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
- return true
- end
- local effect1 = 255
- local effect2 = 255
- local effect3 = 255
- local effect4 = 255
- local effect5 = 255
- local area = {}
- local pos1 = getThingPosWithDebug(cid)
- local pos2 = getThingPosWithDebug(cid)
- local pos3 = getThingPosWithDebug(cid)
- local pos4 = getThingPosWithDebug(cid)
- local pos5 = getThingPosWithDebug(cid)
- if getCreatureLookDir(cid) == 1 then
- effect1 = 4
- effect2 = 10
- effect3 = 10
- effect4 = 10
- effect5 = 0
- pos1.x = pos1.x + 2
- pos1.y = pos1.y + 1
- pos2.x = pos2.x + 3
- pos2.y = pos2.y + 1
- pos3.x = pos3.x + 4
- pos3.y = pos3.y + 1
- pos4.x = pos4.x + 5
- pos4.y = pos4.y + 1
- pos5.x = pos5.x + 6
- pos5.y = pos5.y + 1
- area = solare
- elseif getCreatureLookDir(cid) == 0 then
- effect1 = 36
- effect2 = 37
- effect3 = 37
- effect4 = 38
- pos1.x = pos1.x + 1
- pos1.y = pos1.y - 1
- pos2.x = pos2.x + 1
- pos2.y = pos2.y - 3
- pos3.x = pos3.x + 1
- pos3.y = pos3.y - 4
- pos4.x = pos4.x + 1
- pos4.y = pos4.y - 5
- area = solarn
- elseif getCreatureLookDir(cid) == 2 then
- effect1 = 46
- effect2 = 50
- effect3 = 50
- effect4 = 59
- pos1.x = pos1.x + 1
- pos1.y = pos1.y + 2
- pos2.x = pos2.x + 1
- pos2.y = pos2.y + 3
- pos3.x = pos3.x + 1
- pos3.y = pos3.y + 4
- pos4.x = pos4.x + 1
- pos4.y = pos4.y + 5
- area = solars
- elseif getCreatureLookDir(cid) == 3 then
- effect1 = 115
- effect2 = 162
- effect3 = 162
- effect4 = 162
- effect5 = 163
- pos1.x = pos1.x - 1
- pos1.y = pos1.y + 1
- pos2.x = pos2.x - 3
- pos2.y = pos2.y + 1
- pos3.x = pos3.x - 4
- pos3.y = pos3.y + 1
- pos4.x = pos4.x - 5
- pos4.y = pos4.y + 1
- pos5.x = pos5.x - 6
- pos5.y = pos5.y + 1
- area = solarw
- end
- if effect1 ~= 255 then
- doSendMagicEffect(pos1, effect1)
- end
- if effect2 ~= 255 then
- doSendMagicEffect(pos2, effect2)
- end
- if effect3 ~= 255 then
- doSendMagicEffect(pos3, effect3)
- end
- if effect4 ~= 255 then
- doSendMagicEffect(pos4, effect4)
- end
- if effect5 ~= 255 then
- doSendMagicEffect(pos5, effect5)
- end
- doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), area, -min, -max, 255)
- doRegainSpeed(cid)
- setPlayerStorageValue(cid, 3644587, -1)
- end
- local function ChargingBeam(cid)
- if not isCreature(cid) then
- return true
- end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
- return true
- end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then
- return true
- end
- local tab = {}
- for x = -2, 2 do
- for y = -2, 2 do
- local pos = getThingPosWithDebug(cid)
- pos.x = pos.x + x
- pos.y = pos.y + y
- if pos.x ~= getThingPosWithDebug(cid).x and pos.y ~= getThingPosWithDebug(cid).y then
- table.insert(tab, pos)
- end
- end
- end
- doSendDistanceShoot(tab[math.random(#tab)], getThingPosWithDebug(cid), 37)
- end
- doChangeSpeed(cid, -getCreatureSpeed(cid))
- setPlayerStorageValue(cid, 3644587, 1) --alterado v1.6 n sei pq mas tava dando debug o.O
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- addEvent(useSolarBeam, 650, cid)
- elseif spell == "Sleep Powder" then
- local ret = {}
- ret.id = 0
- ret.cd = math.random(6, 9)
- ret.check = 0
- ret.first = true --alterado v1.6
- ret.cond = "Sleep"
- doMoveInArea2(cid, 27, confusion, NORMALDAMAGE, 0, 0, spell, ret)
- elseif spell == "Stun Spore" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 0
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret)
- elseif spell == "Poison Powder" then
- local ret = {}
- ret.id = 0
- ret.cd = math.random(6, 15) --alterado v1.6
- ret.check = 0
- local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid)
- ret.damage = math.floor((getPokemonLevel(cid)+lvl * 3)/2)
- ret.cond = "Poison"
- doMoveInArea2(cid, 84, confusion, NORMALDAMAGE, 0, 0, spell, ret)
- elseif spell == "Bullet Seed" then
- --cid, effDist, effDano, areaEff, areaDano, element, min, max
- doMoveInAreaMulti(cid, 1, 45, bullet, bulletDano, GRASSDAMAGE, min, max)
- elseif spell == "Body Slam" then
- doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 118)
- elseif spell == "Leaf Storm" or tonumber(spell) == 73 then
- addEvent(doDanoWithProtect, 150, cid, GRASSDAMAGE, getThingPosWithDebug(cid), grassarea, -min, -max, 0)
- local pos = getThingPosWithDebug(cid)
- local function doSendLeafStorm(cid, pos) --alterado!!
- if not isCreature(cid) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), pos, 8)
- end
- for a = 1, 100 do
- local lugar = {x = pos.x + math.random(-6, 6), y = pos.y + math.random(-5, 5), z = pos.z}
- addEvent(doSendLeafStorm, a * 2, cid, lugar)
- end
- elseif spell == "Scratch" then
- doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 142)
- elseif spell == "Iron Head" then
- doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 77)
- elseif spell == "Ember" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
- doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 15) --alterado v1.7
- elseif spell == "Flamethrower" then
- local flamepos = getThingPosWithDebug(cid)
- local effect = 255
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- if a == 0 then
- flamepos.x = flamepos.x+1
- flamepos.y = flamepos.y-1
- effect = 106
- elseif a == 1 then
- flamepos.x = flamepos.x+3
- flamepos.y = flamepos.y+1
- effect = 109
- elseif a == 2 then
- flamepos.x = flamepos.x+1
- flamepos.y = flamepos.y+3
- effect = 107
- elseif a == 3 then
- flamepos.x = flamepos.x-1
- flamepos.y = flamepos.y+1
- effect = 108
- end
- doMoveInArea2(cid, 0, flamek, FIREDAMAGE, min, max, spell)
- doSendMagicEffect(flamepos, effect)
- elseif spell == "Fireball" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
- addEvent(doDanoWithProtect, 200, cid, FIREDAMAGE, getThingPosWithDebug(target), waba, min, max, 5)
- elseif spell == "Fire Fang" then
- doSendMagicEffect(getThingPosWithDebug(target), 138)
- doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 15) --alterado v1.7
- elseif spell == "Fire Blast" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area, eff)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, FIREDAMAGE, area, 0, 0, 0, eff)
- doAreaCombatHealth(cid, FIREDAMAGE, area, whirl3, -min, -max, 35)
- end
- end
- for a = 0, 4 do
- local t = {
- [0] = {60, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.4
- [1] = {61, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {62, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {63, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
- end
- elseif spell == "Rage" then
- local ret = {}
- ret.id = cid
- ret.cd = 15
- ret.eff = 13
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Raging Blast" then
- --cid, effDist, effDano, areaEff, areaDano, element, min, max
- doMoveInAreaMulti(cid, 3, 6, bullet, bulletDano, FIREDAMAGE, min, max)
- elseif spell == "Dragon Claw" then
- doDanoWithProtect(cid, DRAGONDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 141)
- elseif spell == "Wing Attack" or spell == "Steel Wing" then
- local effectpos = getThingPosWithDebug(cid)
- local effect = 255
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- if a == 0 then
- effect = spell == "Steel Wing" and 251 or 128
- effectpos.x = effectpos.x + 1
- effectpos.y = effectpos.y - 1 --alterado v1.4
- elseif a == 1 then
- effectpos.x = effectpos.x + 2
- effectpos.y = effectpos.y + 1
- effect = spell == "Steel Wing" and 253 or 129
- elseif a == 2 then
- effectpos.x = effectpos.x + 1
- effectpos.y = effectpos.y + 2
- effect = spell == "Steel Wing" and 252 or 131
- elseif a == 3 then
- effectpos.x = effectpos.x - 1
- effectpos.y = effectpos.y + 1
- effect = spell == "Steel Wing" and 254 or 130
- end
- doSendMagicEffect(effectpos, effect)
- doMoveInArea2(cid, 0, wingatk, FLYINGDAMAGE, min, max, spell)
- elseif spell == "Magma Storm" then
- local eff = {6, 35, 35, 6}
- local area = {flames1, flames2, flames3, flames4}
- addEvent(doMoveInArea2, 2*450, cid, 2, flames0, FIREDAMAGE, min, max, spell)
- for i = 0, 3 do
- addEvent(doMoveInArea2, i*450, cid, eff[i+1], area[i+1], FIREDAMAGE, min, max, spell)
- end
- elseif spell == "Magma Storm" then
- elseif spell == "Bubbles" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
- doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 68) --alterado v1.7
- elseif spell == "Clamp" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
- doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 53) --alterado v1.7
- elseif spell == "Water Gun" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {69, {x=p.x, y=p.y-1, z=p.z}},
- [1] = {70, {x=p.x+6, y=p.y, z=p.z}}, --alterado v1.8
- [2] = {71, {x=p.x, y=p.y+6, z=p.z}},
- [3] = {72, {x=p.x-1, y=p.y, z=p.z}},
- }
- doMoveInArea2(cid, 0, triplo6, WATERDAMAGE, min, max, spell)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Waterball" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
- doDanoWithProtectWithDelay(cid, target, WATERDAMAGE, min, max, 68, waba)
- elseif spell == "Aqua Tail" then
- local function rebackSpd(cid, sss)
- if not isCreature(cid) then return true end
- doChangeSpeed(cid, sss)
- setPlayerStorageValue(cid, 446, -1)
- end
- local x = getCreatureSpeed(cid)
- doFaceOpposite(cid)
- doChangeSpeed(cid, -x)
- addEvent(rebackSpd, 400, cid, x)
- setPlayerStorageValue(cid, 446, 1)
- doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 68)
- elseif spell == "Hydro Cannon" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area, eff)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, WATERDAMAGE, area, 0, 0, 0, eff)
- doAreaCombatHealth(cid, WATERDAMAGE, area, whirl3, -min, -max, 68)
- end
- end
- for a = 0, 4 do
- local t = { --alterado v1.4
- [0] = {64, {x=p.x, y=p.y-(a+1), z=p.z}},
- [1] = {65, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {66, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {67, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
- end
- elseif spell == "Harden" or spell == "Calm Mind" or spell == "Defense Curl" or spell == "Charm" then
- --alterado v1.4
- if spell == "Calm Mind" then
- eff = 133
- elseif spell == "Charm" then
- eff = 147 --efeito n eh esse.. e n sei se eh soh bonus de def, ou sp.def tb.. ;x
- else
- eff = 144
- end
- local ret = {}
- ret.id = cid
- ret.cd = 8
- ret.eff = eff
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Bubble Blast" then
- --cid, effDist, effDano, areaEff, areaDano, element, min, max
- doMoveInAreaMulti(cid, 2, 68, bullet, bulletDano, WATERDAMAGE, min, max)
- elseif spell == "Skull Bash" then
- local ret = {}
- ret.id = 0
- ret.cd = 9 --alterado v1.6
- ret.eff = 118
- ret.check = 0
- ret.first = true
- ret.cond = "Paralyze"
- doMoveInArea2(cid, 118, reto5, NORMALDAMAGE, min, max, spell, ret)
- elseif spell == "Hydropump" then
- local pos = getThingPosWithDebug(cid)
- local function doSendBubble(cid, pos)
- if not isCreature(cid) then return true end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), pos, 2)
- doSendMagicEffect(pos, 53)
- end
- --alterado!!
- for a = 1, 20 do
- local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
- addEvent(doSendBubble, a * 25, cid, lugar)
- end
- addEvent(doDanoWithProtect, 150, cid, WATERDAMAGE, pos, waterarea, -min, -max, 0)
- elseif spell == "Giga Impact" then
- local tempo = 3 --Tempo, em segundos.
- local a = {}
- local ret1 = {}
- ret1.id = 0
- ret1.cd = 5
- ret1.eff = 0
- ret1.check = 0
- ret1.first = true
- ret1.cond = "Slow"
- local ret2 = {}
- ret2.id = 0
- ret2.cd = 5
- ret2.eff = 0
- ret2.check = 0
- ret2.first = true
- ret2.cond = "Miss"
- a.speed = getCreatureSpeed(cid)
- doChangeSpeed(cid, -getCreatureSpeed(cid))
- doChangeSpeed(cid, a.speed*2)
- addEvent(function()
- if not isCreature(cid) then return true end
- doRegainSpeed(cid)
- doMoveInArea2(cid, 118, quake, NORMALDAMAGE, min, max, spell, ret1)
- doMoveInArea2(cid, 118, quake, NORMALDAMAGE, 0, 0, spell, ret2)
- end, tempo*1000)
- elseif spell == "String Shot" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23)
- local ret = {}
- ret.id = target
- ret.cd = 6
- ret.eff = 137
- ret.check = getPlayerStorageValue(target, conds["Stun"])
- ret.spell = spell
- ret.cond = "Stun"
- addEvent(doMoveDano2, 100, cid, target, BUGDAMAGE, 0, 0, ret, spell)
- elseif spell == "Bug Bite" then
- doSendMagicEffect(getThingPosWithDebug(target), 244)
- doDanoInTargetWithDelay(cid, target, BUGDAMAGE, min, max, 8) --alterado v1.7
- elseif spell == "Super Sonic" then
- local rounds = math.random(4, 7)
- rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
- local ret = {}
- ret.id = target
- ret.cd = rounds
- ret.check = getPlayerStorageValue(target, conds["Confusion"])
- ret.cond = "Confusion"
- addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
- elseif spell == "Whirlwind" then
- area = {SL1, SL2, SL3, SL4}
- for i = 0, 3 do
- addEvent(doMoveInArea2, i*300, cid, 42, area[i+1], FLYINGDAMAGE, min, max, spell)
- end
- elseif spell == "Razor Wind" then
- area = {SL1, SL2, SL3, SL4}
- for i = 0, 3 do
- addEvent(doMoveInArea2, i*300, cid, 131, area[i+1], NORMALDAMAGE, min, max, spell)
- end
- elseif spell == "Psybeam" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local t = {
- [0] = 58, --alterado v1.6
- [1] = 234,
- [2] = 58,
- [3] = 209,
- }
- doMoveInArea2(cid, t[a], reto4, psyDmg, min, max, spell) --alterado v1.4
- elseif spell == "Sand Attack" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local t = {
- [0] = 120,
- [1] = 121,
- [2] = 122,
- [3] = 119,
- }
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 34
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- doCreatureSetLookDir(cid, a) --sera? '-'
- stopNow(cid, 1000)
- doMoveInArea2(cid, t[a], reto5, GROUNDDAMAGE, 0, 0, spell, ret)
- elseif spell == "Confusion" or spell == "Night Shade" then
- local rounds = math.random(4, 7) --rever area...
- rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
- if spell == "Confusion" then
- dano = psyDmg --alterado v1.4
- else
- dano = ghostDmg
- end
- local ret = {}
- ret.id = 0
- ret.check = 0
- ret.cd = rounds
- ret.cond = "Confusion"
- doMoveInArea2(cid, 136, selfArea1, dano, min, max, spell, ret)
- elseif spell == "Horn Attack" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
- doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v1.7
- elseif spell == "Poison Sting" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
- doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 8) --alterado v1.7
- elseif spell == "Fury Cutter" or spell == "Red Fury" then
- local effectpos = getThingPosWithDebug(cid)
- local effect = 255
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- if a == 0 then
- if getSubName(cid, target) == "Scizor" then --alterado v1.6.1
- effect = 236
- else
- effect = 128
- end
- effectpos.x = effectpos.x + 1
- effectpos.y = effectpos.y - 1
- elseif a == 1 then
- effectpos.x = effectpos.x + 2
- effectpos.y = effectpos.y + 1
- if getSubName(cid, target) == "Scizor" then --alterado v1.6.1
- effect = 232
- else
- effect = 129
- end
- elseif a == 2 then
- effectpos.x = effectpos.x + 1
- effectpos.y = effectpos.y + 2
- if getSubName(cid, target) == "Scizor" then --alterado v1.6.1
- effect = 233
- else
- effect = 131
- end
- elseif a == 3 then
- effectpos.x = effectpos.x - 1
- effectpos.y = effectpos.y + 1
- if getSubName(cid, target) == "Scizor" then --alterado v1.6.1
- effect = 224
- else
- effect = 130
- end
- end
- local function doFury(cid, effect)
- if not isCreature(cid) then return true end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doSendMagicEffect(effectpos, effect)
- doMoveInArea2(cid, 2, wingatk, BUGDAMAGE, min, max, spell)
- end
- addEvent(doFury, 0, cid, effect)
- addEvent(doFury, 350, cid, effect)
- elseif spell == "Pin Missile" then
- doMoveInAreaMulti(cid, 13, 7, bullet, bulletDano, BUGDAMAGE, min, max)
- elseif spell == "Strafe" or spell == "Agility" then
- local ret = {}
- ret.id = cid
- ret.cd = 15
- ret.eff = 14
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Gust" then
- doMoveInArea2(cid, 42, reto5, FLYINGDAMAGE, min, max, spell)
- elseif spell == "Drill Peck" then
- doDanoWithProtect(cid, FLYINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 148)
- elseif spell == "Tornado" then
- local pos = getThingPosWithDebug(cid)
- local function doSendTornado(cid, pos)
- if not isCreature(cid) then return true end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), pos, 22)
- doSendMagicEffect(pos, 42)
- end
- for b = 1, 3 do
- for a = 1, 20 do
- local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
- addEvent(doSendTornado, a * 75, cid, lugar)
- end
- end
- doDanoWithProtect(cid, FLYINGDAMAGE, pos, waterarea, -min, -max, 0)
- elseif spell == "Bite" or tonumber(spell) == 5 then
- doDanoWithProtect(cid, DARKDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 146)
- elseif spell == "Super Fang" then
- doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 244)
- elseif spell == "Poison Fang" then
- doSendMagicEffect(getThingPosWithDebug(target), 244)
- doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 114) --alterado v1.7
- elseif spell == "Sting Gun" then
- local function doGun(cid, target)
- if not isCreature(cid) or not isCreature(target) then return true end --alterado v1.7
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 13)
- doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 8) --alterado v1.7
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 200, cid, 3644587, 1)
- for i = 0, 2 do
- addEvent(doGun, i*100, cid, target)
- end
- elseif spell == "Acid" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 14)
- doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 20) --alterado v1.7
- elseif spell == "Fear" or spell == "Roar" then
- local ret = {}
- ret.id = 0
- ret.cd = 5
- ret.check = 0
- ret.skill = spell
- ret.cond = "Fear"
- doMoveInArea2(cid, 0, confusion, DARKDAMAGE, 0, 0, spell, ret)
- elseif spell == "Iron Tail" then
- local function rebackSpd(cid, sss)
- if not isCreature(cid) then return true end
- doChangeSpeed(cid, sss)
- setPlayerStorageValue(cid, 446, -1)
- end
- local x = getCreatureSpeed(cid)
- doFaceOpposite(cid)
- doChangeSpeed(cid, -x)
- addEvent(rebackSpd, 400, cid, x)
- setPlayerStorageValue(cid, 446, 1)
- doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 160)
- elseif spell == "Thunder Shock" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 40)
- doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v1.7
- elseif spell == "Thunder Bolt" then
- --alterado v1.7
- local function doThunderFall(cid, frompos, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local ry = math.abs(frompos.y - pos.y)
- doSendDistanceShoot(frompos, getThingPosWithDebug(target), 41)
- addEvent(doDanoInTarget, ry * 11, cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v1.7
- end
- local function doThunderUp(cid, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local mps = getThingPosWithDebug(cid)
- local xrg = math.floor((pos.x - mps.x) / 2)
- local topos = mps
- topos.x = topos.x + xrg
- local rd = 7
- topos.y = topos.y - rd
- doSendDistanceShoot(getThingPosWithDebug(cid), topos, 41)
- addEvent(doThunderFall, rd * 49, cid, topos, target)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
- for thnds = 1, 2 do
- addEvent(doThunderUp, thnds * 155, cid, target)
- end
- elseif spell == "Thunder Wave" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 48
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 48, db1, ELECTRICDAMAGE, min, max, spell, ret) --alterado v1.8
- elseif spell == "Thunder" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 48
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 48, thunderr, ELECTRICDAMAGE, min, max, spell, ret)
- elseif spell == "Web Shot" then
- local ret = {}
- ret.id = target
- ret.cd = 9
- ret.eff = 26
- ret.check = 0
- ret.spell = spell
- ret.cond = "Paralyze"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23)
- addEvent(doMoveDano2, 100, cid, target, BUGDAMAGE, -min, -max, ret, spell)
- elseif spell == "Sky Uppercut" then
- sendEffWithProtect(cid, getThingPosWithDebug(cid), 211)
- local function doSkyUpper(cid, target)
- if not isCreature(cid) or not isCreature(target) then return false end
- doTeleportThing(cid, getPosByDir(getThingPosWithDebug(target), math.random(0, 7)), false)
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113)
- return true
- end
- addEvent(doSkyUpper, 200, cid, target)
- addEvent(sendEffWithProtect, 300, cid, getThingPosWithDebug(cid), 211)
- addEvent(doSkyUpper, 500, cid, target)
- addEvent(sendEffWithProtect, 700, cid, getThingPosWithDebug(cid), 211)
- addEvent(doSkyUpper, 1000, cid, target)
- elseif spell == "Dragon Flight" then
- sendEffWithProtect(cid, getThingPosWithDebug(cid), 211)
- local function doSkyUpper(cid, target)
- if not isCreature(cid) or not isCreature(target) then return false end
- doTeleportThing(cid, getPosByDir(getThingPosWithDebug(target), math.random(0, 7)), false)
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 5)
- doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 141)
- return true
- end
- addEvent(doSkyUpper, 200, cid, target)
- addEvent(sendEffWithProtect, 300, cid, getThingPosWithDebug(cid), 211)
- addEvent(doSkyUpper, 500, cid, target)
- addEvent(sendEffWithProtect, 700, cid, getThingPosWithDebug(cid), 211)
- addEvent(doSkyUpper, 1000, cid, target)
- elseif spell == "Double Kick" then
- doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 113)
- addEvent(doDanoWithProtect, 100, cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 113)
- elseif spell == "Outrage" then
- local config = {
- outfit = {
- --["pokemon_name"] = outfit,
- ["Salamence"] = 1737,
- ["Mega Charizardx"] = 1778,
- ["Mega Sceptile"] = 1790,
- ["Mega Salamence"] = 1737,
- },
- AOE = {
- times = 2, --Quantas vezes o golpe AOE será usado.
- interval = 3000, --Intervalo de tempo, em milésimos de segundo, entre cada golpe AOE.
- combat = DRAGONDAMAGE, --Elemento.
- spell = {
- --Uma tabela deverá ser configurada com a área e efeito da parte com socos, e a outra com a parte do efeito do Draco Meteor.
- {area = OutrageArea1, effect = 171}, --{area = área do dano AOE, effect = efeito}
- {area = OutrageArea2, effect = 157}
- },
- }
- }
- local function doOutrage(cid, times)
- if not isCreature(cid) then return true end
- for i = 1, #config.AOE.spell do
- doMoveInArea2(cid, config.AOE.spell[i].effect, config.AOE.spell[i].area, config.AOE.combat, min, max, spell)
- end
- times = times - 1
- if times <= 0 then
- local rounds = math.random(4, 7)
- rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
- local ret = {}
- ret.id = cid
- ret.cd = rounds
- ret.check = getPlayerStorageValue(cid, conds["Confusion"])
- ret.cond = "Confusion"
- doCondition2(ret)
- return true
- end
- addEvent(doOutrage, config.AOE.interval, cid, times)
- end
- local ret = {}
- ret.id = cid
- ret.cd = config.AOE.interval / 1000 * config.AOE.times
- ret.eff = 0
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- doSetCreatureOutfit(cid, {lookType = config.outfit[getCreatureName(cid)]}, config.AOE.interval * config.AOE.times)
- addEvent(doOutrage, config.AOE.interval, cid, config.AOE.times)
- elseif spell == "Fire Spin" then
- local function setOutfit(cid, outfit)
- if isCreature(cid) and getCreatureCondition(cid, CONDITION_OUTFIT) == true then
- if getCreatureOutfit(cid).lookType == outfit then
- doRemoveCondition(cid, CONDITION_OUTFIT)
- end
- end
- end
- if FireOuts[getSubName(cid, target)] then
- doSetCreatureOutfit(cid, FireOuts[getSubName(cid, target)], -1) --alterado v1.6.1
- end
- local outfit = getCreatureOutfit(cid).lookType
- local function roll(cid, outfit)
- if not isCreature(cid) then return true end
- if isSleeping(cid) then return true end
- if FireOuts[getSubName(cid, target)] then
- doSetCreatureOutfit(cid, FireOuts[getSubName(cid, target)], -1) --alterado v1.6.1
- end
- doDanoWithProtect(cid, FIREDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 9000, cid, 3644587, -1)
- for r = 0, 10 do --8
- addEvent(roll, 750 * r, cid, outfit)
- end
- addEvent(setOutfit, 9050, cid, outfit)
- doRaiseStatus(cid, 0, 0, 150, 10)
- elseif spell == "Mega Kick" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113) --alterado v1.7
- elseif spell == "Thunder Punch" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doSendMagicEffect(getThingPosWithDebug(target), 112)
- doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v1.7
- elseif spell == "Electric Storm" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local function doFall(cid)
- for rocks = 1, 42 do
- addEvent(fall, rocks*35, cid, master, ELECTRICDAMAGE, 41, 48)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, 41)
- end
- addEvent(doFall, 450, cid)
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 48
- ret.spell = spell
- ret.cond = "Stun"
- addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ELECTRICDAMAGE, min, max, spell, ret)
- elseif spell == "Web Rain" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local function doFall(cid)
- for rocks = 1, 42 do
- addEvent(fall, rocks*35, cid, master, BUGDAMAGE, 23)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, 23)
- end
- addEvent(doFall, 450, cid)
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 26
- ret.spell = spell
- ret.cond = "Silence"
- addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, BUGDAMAGE, min, max, spell, ret)
- elseif spell == "Spider Web" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 26
- ret.cond = "Silence"
- doMoveInAreaMulti(cid, 23, 26, multi, multiDano, BUGDAMAGE, min, max)
- doMoveInArea2(cid, 0, multiDano, BUGDAMAGE, 0, 0, spell, ret)
- elseif spell == "Mud Shot" or spell == "Mud Slap" then
- if isCreature(target) then --alterado v1.8
- local contudion = spell == "Mud Shot" and "Miss" or "Stun"
- local ret = {}
- ret.id = target
- ret.cd = 9
- ret.eff = 34
- ret.check = getPlayerStorageValue(target, conds[contudion])
- ret.spell = spell
- ret.cond = contudion
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6)
- addEvent(doMoveDano2, 100, cid, target, GROUNDDAMAGE, -min, -max, ret, spell)
- end
- elseif spell == "Rollout" then
- local function setOutfit(cid, outfit)
- if isCreature(cid) and getCreatureCondition(cid, CONDITION_OUTFIT) == true then
- if getCreatureOutfit(cid).lookType == outfit then
- doRemoveCondition(cid, CONDITION_OUTFIT)
- if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
- if isSummon(cid) then
- local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
- doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v1.8
- end
- end
- end
- end
- end
- if RollOuts[getSubName(cid, target)] then
- doSetCreatureOutfit(cid, RollOuts[getSubName(cid, target)], -1) --alterado v1.6.1
- end
- local outfit = getCreatureOutfit(cid).lookType
- local function roll(cid, outfit)
- if not isCreature(cid) then return true end
- if isSleeping(cid) then return true end
- if RollOuts[getSubName(cid, target)] then
- doSetCreatureOutfit(cid, RollOuts[getSubName(cid, target)], -1) --alterado v1.6.1
- end
- doDanoWithProtect(cid, ROCKDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 9000, cid, 3644587, -1)
- for r = 1, 11 do --8
- addEvent(roll, 750 * r, cid, outfit)
- end
- addEvent(setOutfit, 9050, cid, outfit)
- elseif spell == "Shockwave" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area, areaEff, eff)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end --testar o atk!!
- doAreaCombatHealth(cid, GROUNDDAMAGE, areaEff, 0, 0, 0, eff)
- doAreaCombatHealth(cid, GROUNDDAMAGE, area, whirl3, -min, -max, 255)
- end
- end
- for a = 0, 5 do
- local t = {
- [0] = {126, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}},
- [1] = {124, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+1), y=p.y+1, z=p.z}},
- [2] = {125, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+1), z=p.z}},
- [3] = {123, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}}
- }
- addEvent(sendAtk, 325*a, cid, t[d][2], t[d][3], t[d][1])
- end
- elseif spell == "Earthshock" then
- local eff = getSubName(cid, target) == "Shiny Onix" and 179 or 127 --alterado v1.6.1
- doAreaCombatHealth(cid, GROUNDDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)
- local sps = getThingPosWithDebug(cid)
- sps.x = sps.x+1
- sps.y = sps.y+1
- doSendMagicEffect(sps, eff)
- elseif spell == "Earthquake" then
- local eff = getSubName(cid, target) == "Shiny Onix" and 175 or 118 --alterado v1.6.1
- local function doQuake(cid)
- if not isCreature(cid) then return false end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doMoveInArea2(cid, eff, confusion, GROUNDDAMAGE, min, max, spell)
- end
- times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)
- for i = 1, #times do --alterado v1.4
- addEvent(doQuake, times[i], cid)
- end
- elseif spell == "Portais" then
- local eff = getSubName(cid, target) == "Hoopa" and 135 or 135 --alterado v1.6.1
- local function doQuake(cid)
- if not isCreature(cid) then return false end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doMoveInArea2(cid, eff, confusion, GROUNDDAMAGE, min, max, spell)
- end
- times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)
- for i = 1, #times do --alterado v1.4
- addEvent(doQuake, times[i], cid)
- end
- elseif spell == "PsyQuake" then
- local eff = getSubName(cid, target) == "Hoopa" and 238 or 238 --alterado v1.6.1
- local function doQuake(cid)
- if not isCreature(cid) then return false end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doMoveInArea2(cid, eff, confusion, PSYCHICDAMAGE, min, max, spell)
- end
- times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000, 10100, 11000, 15000, 18000, 20000}
- 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 == "DarkQuake" then
- local eff = getSubName(cid, target) == "Mega Hoopa" and 136 or 136 --alterado v1.6.1
- local function doQuake(cid)
- if not isCreature(cid) then return false end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doMoveInArea2(cid, eff, confusion, DARKDAMAGE, min, max, spell)
- end
- times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000, 10100, 11000, 15000, 18000, 20000}
- 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 == "LeafQuake" then
- local eff = getSubName(cid, target) == "Tangrowth" and 105 or 105 --alterado v1.6.1
- local function doQuake(cid)
- if not isCreature(cid) then return false end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doMoveInArea2(cid, eff, confusion, GRASSDAMAGE, min, max, spell)
- end
- times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000, 10100, 11000, 15000, 18000, 20000}
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)
- for i = 1, #times do --alterado v1.4
- addEvent(doQuake, times[i], cid)
- end
- elseif spell == "Stomp" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 34
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret)
- elseif spell == "Toxic Spikes" then
- local function doToxic(cid, target)
- if not isCreature(cid) or not isCreature(target) then return true end --alterado v1.7
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
- doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 114) --alterado v1.7
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 300, cid, 3644587, -1)
- addEvent(doToxic, 0, cid, target)
- addEvent(doToxic, 300, cid, target)
- elseif spell == "Horn Drill" then
- local function doHorn(cid, target)
- if not isCreature(cid) or not isCreature(target) then return true end --alterado v1.7
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 25)
- doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v1.7
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 300, cid, 3644587, -1)
- addEvent(doHorn, 0, cid, target)
- addEvent(doHorn, 300, cid, target)
- elseif spell == "Doubleslap" then
- doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 148)
- elseif spell == "Lovely Kiss" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 16)
- local ret = {}
- ret.id = target
- ret.cd = 9
- ret.check = getPlayerStorageValue(target, conds["Stun"])
- ret.eff = 147
- ret.spell = spell
- ret.cond = "Stun"
- addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
- elseif spell == "Sing" then
- local ret = {}
- ret.id = 0
- ret.cd = math.random(6, 10)
- ret.check = 0
- ret.first = true
- ret.cond = "Sleep" --alterado v1.6
- doMoveInArea2(cid, 33, selfArea1, NORMALDAMAGE, 0, 0, spell, ret)
- elseif spell == "Multislap" then
- doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 3)
- elseif spell == "Metronome" then
- local spells = {"Shadow Storm", "Electric Storm", "Magma Storm", "Blizzard", "Meteor Mash", "Leaf Storm", "Hydropump", "Falling Rocks"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 161)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 1" then
- local spells = {"Psy Pulse", "Shadow Ball", "Thunder Bolt", "Ember", "Rock Throw", "Razor Leaf", "Bubbles", "Ice Shards", "Egg Bomb", "Poison Bomb"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 2" then
- local spells = {"Mud Bomb", "Cyber Pulse", "Dark Pulse", "Rock Slide", "Magical Leaf", "Fireball", "Waterball", "Feather Dance"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 3" then
- local spells = {"Poison Gas", "Earthquake", "Petal Tornado", "Electro Field", "Flame Wheel"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 4" then
- local spells = {"Thunder", "Night Slash", "Confusion", "Air Slash", "Confusion", "Night Shade"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 5" then
- local spells = {"Solar Beam", "Bullet Seed", "Raging Blast", "Fire Blast", "Bubble Blast", "Hydro Cannon", "Pin Missile"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 6" then
- local spells = {"Shockwave", "Petal Dance", "Hyper Beam", "Zap Cannon", "Aurora Beam", "Ice Beam", "Ground Chop"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 7" then
- local spells = {"Fear", "Sunny Day", "Scary Face", "Skull Bash", "Cotton Spore", "Sleep Powder"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 8" then
- local spells = {"Reflect", "Charm", "Agility", "Safeguard", "Synthesis", "Emergency Call", "Healarea", "Sing"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 9" then
- local spells = {"Psychic", "Epicenter", "Mortal Gas", "Hydropump", "Muddy Water"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Sketch 10" then
- local spells = {"Focus Blast", "Blizzard", "Shadow Storm", "Falling Rocks", "Meteor Mash", "Electric Storm", "Hydro Dance", "Magma Storm", "Draco Meteor", "Psy Impact"}
- local random = math.random(1, #spells)
- local randommove = spells[random]
- local pos = getThingPosWithDebug(cid)
- pos.y = pos.y - 1
- doSendMagicEffect(pos, 0)
- local function doMetronome(cid, skill)
- if not isCreature(cid) then return true end
- docastspell(cid, skill)
- end
- addEvent(doMetronome, 200, cid, randommove)
- elseif spell == "Focus" or spell == "Charge" or spell == "Swords Dance" then
- --alterado v1.4
- if spell == "Charge" then
- doSendAnimatedText(getThingPosWithDebug(cid), "CHARGE", 168)
- doSendMagicEffect(getThingPosWithDebug(cid), 177)
- elseif spell == "Swords Dance" then
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- else
- doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144)
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- end
- setPlayerStorageValue(cid, 253, 1)
- elseif spell == "Growth" then
- --alterado v1.4
- if spell == "Growth" then
- doSendAnimatedText(getThingPosWithDebug(cid), "Growth", 168)
- doSendMagicEffect(getThingPosWithDebug(cid), 177)
- end
- setPlayerStorageValue(cid, 253, 1)
- --[[elseif spell == "Flame Wheel" then
- --alterado v1.8 o atk ta la pra baixo agora...
- local function sendFireEff(cid, dir)
- if not isCreature(cid) then return true end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doDanoWithProtect(cid, FIREDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 15)
- end
- local function doWheel(cid)
- if not isCreature(cid) then return true end
- local t = {
- [1] = SOUTH,
- [2] = SOUTHEAST,
- [3] = EAST,
- [4] = NORTHEAST,
- [5] = NORTH, --alterado!
- [6] = NORTHWEST,
- [7] = WEST,
- [8] = SOUTHWEST,
- }
- for a = 1, 8 do
- addEvent(sendFireEff, a * 140, cid, t[a])
- end
- end
- doWheel(cid, false, cid) ]]
- elseif spell == "Hyper Voice" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 22
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 22, tw1, NORMALDAMAGE, min, max, spell, ret)
- elseif spell == "Restore" or spell == "Selfheal" then
- local min = (getCreatureMaxHealth(cid) * 75) / 100
- local max = (getCreatureMaxHealth(cid) * 85) / 100
- local function doHealArea(cid, min, max)
- local amount = math.random(min, max)
- if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
- amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
- end
- if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
- doCreatureAddHealth(cid, amount)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
- end
- end
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- doHealArea(cid, min, max)
- elseif spell == "Aqua Ring" then
- local min = (getCreatureMaxHealth(cid) * 75) / 100
- local max = (getCreatureMaxHealth(cid) * 85) / 100
- local function doHealArea(cid, min, max)
- local amount = math.random(min, max)
- if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
- amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
- end
- if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
- doCreatureAddHealth(cid, amount)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
- end
- end
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- doHealArea(cid, min, max)
- elseif spell == "Healarea" then
- local min = (getCreatureMaxHealth(cid) * 50) / 100
- local max = (getCreatureMaxHealth(cid) * 60) / 100
- local function doHealArea(cid, min, max)
- local amount = math.random(min, max)
- if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
- amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
- end
- if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
- doCreatureAddHealth(cid, amount)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
- end
- end
- local pos = getPosfromArea(cid, heal)
- local n = 0
- doHealArea(cid, min, max)
- while n < #pos do
- n = n+1
- thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}
- local pid = getThingFromPosWithProtect(thing)
- doSendMagicEffect(pos[n], 12)
- if isCreature(pid) then
- if isSummon(cid) and (isSummon(pid) or isPlayer(pid)) then
- if canAttackOther(cid, pid) == "Cant" then
- doHealArea(pid, min, max)
- end
- elseif ehMonstro(cid) and ehMonstro(pid) then
- doHealArea(pid, min, max)
- end
- end
- end
- elseif spell == "Milk Drink" then
- local min = (getCreatureMaxHealth(cid) * 50) / 100
- local max = (getCreatureMaxHealth(cid) * 60) / 100
- local function doHealArea(cid, min, max)
- local amount = math.random(min, max)
- if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
- amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
- end
- if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
- doCreatureAddHealth(cid, amount)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
- end
- end
- local pos = getPosfromArea(cid, heal)
- local n = 0
- doHealArea(cid, min, max)
- while n < #pos do
- n = n+1
- thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}
- local pid = getThingFromPosWithProtect(thing)
- doSendMagicEffect(pos[n], 12)
- if isCreature(pid) then
- if isSummon(cid) and (isSummon(pid) or isPlayer(pid)) then
- if canAttackOther(cid, pid) == "Cant" then
- doHealArea(pid, min, max)
- end
- elseif ehMonstro(cid) and ehMonstro(pid) then
- doHealArea(pid, min, max)
- end
- end
- end
- elseif spell == "Toxic" then
- doMoveInArea2(cid, 114, reto5, POISONDAMAGE, min, max, spell)
- elseif spell == "Absorb" then
- local life = getCreatureHealth(target)
- doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)
- local newlife = life - getCreatureHealth(target)
- doSendMagicEffect(getThingPosWithDebug(cid), 14)
- if newlife >= 1 then
- doCreatureAddHealth(cid, newlife)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32)
- end
- elseif spell == "Poison Bomb" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 14)
- doDanoWithProtectWithDelay(cid, target, POISONDAMAGE, min, max, 20, bombWee2)
- elseif spell == "Poison Gas" then
- local dmg = isSummon(cid) and getMasterLevel(cid)+getPokemonBoost(cid) or getPokemonLevel(cid)
- local ret = {id = 0, cd = 13, eff = 34, check = 0, spell = spell, cond = "Miss"}
- local ret2 = {id = 0, cd = 13, check = 0, damage = dmg, cond = "Poison"} --rever isso ainda!!
- local function gas(cid)
- doMoveInArea2(cid, 114, confusion, POISONDAMAGE, 0, 0, spell, ret)
- doMoveInArea2(cid, 0, confusion, POISONDAMAGE, min, max, spell)
- end
- times = {0, 500, 1000, 1500, 2300, 2800, 3300, 3800, 4600, 5100, 5600, 6100, 6900, 7400, 7900, 8400, 9200, 10000}
- for i = 1, #times do
- addEvent(gas, times[i], cid)
- end
- elseif spell == "Petal Dance" then
- doMoveInAreaMulti(cid, 21, 245, bullet, bulletDano, GRASSDAMAGE, min, max)
- elseif spell == "Dynamic Punch" then
- local pos = getThingPosWithDebug(cid)
- local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}
- for i = 0, 9 do
- addEvent(doMoveInArea2, i*400, cid, 112, areas[i+1], FIGHTINGDAMAGE, min, max, spell)
- addEvent(doMoveInArea2, i*410, cid, 112, areas[i+1], FIGHTINGDAMAGE, 0, 0, spell)
- end
- elseif spell == "Revenge" then
- local function doRevenge(cid)
- if not isCreature(cid) then return false end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- local rev = getThingPosWithDebug(cid)
- rev.x = rev.x+1
- rev.y = rev.y+1
- doSendMagicEffect(rev, 99)
- doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)
- end
- times = {0, 500, 1000, 1500, 2300}
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 10000, cid, 3644587, -1)
- for i = 1, #times do --alterado v1.4
- addEvent(doRevenge, times[i], cid)
- end
- elseif spell == "Close Combat" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 26)
- doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 237) --alterado v1.7
- doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144)
- setPlayerStorageValue(cid, 253, 1)
- elseif spell == "Sand Storm" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- ------------
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 34
- ret.cond = "Silence"
- ---
- local function doFall(cid)
- for rocks = 1, 42 do --62
- addEvent(fall, rocks*35, cid, master, GROUNDDAMAGE, 22, 158)
- end
- end
- ---
- local function doRain(cid)
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end --cura status
- doCureStatus(cid, "all")
- ---
- setPlayerStorageValue(cid, 253, 1) --focus
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- ---
- doMoveInArea2(cid, 0, confusion, GROUNDDAMAGE, 0, 0, spell, ret)
- end
- ---
- addEvent(doFall, 200, cid)
- addEvent(doRain, 1000, cid)
- elseif spell == "Powder Snow" then
- snowP = getThingPosWithDebug(cid)
- local ret = {}
- ret.id = 0
- ret.cd = 10
- ret.check = 0
- ret.eff = 43
- ret.spell = spell
- ret.cond = "Slow"
- doMoveInArea2(cid, 0, check, ICEDAMAGE, min, max, spell, ret)
- doSendMagicEffect({x = snowP.x + 1, y = snowP.y, z = snowP.z}, 206)
- elseif spell == "Slash" then
- doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 159)
- elseif spell == "X-Scissor" then
- local a = getThingPosWithDebug(cid)
- local X = {
- {{x = a.x+1, y = a.y, z = a.z}, 16}, --norte
- {{x = a.x+2, y = a.y+1, z = a.z}, 221}, --leste
- {{x = a.x+1, y = a.y+2, z = a.z}, 223}, --sul
- {{x = a.x, y = a.y+1, z = a.z}, 243}, --oeste
- }
- local pos = X[mydir+1]
- for b = 1, 3 do
- addEvent(doSendMagicEffect, b * 70, pos[1], pos[2])
- end
- doMoveInArea2(cid, 2, xScissor, BUGDAMAGE, min, max, spell)
- elseif spell == "Psychic" then
- doDanoWithProtect(cid, psyDmg, getThingPosWithDebug(cid), selfArea2, min, max, 133)
- elseif spell == "Pay Day" then
- --alterado v1.7
- local function doThunderFall(cid, frompos, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local ry = math.abs(frompos.y - pos.y)
- doSendDistanceShoot(frompos, getThingPosWithDebug(target), 39)
- addEvent(doDanoInTarget, ry * 11, cid, target, NORMALDAMAGE, min, max, 28) --alterado v1.7
- end
- local function doThunderUp(cid, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local mps = getThingPosWithDebug(cid)
- local xrg = math.floor((pos.x - mps.x) / 2)
- local topos = mps
- topos.x = topos.x + xrg
- local rd = 7
- topos.y = topos.y - rd
- doSendDistanceShoot(getThingPosWithDebug(cid), topos, 39)
- addEvent(doThunderFall, rd * 49, cid, topos, target)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
- for thnds = 1, 2 do
- addEvent(doThunderUp, thnds * 155, cid, target)
- end
- elseif spell == "Psywave" then
- doMoveInArea2(cid, 133, db1, psyDmg, min, max, spell)
- elseif spell == "Triple Kick" or spell == "Triple Kick Lee" then
- doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 110)
- elseif spell == "Karate Chop" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 113) --alterado v1.7
- elseif spell == "Ground Chop" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area, area2, eff) --alterado v1.6
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, FIGHTINGDAMAGE, area, 0, 0, 0, eff)
- doAreaCombatHealth(cid, FIGHTINGDAMAGE, area2, whirl3, -min, -max, 255) --alterado v1.6
- end
- end
- for a = 0, 4 do
- local t = {
- [0] = {99, {x=p.x+1, y=p.y-(a+1), z=p.z}, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.6
- [1] = {99, {x=p.x+(a+2), y=p.y+1, z=p.z}, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {99, {x=p.x+1, y=p.y+(a+2), z=p.z}, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {99, {x=p.x-(a+1), y=p.y+1, z=p.z}, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 270*a, cid, t[d][2], t[d][3], t[d][1]) --alterado v1.6
- end
- elseif spell == "Mega Punch" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, -min, -max, 112) --alterado v1.7
- elseif spell == "Tri Flames" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 39
- ret.cond = "Silence"
- doMoveInArea2(cid, 6, triflames, FIREDAMAGE, min, max, spell, ret)
- elseif spell == "War Dog" then
- local ret = {}
- ret.id = cid
- ret.cd = 15
- ret.eff = 28
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Hypnosis" then
- local ret = {}
- ret.id = target
- ret.cd = math.random(6, 9)
- ret.check = getPlayerStorageValue(target, conds["Sleep"])
- ret.first = true --alterado v1.6
- ret.cond = "Sleep"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 24)
- addEvent(doMoveDano2, 150, cid, target, PSYCHICDAMAGE, 0, 0, ret, spell)
- elseif spell == "Dizzy Punch" then
- local rounds = getPokemonLevel(cid) / 12
- rounds = rounds + 2
- local ret = {}
- ret.id = target
- ret.check = getPlayerStorageValue(target, conds["Confusion"])
- ret.cd = rounds
- ret.cond = "Confusion"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 26)
- doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 112)
- addEvent(doMoveDano2, 50, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
- elseif spell == "Ice Punch" then
- local ret = {}
- ret.id = target
- ret.cd = 9
- ret.eff = 43
- ret.check = getPlayerStorageValue(target, conds["Slow"])
- ret.first = true
- ret.cond = "Slow"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28)
- doSendMagicEffect(getThingPosWithDebug(target), 112)
- doDanoWithProtectWithDelay(cid, target, ICEDAMAGE, min, max, 43)
- addEvent(doMoveDano2, 50, cid, target, ICEDAMAGE, 0, 0, ret, spell)
- elseif spell == "Ice Beam" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {97, {x=p.x+1, y=p.y-1, z=p.z}},
- [1] = {96, {x=p.x+6, y=p.y+1, z=p.z}},
- [2] = {97, {x=p.x+1, y=p.y+6, z=p.z}},
- [3] = {96, {x=p.x-1, y=p.y+1, z=p.z}},
- }
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 43
- ret.check = 0
- ret.first = true
- ret.cond = "Slow"
- doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Psy Pulse" or spell == "Cyber Pulse" or spell == "Dark Pulse" then
- damage = skill == "Dark Pulse" and DARKDAMAGE or psyDmg
- local function doPulse(cid, eff)
- if not isCreature(cid) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
- doDanoInTargetWithDelay(cid, target, damage, min, max, eff) --alterado v1.7
- end
- if spell == "Cyber Pulse" then
- eff = 11
- elseif spell == "Dark Pulse" then
- eff = 47 --efeito n eh esse mas... ;p
- else
- eff = 133
- end
- addEvent(doPulse, 0, cid, eff)
- addEvent(doPulse, 250, cid, eff)
- elseif spell == "Psyusion" then
- local rounds = math.random(4, 7)
- rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
- local eff = {136, 133, 136, 133, 137}
- local area = {psy1, psy2, psy3, psy4, psy5}
- local ret = {}
- ret.id = 0
- ret.check = 0
- ret.cd = rounds
- ret.cond = "Confusion"
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1)
- for i = 0, 4 do
- addEvent(doMoveInArea2, i*400, cid, eff[i+1], area[i+1], psyDmg, min, max, spell, ret)
- end
- elseif spell == "Triple Punch" then
- doDanoWithProtect(cid, FIGHTINGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 110)
- elseif spell == "Fist Machine" then
- local mpos = getThingPosWithDebug(cid)
- local b = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local effect = 0
- local xvar = 0
- local yvar = 0
- if b == SOUTH then
- effect = 218
- yvar = 2
- elseif b == NORTH then
- effect = 217
- elseif b == WEST then
- effect = 216
- elseif b == EAST then
- effect = 215
- xvar = 2
- end
- mpos.x = mpos.x + xvar
- mpos.y = mpos.y + yvar
- doSendMagicEffect(mpos, effect)
- doMoveInArea2(cid, 0, machine, FIGHTINGDAMAGE, min, max, spell)
- elseif spell == "Destroyer Hand" then
- doMoveInAreaMulti(cid, 26, 111, bullet, bulletDano, FIGHTINGDAMAGE, min, max)
- elseif spell == "Rock Throw" then
- local effD = getSubName(cid, target) == "Shiny Onix" and 0 or 11
- local eff = getSubName(cid, target) == "Shiny Onix" and 176 or 44 --alterado v1.6.1
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), effD)
- doDanoInTargetWithDelay(cid, target, ROCKDAMAGE, min, max, eff) --alterado v1.7
- elseif spell == "Rock Slide" or spell == "Stone Edge" then
- atk = {
- ["Rock Slide"] = {11, 44, 0, 176},
- ["Stone Edge"] = {11, 239}
- }
- local effD = getSubName(cid, target) == "Shiny Onix" and atk[spell][3] or atk[spell][1]
- local eff = getSubName(cid, target) == "Shiny Onix" and atk[spell][4] or atk[spell][2] --alterado v1.6.1
- --alterado v1.7
- local function doRockFall(cid, frompos, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local ry = math.abs(frompos.y - pos.y)
- doSendDistanceShoot(frompos, getThingPosWithDebug(target), effD)
- addEvent(doDanoInTarget, ry * 11, cid, target, ROCKDAMAGE, min, max, eff) --alterado v1.7
- end
- local function doRockUp(cid, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local mps = getThingPosWithDebug(cid)
- local xrg = math.floor((pos.x - mps.x) / 2)
- local topos = mps
- topos.x = topos.x + xrg
- local rd = 7
- topos.y = topos.y - rd
- doSendDistanceShoot(getThingPosWithDebug(cid), topos, effD)
- addEvent(doRockFall, rd * 49, cid, topos, target)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
- for thnds = 1, 2 do
- addEvent(doRockUp, thnds * 155, cid, target)
- end
- elseif spell == "Falling Rocks" then
- local effD = getSubName(cid, target) == "Shiny Onix" and 0 or 11
- local eff = getSubName(cid, target) == "Shiny Onix" and 176 or 44 --alterado v1.6.1
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- ------------
- local function doFall(cid)
- for rocks = 1, 62 do
- addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, effD)
- end
- addEvent(doFall, 450, cid)
- addEvent(doDanoWithProtect, 1400, cid, ROCKDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)
- elseif spell == "Selfdestruct" then
- local function death(cid)
- if isCreature(cid) then
- if pokeHaveReflect(cid) then return true end --alterado v1.6
- doCreatureAddHealth(cid, -getCreatureMaxHealth(cid))
- end
- end
- doMoveInArea2(cid, 5, selfArea1, NORMALDAMAGE, min, max, spell) --alterado v1.6
- addEvent(death, 300, cid)
- elseif spell == "Crusher Stomp" then
- local pL = getThingPosWithDebug(cid)
- pL.x = pL.x+5
- pL.y = pL.y+1
- -----------------
- local pO = getThingPosWithDebug(cid)
- pO.x = pO.x-3
- pO.y = pO.y+1
- ------------------
- local pN = getThingPosWithDebug(cid)
- pN.x = pN.x+1
- pN.y = pN.y+5
- -----------------
- local pS = getThingPosWithDebug(cid)
- pS.x = pS.x+1
- pS.y = pS.y-3
- local po = {pL, pO, pN, pS}
- local po2 = {
- {x = pL.x, y = pL.y-1, z = pL.z},
- {x = pO.x, y = pO.y-1, z = pO.z},
- {x = pN.x-1, y = pN.y, z = pN.z},
- {x = pS.x-1, y = pS.y, z = pS.z},
- }
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 34
- ret.spell = spell
- ret.cond = "Stun"
- for i = 1, 4 do
- doSendMagicEffect(po[i], 127)
- doAreaCombatHealth(cid, GROUNDDAMAGE, po2[i], crusher, -min, -max, 255)
- end
- doMoveInArea2(cid, 118, stomp, GROUNDDAMAGE, min, max, spell, ret)
- elseif spell == "Water Pulse" then
- doDanoWithProtect(cid, WATERDAMAGE, getThingPosWithDebug(cid), selfArea2, min, max, 155)
- elseif spell == "Sonicboom" then
- local function doBoom(cid)
- if not isCreature(cid) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 33)
- doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v1.7
- end
- addEvent(doBoom, 0, cid)
- addEvent(doBoom, 250, cid)
- elseif spell == "Stickmerang" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 34)
- doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 212) --alterado v1.7
- elseif spell == "Stickslash" then
- local function sendStickEff(cid, dir)
- if not isCreature(cid) then return true end
- doAreaCombatHealth(cid, FLYINGDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 212)
- end
- local function doStick(cid)
- if not isCreature(cid) then return true end
- local t = {
- [1] = SOUTHWEST,
- [2] = SOUTH,
- [3] = SOUTHEAST,
- [4] = EAST,
- [5] = NORTHEAST,
- [6] = NORTH,
- [7] = NORTHWEST,
- [8] = WEST,
- [9] = SOUTHWEST,
- }
- for a = 1, 9 do
- addEvent(sendStickEff, a * 140, cid, t[a])
- end
- end
- doStick(cid, false, cid)
- elseif spell == "Stick Throw" then
- local area = {Throw01, Throw02, Throw03, Throw04, Throw03, Throw02, Throw01}
- for i = 0, 6 do
- addEvent(doMoveInArea2, i*400, cid, 212, area[i+1], FLYINGDAMAGE, min, max, spell)
- end
- elseif spell == "Cannon Ball" then
- local area = {Throw01, Throw02, Throw03, Throw04, Throw03, Throw02, Throw01}
- for i = 0, 6 do
- addEvent(doMoveInArea2, i*400, cid, 100, area[i+1], GROUNDDAMAGE, min, max, spell)
- end
- elseif spell == "Pluck" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 111) --alterado v1.7
- elseif spell == "Tri-Attack" then
- --alterado v1.7
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 600, cid, 3644587, -1)
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 42) --alterado v1.6
- for i = 0, 2 do
- addEvent(doDanoInTargetWithDelay, i*300, cid, target, NORMALDAMAGE, min, max, 238) --alterado v1.7
- end
- elseif spell == "Fury Attack" then
- --alterado v1.7
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 600, cid, 3644587, -1)
- for i = 0, 2 do
- addEvent(doDanoInTargetWithDelay, i*300, cid, target, NORMALDAMAGE, min, max, 110) --alterado v1.7
- end
- elseif spell == "Ice Shards" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 28)
- doDanoInTargetWithDelay(cid, target, ICEDAMAGE, min, max, 43) --alterado v1.7
- elseif spell == "Icy Wind" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 43
- ret.check = 0
- ret.first = true
- ret.cond = "Slow"
- doMoveInArea2(cid, 17, db1, ICEDAMAGE, min, max, spell, ret)
- elseif spell == "Aurora Beam" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {186, {x=p.x+1, y=p.y-1, z=p.z}},
- [1] = {57, {x=p.x+6, y=p.y+1, z=p.z}}, --alterado v1.6
- [2] = {186, {x=p.x+1, y=p.y+6, z=p.z}},
- [3] = {57, {x=p.x-1, y=p.y+1, z=p.z}}, --alterado v1.6
- }
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 43
- ret.check = 0
- ret.first = true
- ret.cond = "Slow"
- doMoveInArea2(cid, 0, triplo6, ICEDAMAGE, min, max, spell, ret)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Rest" then
- local ret = {}
- ret.id = cid
- ret.cd = 6
- ret.eff = 0
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Sludge" then
- --alterado v1.7
- local function doSludgeFall(cid, frompos, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local ry = math.abs(frompos.y - pos.y)
- doSendDistanceShoot(frompos, getThingPosWithDebug(target), 6)
- addEvent(doDanoInTargetWithDelay, ry * 11, cid, target, POISONDAMAGE, min, max, 116) --alterado v1.7
- end
- local function doSludgeUp(cid, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local mps = getThingPosWithDebug(cid)
- local xrg = math.floor((pos.x - mps.x) / 2)
- local topos = mps
- topos.x = topos.x + xrg
- local rd = 7
- topos.y = topos.y - rd
- doSendDistanceShoot(getThingPosWithDebug(cid), topos, 6)
- addEvent(doSludgeFall, rd * 49, cid, topos, target)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 350, cid, 3644587, -1)
- for thnds = 1, 2 do
- addEvent(doSludgeUp, thnds * 155, cid, target)
- end --alterado v1.5
- elseif spell == "Mud Bomb" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 6) --alterado v1.8
- doDanoWithProtectWithDelay(cid, target, MUDBOMBDAMAGE, min, max, 116, bombWee2)
- elseif spell == "Mortal Gas" then
- local pos = getThingPosWithDebug(cid)
- local function doSendAcid(cid, pos)
- if not isCreature(cid) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), pos, 14)
- doSendMagicEffect(pos, 114)
- end
- for b = 1, 3 do
- for a = 1, 20 do
- local lugar = {x = pos.x + math.random(-4, 4), y = pos.y + math.random(-3, 3), z = pos.z}
- addEvent(doSendAcid, a * 75, cid, lugar)
- end
- end
- doDanoWithProtect(cid, POISONDAMAGE, pos, waterarea, -min, -max, 0)
- elseif spell == "Rock Drill" or spell == "Megahorn" or spell == "Rock Blast" then
- local damage = spell == "Megahorn" and BUGDAMAGE or ROCKDAMAGE
- local eff = spell == "Megahorn" and 8 or 44
- local effD = spell == "Rock Blast" and 11 or 25
- --cid, effDist, effDano, areaEff, areaDano, element, min, max
- doMoveInAreaMulti(cid, effD, eff, bullet, bulletDano, damage, min, max)
- elseif spell == "Egg Bomb" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 12)
- doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 5, crusher)
- elseif spell == "Super Vines" then
- stopNow(cid, 200) --alterado v1.6
- doCreatureSetLookDir(cid, 2)
- local effect = 0
- local pos = getThingPosWithDebug(cid)
- pos.x = pos.x + 1
- pos.y = pos.y + 1
- local effect = getSubName(cid, target) == "Tangrowth" and 268 or 229 --alterado v1.6.1
- doSendMagicEffect(pos, effect)
- doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 0)
- elseif spell == "Epicenter" then
- doMoveInArea2(cid, 127, epicenter, GROUNDDAMAGE, min, max, spell)
- elseif spell == "Bubblebeam" then
- local function sendBubbles(cid)
- if not isCreature(cid) or not isCreature(target) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 2)
- doDanoInTargetWithDelay(cid, target, WATERDAMAGE, min, max, 68) --alterado v1.7
- end
- sendBubbles(cid)
- addEvent(sendBubbles, 250, cid)
- elseif spell == "Swift" then
- local function sendSwift(cid, target)
- if not isCreature(cid) or not isCreature(target) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
- doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 3) --alterado v1.7
- end
- addEvent(sendSwift, 100, cid, target)
- addEvent(sendSwift, 200, cid, target)
- elseif spell == "Spark" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 32)
- doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v1.7
- elseif spell == "Mimic Wall" then
- local p = getThingPosWithDebug(cid)
- local dirr = getCreatureLookDir(cid)
- if dirr == 0 or dirr == 2 then
- item = 11439
- else
- item = 11440
- end
- local wall = {
- [0] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}},
- [2] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}},
- [1] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}},
- [3] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}},
- }
- function removeAllActionIDs(pos, onlyOne)
- if onlyOne then
- local thing1 = {x=pos.x,y=pos.y,z=pos.z,stackpos=0}
- local tile1 = getTileThingWithProtect(thing1).uid
- doSetItemActionId(tile1, 0)
- end
- n = 0
- for i = 1, #pos do
- n = n + 1
- thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=0}
- local tile = getTileThingWithProtect(thing).uid
- doSetItemActionId(tile, 0)
- end
- end
- for i = 1, 3 do
- if wall[dirr] then
- local t = wall[dirr]
- if hasTile(t[i]) and canWalkOnPos2(t[i], true, true, true, true, false) then --alterado v1.6
- doCreateItem(item, 1, t[i])
- --
- local Tile = getTileThingWithProtect({x=t[i].x,y=t[i].y,z=t[i].z,stackpos=0})
- doSetItemActionId(Tile.uid, 88072)
- addEvent(removeAllActionIDs, 15000, t[i], true)
- --
- addEvent(doRemoveItemFromPos, 15000, t[i], item, 1)
- end
- end
- end
- local pos = getPosfromArea(cid, wall_1)
- local pos2 = getPosfromArea(cid, wall_2)
- if hasTile({x=p.x,y=p.y,z=p.z,stackpos=0}) then
- tile0 = getTileThingWithProtect({x=p.x,y=p.y,z=p.z,stackpos=0}).uid
- end
- doSetItemActionId(tile0, 88070)
- addEvent(removeAllActionIDs, 15000, p, true)
- n = 0
- while n < #pos do
- if not isCreature(cid) then return true end
- n = n+1
- local tile1 = getTileThingWithProtect({x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=0}).uid
- ---
- local tile2 = getTileThingWithProtect({x=pos2[n].x,y=pos2[n].y,z=pos2[n].z,stackpos=0}).uid
- doSetItemActionId(tile1, 88071)
- doSetItemActionId(tile2, 88070)
- end
- addEvent(removeAllActionIDs, 15000, pos)
- addEvent(removeAllActionIDs, 15000, pos2)
- elseif spell == "Shredder Team" then --alterado v1.8 \/
- local team = {
- ["Scyther"] = "ScytherTeam",
- ["Shiny Scyther"] = "Shiny ScytherTeam",
- ["Scizor"] = "ScizorTeam",
- }
- local function RemoveTeam(cid)
- if isCreature(cid) then
- doSendMagicEffect(getThingPosWithDebug(cid), 211)
- doRemoveCreature(cid)
- end
- end
- local function sendEff(cid, master, t)
- if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then
- doSendMagicEffect(getThingPosWithDebug(cid), 86, master)
- addEvent(sendEff, 1000, cid, master, t-1) --alterado v1.9
- end
- end
- if getPlayerStorageValue(cid, 637500) >= 1 then
- return true
- end
- local master = getCreatureMaster(cid)
- local item = getPlayerSlotItem(master, 8)
- local life, maxLife = getCreatureHealth(cid), getCreatureMaxHealth(cid)
- local name = getItemAttribute(item.uid, "poke")
- local pos = getThingPosWithDebug(cid)
- local time = 21
- doItemSetAttribute(item.uid, "hp", (life/maxLife))
- local num = getSubName(cid, target) == "Scizor" and 4 or 3
- local pk = {}
- doTeleportThing(cid, {x=4, y=3, z=10}, false)
- if team[name] then
- pk[1] = cid
- for b = 2, num do
- pk[b] = doSummonCreature(team[name], pos)
- doConvinceCreature(master, pk[b])
- end
- for a = 1, num do
- addEvent(doTeleportThing, math.random(0, 5), pk[a], getClosestFreeTile(pk[a], pos), false)
- addEvent(doAdjustWithDelay, 5, master, pk[a], true, true, true)
- doSendMagicEffect(getThingPosWithDebug(pk[a]), 211)
- end
- sendEff(cid, master, time) --alterado v1.9
- setPlayerStorageValue(master, 637501, 1)
- addEvent(setPlayerStorageValue, time * 1000, master, 637501, -2)
- -----
- setPlayerStorageValue(pk[2], 637500, 1)
- addEvent(RemoveTeam, time * 1000, pk[2])
- -----
- setPlayerStorageValue(pk[3], 637500, 1)
- addEvent(RemoveTeam, time * 1000, pk[3])
- ----
- if getSubName(cid, target) == "Scizor" then
- setPlayerStorageValue(pk[4], 637500, 1)
- addEvent(RemoveTeam, time * 1000, pk[4])
- end
- end
- elseif spell == "Team Slice" or spell == "Team Claw" then
- local master = getCreatureMaster(cid)
- if #getCreatureSummons(master) < 2 or not isCreature(target) then return true end
- local summons = getCreatureSummons(master)
- local posis = {[1] = pos1, [2] = pos2, [3] = pos3, [4] = pos4}
- if getSubName(cid, target) == "Scyther" then --alterado v1.6.1
- eff = 39
- elseif getSubName(cid, target) == "Shiny Scyther" then --alterado v1.6.1
- eff = 39
- else
- eff = 42 --alterado v1.5
- end
- if #getCreatureSummons(master) >= 2 and isCreature(target) then
- if isCreature(cid) then
- addEvent(doDanoInTarget, 500, cid, target, BUGDAMAGE, -min, -max, 0) --alterado v1.7
- for i = 1, #summons do
- posis[i] = getThingPosWithDebug(summons[i])
- doDisapear(summons[i])
- stopNow(summons[i], 670)
- addEvent(doSendMagicEffect, 300, posis[i], 211)
- addEvent(doSendDistanceShoot, 350, posis[i], getThingPosWithDebug(target), eff)
- addEvent(doSendDistanceShoot, 450, getThingPosWithDebug(target), posis[i], eff)
- addEvent(doSendDistanceShoot, 600, posis[i], getThingPosWithDebug(target), eff)
- addEvent(doSendDistanceShoot, 650, getThingPosWithDebug(target), posis[i], eff)
- addEvent(doAppear, 670, summons[i])
- end
- end
- end
- elseif spell == "Blizzard" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 43
- ret.check = 0
- ret.first = true
- ret.cond = "Slow"
- local function doFall(cid)
- for rocks = 1, 42 do
- addEvent(fall, rocks*35, cid, master, ICEDAMAGE, 28, 52)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, 28)
- end --alterado v1.4
- addEvent(doFall, 450, cid)
- addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, ICEDAMAGE, min, max, spell, ret)
- elseif spell == "Bulk Up" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 15
- ret.check = 0
- ret.first = true
- ret.cond = "Slow"
- local function doFall(cid)
- for rocks = 1, 42 do
- addEvent(fall, rocks*35, cid, master, FIREDAMAGE, -1, 241)
- end
- end
- for up = 1, 10 do
- --addEvent(upEffect, up*75, cid, 3)
- end
- addEvent(doFall, 450, cid)
- addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, FIREDAMAGE, min, max, spell, ret)
- elseif spell == "Meteor Mash" then
- local effD = 5
- local eff = 249
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local function doFall(cid)
- for rocks = 5, 42 do
- addEvent(fall, rocks*35, cid, master, STEELDAMAGE, effD, eff)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, effD)
- end
- addEvent(doFall, 450, cid)
- addEvent(doDanoWithProtect, 1400, cid, STEELDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)
- elseif spell == "Great Love" then
- local master = getCreatureMaster(cid) or 0
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 147
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- for rocks = 1, 62 do
- addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 147)
- end
- addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)
- elseif spell == "Fire Punch" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doSendMagicEffect(getThingPosWithDebug(target), 112)
- doDanoInTargetWithDelay(cid, target, FIREDAMAGE, min, max, 35) --alterado v1.7
- elseif spell == "Guillotine" then
- doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 146)
- elseif spell == "Hyper Beam" then --alterado v1.7 \/
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {149, {x=p.x+1, y=p.y-1, z=p.z}},
- [1] = {150, {x=p.x+6, y=p.y+1, z=p.z}},
- [2] = {149, {x=p.x+1, y=p.y+6, z=p.z}},
- [3] = {150, {x=p.x-1, y=p.y+1, z=p.z}},
- }
- doMoveInArea2(cid, 0, triplo6, NORMALDAMAGE, min, max, spell)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Signal Beam" then --alterado v1.7 \/
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {262, {x=p.x+1, y=p.y-1, z=p.z}},
- [1] = {263, {x=p.x+6, y=p.y+1, z=p.z}},
- [2] = {264, {x=p.x+1, y=p.y+6, z=p.z}},
- [3] = {265, {x=p.x-1, y=p.y+1, z=p.z}},
- }
- doMoveInArea2(cid, 0, triplo6, BUGDAMAGE, min, max, spell)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Flash Cannon" then --alterado v1.7 \/
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {260, {x=p.x+1, y=p.y-1, z=p.z}},
- [1] = {259, {x=p.x+6, y=p.y+1, z=p.z}},
- [2] = {260, {x=p.x+1, y=p.y+6, z=p.z}},
- [3] = {259, {x=p.x-1, y=p.y+1, z=p.z}},
- }
- doMoveInArea2(cid, 0, triplo6, STEELDAMAGE, min, max, spell)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Thrash" then
- --cid, effDist, effDano, areaEff, areaDano, element, min, max
- doMoveInAreaMulti(cid, 10, 111, bullet, bulletDano, NORMALDAMAGE, min, max)
- elseif spell == "Splash" or tonumber(spell) == 7 then
- doAreaCombatHealth(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, -min, -max, 255)
- doSendMagicEffect(getThingPosWithDebug(cid), 53)
- elseif spell == "Dragon Breath" then
- doMoveInArea2(cid, 143, db1, DRAGONDAMAGE, min, max, spell)
- elseif spell == "Muddy Water" then
- local pos = getThingPosWithDebug(cid)
- doMoveInArea2(cid, 55, doSurf1, GROUNDDAMAGE, 0, 0, spell)
- addEvent(doDanoWithProtect, math.random(100, 400), cid, GROUNDDAMAGE, pos, doSurf2, -min, -max, 0)
- elseif spell == "Venom Motion" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 34
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- doMoveInArea2(cid, 114, muddy, POISONDAMAGE, min, max, spell, ret)
- elseif spell == "Thunder Fang" then
- doSendMagicEffect(getThingPosWithDebug(target), 146)
- doDanoInTargetWithDelay(cid, target, ELECTRICDAMAGE, min, max, 48) --alterado v1.7
- elseif spell == "Zap Cannon" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {73, {x=p.x, y=p.y-1, z=p.z}},
- [1] = {74, {x=p.x+6, y=p.y, z=p.z}}, --alterado v1.8
- [2] = {75, {x=p.x, y=p.y+6, z=p.z}},
- [3] = {76, {x=p.x-1, y=p.y, z=p.z}},
- }
- doMoveInArea2(cid, 0, triplo6, ELECTRICDAMAGE, min, max, spell)
- doMoveInArea2(cid, 177, reto6, ELECTRICDAMAGE, 0, 0, "Zap Cannon Eff")
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Charge Beam" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {73, {x=p.x, y=p.y-1, z=p.z}},
- [1] = {74, {x=p.x+6, y=p.y, z=p.z}}, --alterado v1.8
- [2] = {75, {x=p.x, y=p.y+6, z=p.z}},
- [3] = {76, {x=p.x-1, y=p.y, z=p.z}},
- }
- doMoveInArea2(cid, 0, triplo6, ELECTRICDAMAGE, min, max, spell)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Sacred Fire" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
- doDanoWithProtectWithDelay(cid, target, SACREDDAMAGE, min, max, 143, sacred) --alterado v1.6
- elseif spell == "Blaze Kick" then
- doMoveInArea2(cid, 6, blaze, FIREDAMAGE, min, max, spell)
- addEvent(doMoveInArea2, 200, cid, 6, kick, FIREDAMAGE, min, max, spell)
- elseif spell == "Cross Chop" then
- doMoveInArea2(cid, 118, blaze, FIGHTINGDAMAGE, min, max, spell)
- addEvent(doMoveInArea2, 200, cid, 118, kick, FIGHTINGDAMAGE, min, max, spell)
- elseif spell == "Overheat" then
- doMoveInArea2(cid, 5, reto5, FIREDAMAGE, min, max, spell)
- elseif spell == "Ancient Power" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area, eff)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, ROCKDAMAGE, area, 0, 0, 0, eff)
- doAreaCombatHealth(cid, ROCKDAMAGE, area, whirl3, -min, -max, 137)
- end
- end
- for a = 0, 4 do
- local t = {
- [0] = {18, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.4
- [1] = {18, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {18, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {18, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
- end
- elseif spell == "Twister" then
- doMoveInAreaMulti(cid, 28, 42, bullet, bulletDano, DRAGONDAMAGE, min, max)
- elseif spell == "Multi-Kick" then
- doMoveInAreaMulti(cid, 39, 113, multi, multiDano, FIGHTINGDAMAGE, min, max)
- elseif spell == "Multi-Punch" then
- doMoveInAreaMulti(cid, 39, 112, multi, multiDano, FIGHTINGDAMAGE, min, max)
- elseif spell == "Squisky Licking" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 0
- ret.spell = spell
- ret.cond = "Stun"
- local areas = {SL1, SL2, SL3, SL4}
- for i = 0, 3 do
- addEvent(doMoveInArea2, i*200, cid, 145, areas[i+1], NORMALDAMAGE, min, max, spell, ret)
- end
- elseif spell == "Lick" then
- local ret = {}
- ret.id = target
- ret.cd = 9
- ret.check = getPlayerStorageValue(target, conds["Stun"])
- ret.eff = 0
- ret.spell = spell
- ret.cond = "Stun"
- doSendMagicEffect(getThingPosWithDebug(target), 145) --alterado v1.4!
- addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
- elseif spell == "Bonemerang" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7)
- doDanoInTargetWithDelay(cid, target, GROUNDDAMAGE, min, max, 227) --alterado v1.7
- addEvent(doSendDistanceShoot, 250, getThingPosWithDebug(target), getThingPosWithDebug(cid), 7)
- elseif spell == "Bone Club" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 7)
- doDanoInTargetWithDelay(cid, target, GROUNDDAMAGE, min, max, 118) --alterado v1.7
- elseif spell == "Bone Slash" then
- local function sendStickEff(cid, dir)
- if not isCreature(cid) then return true end
- doAreaCombatHealth(cid, GROUNDDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 227)
- end
- local function doStick(cid)
- if not isCreature(cid) then return true end
- local t = {
- [1] = SOUTHWEST,
- [2] = SOUTH,
- [3] = SOUTHEAST,
- [4] = EAST,
- [5] = NORTHEAST,
- [6] = NORTH,
- [7] = NORTHWEST,
- [8] = WEST,
- [9] = SOUTHWEST,
- }
- for a = 1, 9 do
- addEvent(sendStickEff, a * 140, cid, t[a])
- end
- end
- doStick(cid, false, cid)
- --alterado v1.4
- elseif spell == "Furious Legs" or spell == "Ultimate Champion" or spell == "Fighter Spirit" then
- local ret = {}
- ret.id = cid
- ret.cd = 15
- ret.eff = 13
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Sludge Wave" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 34
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- function sendAtk(cid, area, eff)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, POISONDAMAGE, area, 0, 0, 0, eff)
- doAreaCombatHealth(cid, POISONDAMAGE, area, whirl3, -min, -max, 114)
- end
- end
- for a = 0, 4 do
- local t = {
- [0] = {114, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.4
- [1] = {114, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {114, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {114, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 300*a, cid, t[d][2], t[d][1])
- end
- elseif spell == "Sludge Rain" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 34
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- local function doFall(cid)
- for rocks = 1, 42 do
- addEvent(fall, rocks*35, cid, master, POISONDAMAGE, 6, 116)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, 6)
- end
- addEvent(doFall, 450, cid)
- addEvent(doMoveInArea2, 1400, cid, 0, BigArea2, POISONDAMAGE, min, max, spell, ret)
- elseif spell == "Shadow Ball" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 18)
- local function doDamageWithDelay(cid, target)
- if not isCreature(cid) or not isCreature(target) then return true end
- if isSleeping(cid) then return false end
- if getPlayerStorageValue(cid, conds["Fear"]) >= 1 then return true end
- doAreaCombatHealth(cid, ghostDmg, getThingPosWithDebug(target), 0, -min, -max, 255)
- local pos = getThingPosWithDebug(target)
- pos.x = pos.x + 1
- doSendMagicEffect(pos, 140)
- end
- addEvent(doDamageWithDelay, 100, cid, target)
- elseif spell == "Shadow Punch" then
- local pos = getThingPosWithDebug(target)
- doSendMagicEffect(pos, 112)
- local function doPunch(cid, target)
- if not isCreature(cid) or not isCreature(target) then return true end
- doAreaCombatHealth(cid, ghostDmg, getThingPosWithDebug(target), 0, -min, -max, 255)
- pos.x = pos.x + 1
- doSendMagicEffect(pos, 140)
- end
- addEvent(doPunch, 200, cid, target)
- elseif spell == "Brick Beak" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 88
- ret.check = 0
- ret.first = true
- ret.cond = "Paralyze"
- ret.id = 0
- ret.cd = 9
- ret.eff = 88
- ret.check = 0
- ret.first = true
- ret.cond = "Silence"
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- local t = {
- [0] = {90, {x=p.x+1, y=p.y-1, z=p.z}},
- [1] = {90, {x=p.x+2, y=p.y+1, z=p.z}},
- [2] = {90, {x=p.x+1, y=p.y+2, z=p.z}},
- [3] = {90, {x=p.x-1, y=p.y+1, z=p.z}},
- }
- doMoveInArea2(cid, 0, BrickBeak, FIGHTINGDAMAGE, min, max, spell, ret)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Shadow Storm" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local function doFall(cid)
- for rocks = 1, 42 do --62
- addEvent(fall, rocks*35, cid, master, ghostDmg, 18, 140)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, 18)
- end
- addEvent(doFall, 450, cid)
- addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, ghostDmg, min, max, spell)
- elseif spell == "Invisible" then
- doDisapear(cid)
- doSendMagicEffect(getThingPosWithDebug(cid), 134)
- if isMonster(cid) then
- local pos = getThingPosWithDebug(cid) --alterei!
- doTeleportThing(cid, {x=4, y=3, z=10}, false)
- doTeleportThing(cid, pos, false)
- end
- addEvent(doAppear, 4000, cid)
- elseif spell == "Nightmare" then
- if not isSleeping(target) then
- doSendMagicEffect(getThingPosWithDebug(target), 3)
- doSendAnimatedText(getThingPosWithDebug(target), "FAIL", 155)
- return true
- end
- doDanoWithProtectWithDelay(cid, target, ghostDmg, -min, -max, 138)
- elseif spell == "Dream Eater" then
- if not isSleeping(target) then
- doSendMagicEffect(getThingPosWithDebug(target), 3)
- doSendAnimatedText(getThingPosWithDebug(target), "FAIL", 155)
- return true
- end
- --alterado v1.6
- setPlayerStorageValue(cid, 95487, 1)
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoWithProtectWithDelay(cid, target, psyDmg, -min, -max, 138)
- elseif spell == "Dark Eye" or spell == "Miracle Eye" then
- doSendMagicEffect(getThingPosWithDebug(cid), 47)
- setPlayerStorageValue(cid, 999457, 1)
- elseif spell == "Elemental Hands" then
- if getCreatureOutfit(cid).lookType == 1301 then
- print("Error occurred with move 'Elemental Hands', outfit of hitmonchan is wrong")
- doPlayerSendTextMessage(getCreatureMaster(cid), MESSAGE_STATUS_CONSOLE_BLUE, "A error are ocurred... A msg is sent to gamemasters!")
- return true
- end --proteçao pra n usar o move com o shiny hitmonchan com outfit diferente da do elite monchan do PO...
- local e = getCreatureMaster(cid)
- local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
- local hands = getItemAttribute(getPlayerSlotItem(e, 8).uid, "hands")
- if hands == 4 then
- doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", 0)
- doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][0].eff)
- doSetCreatureOutfit(cid, {lookType = hitmonchans[name][0].out}, -1)
- else
- doItemSetAttribute(getPlayerSlotItem(e, 8).uid, "hands", hands+1)
- doSendMagicEffect(getThingPosWithDebug(cid), hitmonchans[name][hands+1].eff)
- doSetCreatureOutfit(cid, {lookType = hitmonchans[name][hands+1].out}, -1)
- end
- elseif spell == "Crabhammer" then
- doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 225)
- elseif spell == "Ancient Fury" then
- local ret = {}
- ret.id = cid
- ret.cd = 15
- ret.eff = 0
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Divine Punishment" then
- local roardirections = {
- [NORTH] = {SOUTH},
- [SOUTH] = {NORTH},
- [WEST] = {EAST},
- [EAST] = {WEST}}
- local function divineBack(cid)
- if not isCreature(cid) then return true end
- local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1)
- for _,pid in pairs(uid) do
- dirrr = getCreatureDirectionToTarget(pid, cid)
- delay = getNextStepDelay(pid, 0)
- if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then
- setPlayerStorageValue(pid, 654878, 1)
- doChangeSpeed(pid, -getCreatureSpeed(pid))
- doChangeSpeed(pid, 100)
- doPushCreature(pid, roardirections[dirrr][1], 1, 0)
- doChangeSpeed(pid, -getCreatureSpeed(pid))
- addEvent(setPlayerStorageValue, 6450, pid, 654878, -1)
- addEvent(doRegainSpeed, 6450, pid)
- elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
- setPlayerStorageValue(pid, 654878, 1)
- doChangeSpeed(pid, -getCreatureSpeed(pid))
- doChangeSpeed(pid, 100)
- doPushCreature(pid, roardirections[dirrr][1], 1, 0)
- doChangeSpeed(pid, -getCreatureSpeed(pid))
- addEvent(doRegainSpeed, 6450, pid)
- addEvent(setPlayerStorageValue, 6450, pid, 654878, -1)
- end
- end
- end
- local function doDivine(cid, min, max, spell, rounds, area)
- if not isCreature(cid) then return true end
- local ret = {}
- ret.id = 0
- ret.check = 0
- ret.cd = rounds
- ret.cond = "Confusion"
- for i = 1, 9 do
- addEvent(doMoveInArea2, i*500, cid, 137, area[i], psyDmg, min, max, spell, ret)
- end
- end
- local rounds = math.random(9, 12)
- local area = {punish1, punish2, punish3, punish1, punish2, punish3, punish1, punish2, punish3}
- local posi = getThingPosWithDebug(cid)
- posi.x = posi.x+1
- posi.y = posi.y+1
- setPlayerStorageValue(cid, 2365487, 1)
- addEvent(setPlayerStorageValue, 6450, cid, 2365487, -1) --alterado v1.4
- doDisapear(cid)
- doChangeSpeed(cid, -getCreatureSpeed(cid))
- doSendMagicEffect(posi, 247)
- addEvent(doAppear, 6450, cid)
- addEvent(doRegainSpeed, 6450, cid)
- local uid = checkAreaUid(getCreaturePosition(cid), check, 1, 1)
- for _,pid in pairs(uid) do
- if isSummon(cid) and (isMonster(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can")) and pid ~= cid then
- doChangeSpeed(pid, -getCreatureSpeed(pid))
- elseif isMonster(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
- doChangeSpeed(pid, -getCreatureSpeed(pid))
- end
- end
- addEvent(divineBack, 2100, cid)
- addEvent(doDivine, 2200, cid, min, max, spell, rounds, area)
- elseif isInArray({"Psychic Sight", "Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, spell) then
- local ret = {}
- ret.id = cid
- ret.cd = 10
- ret.eff = 0
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Shadowave" then
- doMoveInArea2(cid, 222, db1, DARKDAMAGE, min, max, spell)
- elseif spell == "Confuse Ray" then
- local rounds = math.random(4, 7)
- rounds = rounds + math.floor(getPokemonLevel(cid) / 35)
- local ret = {}
- ret.id = target
- ret.cd = rounds
- ret.check = getPlayerStorageValue(target, conds["Confusion"])
- ret.cond = "Confusion"
- posi = getThingPosWithDebug(target)
- posi.y = posi.y+1
- ---
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- addEvent(doSendMagicEffect, 100, posi, 222)
- addEvent(doMoveDano2, 100, cid, target, GHOSTDAMAGE, -min, -max, ret, spell)
- elseif spell == "Leaf Blade" then
- local a = getThingPosWithDebug(target)
- posi = {x = a.x+1, y = a.y+1, z = a.z}
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- addEvent(doSendMagicEffect, 200, posi, 240)
- doDanoWithProtectWithDelay(cid, target, GRASSDAMAGE, -min, -max, 0, LeafBlade)
- elseif spell == "Eruption" or spell == "Elecball" then
- local ret = {}
- ret.id = cid
- ret.cd = 15
- ret.eff = 14
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- pos = getThingPosWithDebug(cid)
- pos.x = pos.x+1
- pos.y = pos.y+1
- atk = {
- ["Eruption"] = {241, FIREDAMAGE},
- ["Elecball"] = {171, ELECTRICDAMAGE}
- }
- stopNow(cid, 1000)
- doSendMagicEffect(pos, atk[spell][1])
- doMoveInArea2(cid, 0, bombWee1, atk[spell][2], min, max, spell)
- elseif spell == "Meteor Smash" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 20)
- doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, -min, -max, 242) --alterado v1.7
- elseif spell == "Draco Meteor" then
- local effD = 5
- local eff = 248
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local function doFall(cid)
- for rocks = 5, 42 do
- addEvent(fall, rocks*35, cid, master, DRAGONDAMAGE, effD, eff)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, effD)
- end
- addEvent(doFall, 450, cid)
- addEvent(doDanoWithProtect, 1400, cid, DRAGONDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)
- elseif spell == "Dragon Pulse" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, DRAGONDAMAGE, area, pulse2, -min, -max, 255)
- end
- end
- for a = 0, 3 do
- local t = {
- [0] = {249, {x=p.x, y=p.y-(a+1), z=p.z}},
- [1] = {249, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {249, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {249, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 300*a, cid, t[d][2])
- addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse2, 0, 0, 177)
- addEvent(doDanoWithProtect, 400*a, cid, DRAGONDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
- end
- elseif spell == "Psy Ball" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 3)
- doDanoInTargetWithDelay(cid, target, psyDmg, min, max, 250) --alterado v1.7
- elseif spell == "SmokeScreen" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 34
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- local function smoke(cid)
- if not isCreature(cid) then return true end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doMoveInArea2(cid, 34, confusion, NORMALDAMAGE, 0, 0, spell, ret)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 1000, cid, 3644587, -1)
- for i = 0, 2 do
- addEvent(smoke, i*500, cid)
- end
- elseif spell == "Faint Attack" or spell == "Sucker Punch" then --alterado v1.5
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, DARKDAMAGE, min, max, 237) --alterado v1.7
- elseif spell == "Assurance" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area1, area2, eff)
- if isCreature(cid) then
- if not isSightClear(p, area1, false) then return true end
- if not isSightClear(p, area2, false) then return true end
- doAreaCombatHealth(cid, DARKDAMAGE, area1, 0, 0, 0, eff)
- doAreaCombatHealth(cid, DARKDAMAGE, area2, whirl3, -min, -max, 0)
- end
- end
- for a = 0, 3 do
- local t = {
- [0] = {230, {x=p.x+1, y=p.y-(a+1), z=p.z}, {x=p.x, y=p.y-(a+1), z=p.z}},
- [1] = {226, {x=p.x+(a+2), y=p.y+1, z=p.z}, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {235, {x=p.x+1, y=p.y+(a+1), z=p.z}, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {231, {x=p.x-(a+1), y=p.y+1, z=p.z}, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 300*a, cid, t[d][2], t[d][3], t[d][1])
- end
- elseif spell == "Scary Face" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 0
- ret.spell = spell
- ret.cond = "Stun"
- local p = getThingPosWithDebug(cid)
- doSendMagicEffect({x=p.x+1, y=p.y+1, z=p.z}, 228)
- doMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)
- elseif spell == "Surf" then
- local pos = getThingPosWithDebug(cid)
- doMoveInArea2(cid, 246, doSurf1, WATERDAMAGE, 0, 0, spell)
- addEvent(doDanoWithProtect, math.random(100, 400), cid, WATERDAMAGE, pos, doSurf2, -min, -max, 0)
- elseif spell == "Sunny Day" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 39
- ret.cond = "Silence"
- ----
- local p = getThingPosWithDebug(cid)
- doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 181)
- ---
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end
- doCureStatus(cid, "all")
- setPlayerStorageValue(cid, 253, 1) --focus
- doMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)
- elseif spell == "Taunt" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 136
- ret.cond = "Silence"
- ----
- local p = getThingPosWithDebug(cid)
- doSendMagicEffect({x=p.x+1, y=p.y, z=p.z}, 140)
- ---
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end
- doCureStatus(cid, "all")
- setPlayerStorageValue(cid, 253, 1) --focus
- doMoveInArea2(cid, 0, electro, NORMALDAMAGE, 0, 0, spell, ret)
- elseif isInArray({"Pursuit", "ExtremeSpeed", "U-Turn", "Shell Attack"}, spell) then
- local atk = {
- ["Pursuit"] = {17, DARKDAMAGE},
- ["ExtremeSpeed"] = {50, NORMALDAMAGE, 51},
- ["U-Turn"] = {19, BUGDAMAGE},
- ["Shell Attack"] = {45, BUGDAMAGE} --alterado v1.5
- }
- local pos = getThingPosWithDebug(cid)
- local p = getThingPosWithDebug(target)
- local newPos = getClosestFreeTile(target, p)
- local eff = getSubName(cid, target) == "Shiny Arcanine" and atk[spell][3] or atk[spell][1] --alterado v1.6.1
- local damage = atk[spell][2]
- -----------
- doDisapear(cid)
- doChangeSpeed(cid, -getCreatureSpeed(cid))
- -----------
- addEvent(doSendMagicEffect, 300, pos, 211)
- addEvent(doSendDistanceShoot, 400, pos, p, eff)
- addEvent(doSendDistanceShoot, 400, newPos, p, eff)
- addEvent(doDanoInTarget, 400, cid, target, damage, -min, -max, 0) --alterado v1.7
- addEvent(doSendDistanceShoot, 800, p, pos, eff)
- addEvent(doSendMagicEffect, 850, pos, 211)
- addEvent(doRegainSpeed, 1000, cid)
- addEvent(doAppear, 1000, cid)
- elseif spell == "Egg Rain" then
- local effD = 12
- local eff = 5
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- ------------
- local function doFall(cid)
- for rocks = 1, 62 do
- addEvent(fall, rocks*35, cid, master, ROCKDAMAGE, effD, eff)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, effD)
- end
- addEvent(doFall, 450, cid)
- addEvent(doDanoWithProtect, 1400, cid, NORMALDAMAGE, getThingPosWithDebug(cid), waterarea, -min, -max, 0)
- elseif spell == "Stampade" then
- local master = getCreatureMaster(cid) or 0
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 0
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- for rocks = 1, 42 do
- addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 187)
- end
- addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)
- elseif spell == "Stampage" then
- local master = getCreatureMaster(cid) or 0
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 0
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- for rocks = 1, 42 do
- addEvent(fall, rocks*35, cid, master, NORMALDAMAGE, -1, 194)
- end
- addEvent(doMoveInArea2, 500, cid, 0, BigArea2, NORMALDAMAGE, min, max, spell, ret)
- elseif spell == "Barrier" then
- if not isCreature(getCreatureTarget(cid)) then
- local function sendAtk(cid)
- if not isCreature(cid) then return true end
- setPlayerStorageValue(cid, 9658783, -1)
- setPlayerStorageValue(cid, 734276, -1)
- end
- setPlayerStorageValue(cid, 734276, 1)
- setPlayerStorageValue(cid, 9658783, 1)
- pos = getThingPosWithDebug(cid)
- local function doSendEff(cid)
- if not isCreature(cid) then return true end
- doSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 172)
- end
- for i = 0, 7 do
- addEvent(doSendEff, i*1000, cid)
- end
- addEvent(sendAtk, 8000, cid)
- stopNow(cid, 8 * 800)
- else
- local ret = {}
- ret.id = target
- ret.cd = 10
- ret.check = getPlayerStorageValue(target, conds["Sleep"])
- ret.eff = 0
- ret.cond = "Sleep"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 24)
- pos = getThingPosWithDebug(target)
- addEvent(doMoveDano2, 150, cid, target, PSYCHICDAMAGE, 0, 0, ret, spell)
- local function doSendEff(cid)
- if not isCreature(cid) then return true end
- doSendMagicEffect({x = pos.x + 1, y = pos.y + 1, z = pos.z}, 172)
- end
- for i = 0, 7 do
- addEvent(doSendEff, i*1000, cid)
- end
- stopNow(target, 8 * 800)
- end
- elseif spell == "Air Cutter" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, FLYINGDAMAGE, area, whirl3, -min, -max, 255)
- end
- end
- for a = 0, 5 do
- local t = {
- [0] = {128, {x=p.x, y=p.y-(a+1), z=p.z}, {x=p.x+1, y=p.y-(a+1), z=p.z}},
- [1] = {129, {x=p.x+(a+1), y=p.y, z=p.z}, {x=p.x+(a+2), y=p.y+1, z=p.z}},
- [2] = {131, {x=p.x, y=p.y+(a+1), z=p.z}, {x=p.x+1, y=p.y+(a+2), z=p.z}},
- [3] = {130, {x=p.x-(a+1), y=p.y, z=p.z}, {x=p.x-(a+1), y=p.y+1, z=p.z}}
- }
- addEvent(doSendMagicEffect, 300*a, t[d][3], t[d][1])
- addEvent(sendAtk, 300*a, cid, t[d][2])
- end
- elseif spell == "Venom Gale" then
- local area = {gale1, gale2, gale3, gale4, gale3, gale2, gale1}
- for i = 0, 6 do
- addEvent(doMoveInArea2, i*400, cid, 138, area[i+1], POISONDAMAGE, min, max, spell)
- end
- elseif spell == "Crunch" then
- doMoveInArea2(cid, 146, Crunch1, DARKDAMAGE, min, max, spell)
- addEvent(doMoveInArea2, 300, cid, 146, Crunch2, DARKDAMAGE, min, max, spell)
- elseif spell == "Ice Fang" then
- doTargetCombatHealth(cid, target, ICEDAMAGE, 0, 0, 146)
- addEvent(doDanoWithProtect, 250, cid, ICEDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 17)
- elseif spell == "Psyshock" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area, eff)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, psyDmg, area, 0, 0, 0, eff) --alterado v1.4
- doAreaCombatHealth(cid, psyDmg, area, whirl3, -min, -max, 255) --alterado v1.4
- end
- end
- for a = 0, 4 do
- local t = {
- [0] = {250, {x=p.x, y=p.y-(a+1), z=p.z}}, --alterado v1.4
- [1] = {250, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {250, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {250, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 370*a, cid, t[d][2], t[d][1])
- end
- elseif spell == "Hurricane" then
- local function hurricane(cid)
- if not isCreature(cid) then return true end
- if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return false end
- if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
- doMoveInArea2(cid, 42, bombWee1, FLYINGDAMAGE, min, max, spell)
- end
- doSetCreatureOutfit(cid, {lookType = 1398}, 10000)
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 17*600, cid, 3644587, -1)
- for i = 1, 17 do
- addEvent(hurricane, i*600, cid) --alterado v1.4
- end
- elseif spell == "Aromateraphy" or spell == "Emergency Call" then
- eff = spell == "Aromateraphy" and 14 or 13
- doAreaCombatHealth(cid, GRASSDAMAGE, getThingPosWithDebug(cid), bombWee3, 0, 0, eff)
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end
- doCureStatus(cid, "all")
- local uid = checkAreaUid(getThingPosWithDebug(cid), confusion, 1, 1)
- for _,pid in pairs(uid) do
- if isCreature(pid) then
- if ehMonstro(cid) and ehMonstro(pid) and pid ~= cid then
- doCureStatus(pid, "all")
- elseif isSummon(cid) and ((isSummon(pid) and canAttackOther(cid, pid) == "Cant") or (isPlayer(pid) and canAttackOther(cid, pid) == "Cant")) and pid ~= cid then
- if isSummon(pid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(pid), 8).uid, "all")
- end
- doCureStatus(pid, "all")
- end
- end
- end
- elseif spell == "Synthesis" or spell == "Roost" then
- local min = (getCreatureMaxHealth(cid) * 45) / 100
- local max = (getCreatureMaxHealth(cid) * 60) / 100
- local function doHealArea(cid, min, max)
- local amount = math.random(min, max)
- if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
- amount = -(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
- end
- if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then
- doCreatureAddHealth(cid, amount)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)
- end
- end
- doSendMagicEffect(getThingPosWithDebug(cid), 39)
- doHealArea(cid, min, max)
- elseif spell == "Cotton Spore" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 0
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, spell, ret)
- elseif spell == "Peck" then
- sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, min, max, 3) --alterado v1.7
- elseif spell == "Night Daze" then
- local pos = getThingPosWithDebug(cid)
- local eff = spell == "Night Daze" and 222 or 113
- local dmg = spell == "Night Daze" and DARKDAMAGE or FIGHTINGDAMAGE
- local out = getSubName(cid, target) == "Hitmontop" and 1193 or 1451 --alterado v1.6.1
- local function doSendBubble(cid, pos)
- if not isCreature(cid) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), pos, 39)
- doSendMagicEffect(pos, eff)
- end
- --alterado!!
- for a = 1, 20 do
- local r1 = math.random(-4, 4)
- local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3)
- --
- local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z}
- addEvent(doSendBubble, a * 25, cid, lugar)
- end
- if isInArray({"Hitmontop", "Shiny Hitmontop"}, getSubName(cid, target)) then --alterado v1.6.1
- doSetCreatureOutfit(cid, {lookType = out}, 400)
- end
- addEvent(doDanoWithProtect, 150, cid, dmg, pos, waterarea, -min, -max, 0)
- elseif spell == "Rolling Kick" then
- local pos = getThingPosWithDebug(cid)
- local eff = spell == "Night Daze" and 222 or 113
- local dmg = spell == "Night Daze" and DARKDAMAGE or FIGHTINGDAMAGE
- local out = getSubName(cid, target) == "Hitmontop" and 1193 or 1451 --alterado v1.6.1
- local function doSendBubble(cid, pos)
- if not isCreature(cid) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), pos, 27)
- doSendMagicEffect(pos, eff)
- end
- --alterado!!
- for a = 1, 20 do
- local r1 = math.random(-4, 4)
- local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3)
- --
- local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z}
- addEvent(doSendBubble, a * 25, cid, lugar)
- end
- if isInArray({"Hitmontop", "Shiny Hitmontop"}, getSubName(cid, target)) then --alterado v1.6.1
- doSetCreatureOutfit(cid, {lookType = out}, 400)
- end
- addEvent(doDanoWithProtect, 150, cid, dmg, pos, waterarea, -min, -max, 0)
- elseif spell == "Safeguard" then
- doSendMagicEffect(getThingPosWithDebug(cid), 1)
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end
- doCureStatus(cid, "all")
- elseif spell == "Air Slash" then
- local p = getThingPosWithDebug(cid)
- local t = {
- {{128, {x = p.x+1, y = p.y-1, z = p.z}}, {16, {x = p.x+1, y = p.y-1, z = p.z}}},
- {{129, {x = p.x+2, y = p.y+1, z = p.z}}, {221, {x = p.x+3, y = p.y+1, z = p.z}}},
- {{131, {x = p.x+1, y = p.y+2, z = p.z}}, {223, {x = p.x+1, y = p.y+3, z = p.z}}},
- {{130, {x = p.x-1, y = p.y+1, z = p.z}}, {243, {x = p.x-1, y = p.y+1, z = p.z}}},
- }
- for i = 1, 4 do
- doSendMagicEffect(t[i][2][2], t[i][2][1])
- end
- doDanoWithProtect(cid, FLYINGDAMAGE, getThingPosWithDebug(cid), airSlash, -min, -max, 0)
- for i = 1, 4 do
- addEvent(doSendMagicEffect, 400, t[i][1][2], t[i][1][1])
- end
- addEvent(doDanoWithProtect, 400, cid, FLYINGDAMAGE, getThingPosWithDebug(cid), bombWee2, -min, -max, 0)
- elseif spell == "Feather Dance" then
- local function doPulse(cid, eff)
- if not isCreature(cid) or not isCreature(target) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 9)
- doDanoInTargetWithDelay(cid, target, FLYINGDAMAGE, -min, -max, eff) --alterado v1.7
- end
- addEvent(doPulse, 0, cid, 137)
- addEvent(doPulse, 100, cid, 137)
- elseif spell == "Tailwind" then
- local ret = {}
- ret.id = cid
- ret.cd = 10
- ret.eff = 137
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Double Team" then
- local function RemoveTeam(cid, master)
- if isCreature(cid) then
- local p = getThingPosWithDebug(cid)
- doSendMagicEffect(p, 211)
- doRemoveCreature(cid)
- end
- end
- local function sendEff(cid, master, t)
- if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then
- doSendMagicEffect(getThingPosWithDebug(cid), 86, master)
- addEvent(sendEff, 1000, cid, master, t-1) --alterado v1.9
- end
- end
- if getPlayerStorageValue(cid, 637500) >= 1 then
- return true
- end
- local s = {
- ["Xatu"] = "XatuTeam",
- ["Shiny Xatu"] = "Shiny XatuTeam",
- ["Yanma"] = "YanmaTeam",
- }
- local master = getCreatureMaster(cid)
- local item = getPlayerSlotItem(master, 8)
- local pos = getThingPosWithDebug(cid)
- local time = 20
- local pokelife = (getCreatureHealth(cid) / getCreatureMaxHealth(cid))
- local random = math.random(5, 10)
- local dir = getCreatureLookDir(cid)
- ---------
- doItemSetAttribute(item.uid, "hp", pokelife)
- ---------
- doDisapear(cid)
- doTeleportThing(cid, {x=4, y=3, z=10}, false)
- doAppear(cid)
- ---------
- doSummonMonster(master, s[getSubName(cid, target)]) --alterado v1.6.1
- local pk = getCreatureSummons(master)[2]
- adjustStatus(pk, item.uid, true, true, true)
- ---------
- doTeleportThing(pk, getClosestFreeTile(pk, pos), false)
- doTeleportThing(cid, getClosestFreeTile(cid, pos), false)
- doCreatureSetLookDir(pk, dir)
- doCreatureSetLookDir(cid, dir)
- doSendMagicEffect(getThingPosWithDebug(pk), 211)
- doSendMagicEffect(getThingPosWithDebug(cid), 211)
- if getPlayerStorageValue(cid, 9658783) >= 1 then --gambiarra
- doSetCreatureOutfit(cid, {lookType = 1446}, -1)
- end
- sendEff(cid, master, time) --alterado v1.9
- --------
- setPlayerStorageValue(pk, 637500, 1)
- setPlayerStorageValue(master, 637501, 1)
- addEvent(RemoveTeam, time*1000, pk, master)
- addEvent(setPlayerStorageValue, time*1000, master, 637501, -2) --alterado v1.6
- elseif spell == "Tackle" then
- doDanoWithProtect(cid, NORMALDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 111)
- elseif spell == "Giga Drain" then
- local life = getCreatureHealth(target)
- doDanoWithProtect(cid, GRASSDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)
- local newlife = life - getCreatureHealth(target)
- doSendMagicEffect(getThingPosWithDebug(cid), 14)
- if newlife >= 1 then
- doCreatureAddHealth(cid, newlife)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32)
- end
- elseif spell == "Leech Life" then
- local life = getCreatureHealth(target)
- doDanoWithProtect(cid, BUGDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 14)
- local newlife = life - getCreatureHealth(target)
- doSendMagicEffect(getThingPosWithDebug(cid), 14)
- if newlife >= 1 then
- doCreatureAddHealth(cid, newlife)
- doSendAnimatedText(getThingPosWithDebug(cid), "+"..newlife.."", 32)
- end
- elseif spell == "Bug Fighter" then
- local ret = {}
- ret.id = cid
- ret.cd = 10
- ret.eff = 0
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- elseif spell == "Metal Claw" then
- doDanoWithProtect(cid, STEELDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 160)
- elseif spell == "Power Gem" then
- local p = getThingPosWithDebug(cid)
- local d = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- function sendAtk(cid, area)
- if isCreature(cid) then
- if not isSightClear(p, area, false) then return true end
- doAreaCombatHealth(cid, ROCKDAMAGE, area, pulse2, -min, -max, 255)
- end
- end
- for a = 0, 3 do
- local t = {
- [0] = {29, {x=p.x, y=p.y-(a+1), z=p.z}},
- [1] = {29, {x=p.x+(a+1), y=p.y, z=p.z}},
- [2] = {29, {x=p.x, y=p.y+(a+1), z=p.z}},
- [3] = {29, {x=p.x-(a+1), y=p.y, z=p.z}}
- }
- addEvent(sendAtk, 400*a, cid, t[d][2])
- addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, t[d][1])
- addEvent(doAreaCombatHealth, 400*a, cid, ROCKDAMAGE, t[d][2], pulse1, 0, 0, 103)
- end
- elseif spell == "Octazooka" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 34
- ret.cond = "Silence"
- doMoveInAreaMulti(cid, 6, 116, multi, multiDano, WATERDAMAGE, min, max)
- doMoveInArea2(cid, 0, multiDano, WATERDAMAGE, 0, 0, spell, ret)
- elseif spell == "Take Down" then
- doMoveInArea2(cid, 111, reto5, NORMALDAMAGE, min, max, spell)
- elseif spell == "Yawn" then
- local ret = {}
- ret.id = target
- ret.cd = math.random(6, 9)
- ret.check = getPlayerStorageValue(target, conds["Sleep"])
- ret.first = true
- ret.cond = "Sleep"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 11)
- addEvent(doMoveDano2, 1500, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
- elseif spell == "Tongue Hook" then
- sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38)
- addEvent(doTeleportThing, 200, target, getClosestFreeTile(cid, getThingPosWithDebug(cid)), true)
- addEvent(sendDistanceShootWithProtect, 200, cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38)
- elseif spell == "Tongue Grap" then
- local function distEff(cid, target)
- if not isCreature(cid) or not isCreature(target) or not isSilence(target) then return true end --alterado v1.6
- sendDistanceShootWithProtect(cid, getThingPosWithDebug(target), getThingPosWithDebug(cid), 38)
- end
- local ret = {}
- ret.id = target
- ret.cd = 10
- ret.check = getPlayerStorageValue(target, conds["Silence"])
- ret.eff = 185
- ret.cond = "Silence"
- sendDistanceShootWithProtect(cid, getThingPosWithDebug(cid), getThingPosWithDebug(target), 38)
- addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
- for i = 1, 10 do
- addEvent(distEff, i*930, cid, target)
- end
- elseif spell == "Struggle Bug" then
- local function sendFireEff(cid, dir)
- if not isCreature(cid) then return true end
- doDanoWithProtect(cid, BUGDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 105)
- end
- local function doWheel(cid)
- if not isCreature(cid) then return true end
- local t = {
- [1] = SOUTH,
- [2] = SOUTHEAST,
- [3] = EAST,
- [4] = NORTHEAST,
- [5] = NORTH, --alterado v1.5
- [6] = NORTHWEST,
- [7] = WEST,
- [8] = SOUTHWEST,
- }
- for a = 1, 8 do
- addEvent(sendFireEff, a * 200, cid, t[a])
- end
- end
- doWheel(cid, false, cid)
- elseif spell == "Low Kick" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, FIGHTINGDAMAGE, min, max, 113) --alterado v1.7
- elseif spell == "Present" then
- local function sendHeal(cid)
- if isCreature(cid) and isCreature(target) then
- doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(target), crusher, min, max, 5)
- doSendAnimatedText(getThingPosWithDebug(target), "HEALTH!", 65)
- end
- end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 31)
- if math.random(1, 100) >= 10 then
- doDanoWithProtectWithDelay(cid, target, NORMALDAMAGE, min, max, 5, crusher)
- else
- addEvent(sendHeal, 100, cid)
- end
- elseif spell == "Inferno" or spell == "Fissure" then
- local pos = getThingPosWithDebug(cid)
- atk = {
- ["Inferno"] = {101, FIREDAMAGE},
- ["Fissure"] = {102, GROUNDDAMAGE}
- }
- doMoveInArea2(cid, atk[spell][1], inferno1, atk[spell][2], 0, 0, spell)
- addEvent(doDanoWithProtect, math.random(100, 400), cid, atk[spell][2], pos, inferno2, -min, -max, 0)
- elseif spell == "Wrap" then
- local ret = {}
- ret.id = target
- ret.cd = 10
- ret.check = getPlayerStorageValue(target, conds["Silence"])
- ret.eff = 104
- ret.cond = "Silence"
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- addEvent(doMoveDano2, 100, cid, target, NORMALDAMAGE, 0, 0, ret, spell)
- elseif spell == "Rock n'Roll" then
- local pos = getThingPosWithDebug(cid)
- local areas = {rock1, rock2, rock3, rock4, rock5, rock4, rock3, rock2, rock1}
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 1
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- for i = 0, 8 do
- addEvent(doMoveInArea2, i*400, cid, 1, areas[i+1], NORMALDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*410, cid, 1, areas[i+1], NORMALDAMAGE, 0, 0, spell)
- end
- elseif spell == "Power Wave" then
- local pos = getThingPosWithDebug(cid)
- local areas = {rock1, rock2, rock3, rock4, rock5}
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 103
- ret.check = 0
- ret.first = true
- ret.cond = "Paralyze"
- local function sendAtk(cid)
- if isCreature(cid) then
- doRemoveCondition(cid, CONDITION_OUTFIT)
- setPlayerStorageValue(cid, 9658783, -1)
- for i = 0, 4 do
- addEvent(doMoveInArea2, i*400, cid, 103, areas[i+1], psyDmg, min, max, spell, ret)
- addEvent(doMoveInArea2, i*410, cid, 103, areas[i+1], psyDmg, 0, 0, spell)
- end
- end
- end
- doSetCreatureOutfit(cid, {lookType = 1001}, -1)
- setPlayerStorageValue(cid, 9658783, 1)
- addEvent(sendAtk, 2000, cid)
- elseif spell == "Future Shight" 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 = 1782}, -1)
- setPlayerStorageValue(cid, 9658783, 1)
- addEvent(sendAtk, 2000, cid)
- elseif spell == "Heal Bell" then
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end
- doCureStatus(cid, "all")
- local areas = {rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5, rock1, rock2, rock3, rock4, rock5}
- local ret = {}
- ret.id = cid
- ret.cd = 10
- ret.eff = 0
- ret.check = 0
- ret.buff = spell
- ret.first = true
- doCondition2(ret)
- for i = 0, 22 do
- addEvent(doMoveInArea2, i*400, cid, 33, areas[i+1], NORMALDAMAGE, 0, 0, spell)
- end
- elseif spell == "Ground Crusher" then
- local pos = getThingPosWithDebug(cid)
- local areas = {rock1, rock2, rock3, rock4, rock5}
- local ret = {}
- ret.id = 0
- ret.cd = 12
- ret.eff = 0
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- local function endMove(cid)
- if isCreature(cid) then
- doRemoveCondition(cid, CONDITION_OUTFIT)
- end
- end
- doSetCreatureOutfit(cid, {lookType = 1449}, -1)
- stopNow(cid, 16*360)
- addEvent(endMove, 16*360, cid)
- ----
- for i = 0, 4 do
- addEvent(doMoveInArea2, i*350, cid, 100, areas[i+1], GROUNDDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*360, cid, 100, areas[i+1], GROUNDDAMAGE, 0, 0, spell, ret)
- end
- for i = 4, 8 do
- local a = i-3
- addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
- end
- for i = 8, 12 do
- local a = i-7
- addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
- end
- for i = 12, 16 do
- local a = i-11
- addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
- end
- for i = 16, 20 do
- local a = i-15
- addEvent(doMoveInArea2, i*350, cid, 100, areas[a], GROUNDDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*360, cid, 100, areas[a], GROUNDDAMAGE, 0, 0, spell, ret)
- end
- elseif spell == "Last Resort" then
- local pos = getThingPosWithDebug(cid)
- local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}
- for i = 0, 9 do
- addEvent(doMoveInArea2, i*400, cid, 3, areas[i+1], NORMALDAMAGE, min, max, spell)
- addEvent(doMoveInArea2, i*410, cid, 3, areas[i+1], NORMALDAMAGE, 0, 0, spell)
- end
- elseif spell == "Ice Resort" then
- local pos = getThingPosWithDebug(cid)
- local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}
- for i = 0, 15 do
- addEvent(doMoveInArea2, i*400, cid, 52, areas[i+1], ICEDAMAGE, min, max, spell)
- addEvent(doMoveInArea2, i*410, cid, 43, areas[i+1], iCEDAMAGE, 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 == "Flare Blitz" then
- local p = getThingPos(cid)
- local pos1 = {
- [1] = {{x = p.x, y = p.y+4, z = p.z}, {x = p.x+1, y = p.y+4, z = p.z}, {x = p.x+2, y = p.y+3, z = p.z}, {x = p.x+3, y = p.y+2, z = p.z}, {x = p.x+4, y = p.y+1, z = p.z}, {x = p.x+4, y = p.y, z = p.z}},
- [2] = {{x = p.x, y = p.y+3, z = p.z}, {x = p.x+1, y = p.y+3, z = p.z}, {x = p.x+2, y = p.y+2, z = p.z}, {x = p.x+3, y = p.y+1, z = p.z}, {x = p.x+3, y = p.y, z = p.z}},
- [3] = {{x = p.x, y = p.y+2, z = p.z}, {x = p.x+1, y = p.y+2, z = p.z}, {x = p.x+2, y = p.y+1, z = p.z}, {x = p.x+2, y = p.y, z = p.z}},
- [4] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y, z = p.z}},
- }
- local pos2 = {
- [1] = {{x = p.x, y = p.y-4, z = p.z}, {x = p.x-1, y = p.y-4, z = p.z}, {x = p.x-2, y = p.y-3, z = p.z}, {x = p.x-3, y = p.y-2, z = p.z}, {x = p.x-4, y = p.y-1, z = p.z}, {x = p.x-4, y = p.y, z = p.z}},
- [2] = {{x = p.x, y = p.y-3, z = p.z}, {x = p.x-1, y = p.y-3, z = p.z}, {x = p.x-2, y = p.y-2, z = p.z}, {x = p.x-3, y = p.y-1, z = p.z}, {x = p.x-3, y = p.y, z = p.z}},
- [3] = {{x = p.x, y = p.y-2, z = p.z}, {x = p.x-1, y = p.y-2, z = p.z}, {x = p.x-2, y = p.y-1, z = p.z}, {x = p.x-2, y = p.y, z = p.z}},
- [4] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y, z = p.z}},
- }
- local pos3 = {
- [1] = {{x = p.x+4, y = p.y, z = p.z}, {x = p.x+4, y = p.y-1, z = p.z}, {x = p.x+3, y = p.y-2, z = p.z}, {x = p.x+2, y = p.y-3, z = p.z}, {x = p.x+1, y = p.y-4, z = p.z}, {x = p.x, y = p.y-4, z = p.z}},
- [2] = {{x = p.x+3, y = p.y, z = p.z}, {x = p.x+3, y = p.y-1, z = p.z}, {x = p.x+2, y = p.y-2, z = p.z}, {x = p.x+1, y = p.y-3, z = p.z}, {x = p.x, y = p.y-3, z = p.z}},
- [3] = {{x = p.x+2, y = p.y, z = p.z}, {x = p.x+2, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-2, z = p.z}, {x = p.x, y = p.y-2, z = p.z}},
- [4] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x, y = p.y-1, z = p.z}},
- }
- local pos4 = {
- [1] = {{x = p.x-4, y = p.y, z = p.z}, {x = p.x-4, y = p.y+1, z = p.z}, {x = p.x-3, y = p.y+2, z = p.z}, {x = p.x-2, y = p.y+3, z = p.z}, {x = p.x-1, y = p.y+4, z = p.z}, {x = p.x, y = p.y+4, z = p.z}},
- [2] = {{x = p.x-3, y = p.y, z = p.z}, {x = p.x-3, y = p.y+1, z = p.z}, {x = p.x-2, y = p.y+2, z = p.z}, {x = p.x-1, y = p.y+3, z = p.z}, {x = p.x, y = p.y+3, z = p.z}},
- [3] = {{x = p.x-2, y = p.y, z = p.z}, {x = p.x-2, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+2, z = p.z}, {x = p.x, y = p.y+2, z = p.z}},
- [4] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x, y = p.y+1, z = p.z}},
- }
- local atk = {
- ["Flare Blitz"] = {3, 78, FIREDAMAGE},
- }
- local ret = {}
- ret.id = 0
- ret.cd = 12
- ret.eff = 48
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- local function canMove(cid)
- if not isCreature(cid) then return true end
- doCreatureSetNoMove(cid, false)
- end
- local function sendDist(cid, posi1, posi2, eff, delay)
- if posi1 and posi2 and isCreature(cid) then
- addEvent(sendDistanceShootWithProtect, delay, cid, posi1, posi2, eff)
- 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)
- 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
- elseif spell == "Electro Field" or spell == "Petal Tornado" or spell == "Waterfall" or spell == "Flame Wheel" then --alterado v1.8
- local p = getThingPos(cid)
- local pos1 = {
- [1] = {{x = p.x, y = p.y+4, z = p.z}, {x = p.x+1, y = p.y+4, z = p.z}, {x = p.x+2, y = p.y+3, z = p.z}, {x = p.x+3, y = p.y+2, z = p.z}, {x = p.x+4, y = p.y+1, z = p.z}, {x = p.x+4, y = p.y, z = p.z}},
- [2] = {{x = p.x, y = p.y+3, z = p.z}, {x = p.x+1, y = p.y+3, z = p.z}, {x = p.x+2, y = p.y+2, z = p.z}, {x = p.x+3, y = p.y+1, z = p.z}, {x = p.x+3, y = p.y, z = p.z}},
- [3] = {{x = p.x, y = p.y+2, z = p.z}, {x = p.x+1, y = p.y+2, z = p.z}, {x = p.x+2, y = p.y+1, z = p.z}, {x = p.x+2, y = p.y, z = p.z}},
- [4] = {{x = p.x, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y+1, z = p.z}, {x = p.x+1, y = p.y, z = p.z}},
- }
- local pos2 = {
- [1] = {{x = p.x, y = p.y-4, z = p.z}, {x = p.x-1, y = p.y-4, z = p.z}, {x = p.x-2, y = p.y-3, z = p.z}, {x = p.x-3, y = p.y-2, z = p.z}, {x = p.x-4, y = p.y-1, z = p.z}, {x = p.x-4, y = p.y, z = p.z}},
- [2] = {{x = p.x, y = p.y-3, z = p.z}, {x = p.x-1, y = p.y-3, z = p.z}, {x = p.x-2, y = p.y-2, z = p.z}, {x = p.x-3, y = p.y-1, z = p.z}, {x = p.x-3, y = p.y, z = p.z}},
- [3] = {{x = p.x, y = p.y-2, z = p.z}, {x = p.x-1, y = p.y-2, z = p.z}, {x = p.x-2, y = p.y-1, z = p.z}, {x = p.x-2, y = p.y, z = p.z}},
- [4] = {{x = p.x, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y-1, z = p.z}, {x = p.x-1, y = p.y, z = p.z}},
- }
- local pos3 = {
- [1] = {{x = p.x+4, y = p.y, z = p.z}, {x = p.x+4, y = p.y-1, z = p.z}, {x = p.x+3, y = p.y-2, z = p.z}, {x = p.x+2, y = p.y-3, z = p.z}, {x = p.x+1, y = p.y-4, z = p.z}, {x = p.x, y = p.y-4, z = p.z}},
- [2] = {{x = p.x+3, y = p.y, z = p.z}, {x = p.x+3, y = p.y-1, z = p.z}, {x = p.x+2, y = p.y-2, z = p.z}, {x = p.x+1, y = p.y-3, z = p.z}, {x = p.x, y = p.y-3, z = p.z}},
- [3] = {{x = p.x+2, y = p.y, z = p.z}, {x = p.x+2, y = p.y-1, z = p.z}, {x = p.x+1, y = p.y-2, z = p.z}, {x = p.x, y = p.y-2, z = p.z}},
- [4] = {{x = p.x+1, y = p.y, z = p.z}, {x = p.x+1, y = p.y-1, z = p.z}, {x = p.x, y = p.y-1, z = p.z}},
- }
- local pos4 = {
- [1] = {{x = p.x-4, y = p.y, z = p.z}, {x = p.x-4, y = p.y+1, z = p.z}, {x = p.x-3, y = p.y+2, z = p.z}, {x = p.x-2, y = p.y+3, z = p.z}, {x = p.x-1, y = p.y+4, z = p.z}, {x = p.x, y = p.y+4, z = p.z}},
- [2] = {{x = p.x-3, y = p.y, z = p.z}, {x = p.x-3, y = p.y+1, z = p.z}, {x = p.x-2, y = p.y+2, z = p.z}, {x = p.x-1, y = p.y+3, z = p.z}, {x = p.x, y = p.y+3, z = p.z}},
- [3] = {{x = p.x-2, y = p.y, z = p.z}, {x = p.x-2, y = p.y+1, z = p.z}, {x = p.x-1, y = p.y+2, z = p.z}, {x = p.x, y = p.y+2, z = p.z}},
- [4] = {{x = p.x-1, y = p.y, z = p.z}, {x = p.x-1, y = p.y+1, z = p.z}, {x = p.x, y = p.y+1, z = p.z}},
- }
- local atk = {
- --[atk] = {distance, eff, damage}
- ["Electro Field"] = {41, 207, ELECTRICDAMAGE},
- ["Petal Tornado"] = {14, 54, GRASSDAMAGE},
- ["Flame Wheel"] = {-1, 6, FIREDAMAGE}, --alterado v1.9
- ["Waterfall"] = {-1, 155, WATERDAMAGE},
- }
- local function sendDist(cid, posi1, posi2, eff, delay)
- if posi1 and posi2 and isCreature(cid) then
- addEvent(sendDistanceShootWithProtect, delay, cid, posi1, posi2, eff) --alterado v1.6
- end
- end
- local function sendDano(cid, pos, eff, delay, min, max)
- if pos and isCreature(cid) then
- addEvent(doDanoWithProtect, delay, cid, atk[spell][3], pos, 0, -min, -max, eff) --alterado v1.6
- end
- end
- local function doTornado(cid)
- if isCreature(cid) then
- for j = 1, 4 do
- for i = 1, 6 do --41/207 -- 14/54
- addEvent(sendDist, 350, cid, pos1[j][i], pos1[j][i+1], atk[spell][1], i*330)
- addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*300, min, max)
- addEvent(sendDano, 350, cid, pos1[j][i], atk[spell][2], i*310, 0, 0)
- ---
- addEvent(sendDist, 350, cid, pos2[j][i], pos2[j][i+1], atk[spell][1], i*330)
- addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*300, min, max)
- addEvent(sendDano, 350, cid, pos2[j][i], atk[spell][2], i*310, 0, 0)
- ----
- addEvent(sendDist, 800, cid, pos3[j][i], pos3[j][i+1], atk[spell][1], i*330)
- addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*300, min, max)
- addEvent(sendDano, 800, cid, pos3[j][i], atk[spell][2], i*310, 0, 0)
- ---
- addEvent(sendDist, 800, cid, pos4[j][i], pos4[j][i+1], atk[spell][1], i*330)
- addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*300, min, max)
- addEvent(sendDano, 800, cid, pos4[j][i], atk[spell][2], i*310, 0, 0)
- end
- end
- end
- end
- if spell == "Electro Field" then
- addEvent(doMoveInArea2, 1000, cid, 0, electro, ELECTRICDAMAGE, 0, 0, spell, ret)
- end
- if spell == "Waterfall" then
- addEvent(doMoveInArea2, 1000, cid, 0, electro, WATERDAMAGE, 0, 0, spell, ret)
- end
- if spell == "Flame Wheel" then --alterado v1.8
- doTornado(cid)
- else
- for b = 0, 2 do
- addEvent(doTornado, b*1500, cid)
- end
- end
- elseif spell == "Seed Bomb" then --alterado v1.6
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- local function doFall(cid)
- for rocks = 1, 42 do --62
- addEvent(fall, rocks*35, cid, master, SEED_BOMBDAMAGE, 1, 54)
- end
- end
- for up = 1, 10 do
- addEvent(upEffect, up*75, cid, 1)
- end
- addEvent(doFall, 450, cid)
- addEvent(doMoveInArea2, 1400, cid, 2, BigArea2, SEED_BOMBDAMAGE, min, max, spell)
- elseif spell == "Reverse Earthshock" then
- local p = getThingPosWithDebug(cid)
- p.x = p.x+1
- p.y = p.y+1
- sendEffWithProtect(cid, p, 151) --send eff
- local function doDano(cid)
- local pos = getThingPosWithDebug(cid)
- local function doSendBubble(cid, pos)
- if not isCreature(cid) then return true end
- doSendDistanceShoot(getThingPosWithDebug(cid), pos, 39)
- doSendMagicEffect(pos, 239)
- end
- --alterado!!
- for a = 1, 20 do
- local r1 = math.random(-4, 4)
- local r2 = r1 == 0 and choose(-3, -2, -1, 2, 3) or math.random(-3, 3)
- --
- local lugar = {x = pos.x + r1, y = pos.y + r2, z = pos.z}
- addEvent(doSendBubble, a * 25, cid, lugar)
- end
- addEvent(doDanoWithProtect, 150, cid, ROCKDAMAGE, pos, waterarea, -min, -max, 0)
- end
- addEvent(doDano, 1250, cid)
- elseif spell == "Fury Swipes" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 23)
- doDanoInTargetWithDelay(cid, target, NORMALDAMAGE, min, max, 152)
- elseif spell == "Poison Jab" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 15)
- doDanoInTargetWithDelay(cid, target, POISONDAMAGE, min, max, 153)
- elseif spell == "Cross Poison" then
- doMoveInArea2(cid, 153, cross, POISONDAMAGE, -min, -max, spell)
- elseif spell == "Hydro Dance" then
- local eff = {155, 154, 53, 155, 53}
- local area = {psy1, psy2, psy3, psy4, psy5}
- setPlayerStorageValue(cid, 3644587, 1)
- addEvent(setPlayerStorageValue, 4*400, cid, 3644587, -1)
- for i = 0, 4 do
- addEvent(doMoveInArea2, i*400, cid, eff[i+1], area[i+1], WATERDAMAGE, min, max, spell)
- end
- elseif spell == "Gyro Ball" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 0
- ret.spell = spell
- ret.cond = "Stun"
- stopNow(cid, 2000)
- doMoveInArea2(cid, 156, reto5, STEELDAMAGE, min, max, spell, ret)
- elseif spell == "Rock Tomb" then
- local ret = {}
- ret.id = target
- ret.cd = 9
- ret.eff = 0
- ret.check = getPlayerStorageValue(target, conds["Slow"])
- ret.first = true
- ret.cond = "Slow"
- local function doRockFall(cid, frompos, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local ry = math.abs(frompos.y - pos.y)
- doSendDistanceShoot(frompos, pos, 39)
- addEvent(doMoveDano2, ry * 11, cid, target, ROCKDAMAGE, min, max, ret, spell)
- addEvent(sendEffWithProtect, ry*11, cid, pos, 157)
- end
- local function doRockUp(cid, target)
- if not isCreature(target) or not isCreature(cid) then return true end
- local pos = getThingPosWithDebug(target)
- local mps = getThingPosWithDebug(cid)
- local xrg = math.floor((pos.x - mps.x) / 2)
- local topos = mps
- topos.x = topos.x + xrg
- local rd = 7
- topos.y = topos.y - rd
- doSendDistanceShoot(getThingPosWithDebug(cid), topos, 39)
- addEvent(doRockFall, rd * 49, cid, topos, target)
- end
- addEvent(doRockUp, 155, cid, target)
- elseif spell == "Sand Tomb" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 34
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- doMoveInAreaMulti(cid, 22, 158, bullet, bulletDano, GROUNDDAMAGE, min, max, ret)
- elseif spell == "Magnet Bomb" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 48
- ret.check = 0
- ret.spell = spell
- ret.cond = "Miss"
- doMoveInAreaMulti(cid, 22, 171, bullet, bulletDano, ELECTRICDAMAGE, min, max, ret)
- elseif spell == "Rain Dance" then
- local master = isSummon(cid) and getCreatureMaster(cid) or cid
- ------------
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.check = 0
- ret.eff = 1
- ret.cond = "Silence"
- ---
- local function doFall(cid)
- for rocks = 1, 42 do --62
- addEvent(fall, rocks*35, cid, master, WATERDAMAGE, 52, 1)
- end
- end
- ---
- local function doRain(cid)
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end --cura status
- doCureStatus(cid, "all")
- ---
- setPlayerStorageValue(cid, 253, 1) --focus
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- ---
- doMoveInArea2(cid, 0, confusion, WATERDAMAGE, 0, 0, spell, ret)
- end
- ---
- addEvent(doFall, 200, cid)
- addEvent(doRain, 1000, cid)
- elseif spell == "Night Slash" then
- local p = getThingPosWithDebug(cid)
- local t = {
- {251, {x = p.x+1, y = p.y-1, z = p.z}},
- {253, {x = p.x+2, y = p.y+1, z = p.z}},
- {252, {x = p.x+1, y = p.y+2, z = p.z}},
- {254, {x = p.x-1, y = p.y+1, z = p.z}},
- }
- doAreaCombatHealth(cid, DARKDAMAGE, p, scyther5, -min, -max, 165)
- for a = 0, 1 do
- for i = 1, 4 do
- addEvent(doSendMagicEffect, a*400, t[i][2], t[i][1]) --alterado v1.8
- end
- end
- addEvent(doAreaCombatHealth, 400, cid, DARKDAMAGE, p, scyther5, -min, -max, 165)
- elseif spell == "Heavy Slam" then
- local p = getThingPosWithDebug(cid)
- local t = {
- {251, {x = p.x+1, y = p.y-1, z = p.z}},
- {253, {x = p.x+2, y = p.y+1, z = p.z}},
- {252, {x = p.x+1, y = p.y+2, z = p.z}},
- {254, {x = p.x-1, y = p.y+1, z = p.z}},
- }
- doAreaCombatHealth(cid, STEELDAMAGE, p, confusion, -min, -max, 77)
- for a = 0, 1 do
- for i = 1, 4 do
- addEvent(doSendMagicEffect, a*400, t[i][2], t[i][1]) --alterado v1.8
- end
- end
- addEvent(doAreaCombatHealth, 400, cid, STEELDAMAGE, p, confusion, -min, -max, 165)
- elseif spell == "Wild Charge" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 48
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- local pos = getThingPosWithDebug(cid)
- local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}
- for i = 0, 14 do
- addEvent(doMoveInArea2, i*320, cid, 48, areas[i+1], ELECTRICDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*330, cid, 48, areas[i+1], ELECTRICDAMAGE, 0, 0, spell)
- end
- elseif spell == "Focus Blast" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 136
- ret.check = 0
- ret.spell = spell
- ret.cond = "Confusion"
- local pos = getThingPosWithDebug(cid)
- local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}
- for i = 0, 14 do
- addEvent(doMoveInArea2, i*320, cid, 112, areas[i+1], FIGHTINGDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*330, cid, 112, areas[i+1], FIGHTINGDAMAGE, 0, 0, spell)
- end
- elseif spell == "PsyPower" then
- local ret = {}
- ret.id = 0
- ret.cd = 9
- ret.eff = 136
- ret.check = 0
- ret.spell = spell
- ret.cond = "Confusion"
- local pos = getThingPosWithDebug(cid)
- local areas = {rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1, rock5, rock4, rock3, rock2, rock1}
- for i = 0, 14 do
- addEvent(doMoveInArea2, i*320, cid, 112, areas[i+1], PSYCHICDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, i*330, cid, 112, areas[i+1], PSYCHICDAMAGE, 0, 0, spell)
- end
- elseif spell == "Jump Kick" then --ver essa
- doMoveInAreaMulti(cid, 42, 113, bullet, bulletDano, FIGHTINGDAMAGE, min, max)
- elseif spell == "Lava Plume" then --alterado v1.8 \/\/\/
- doMoveInArea2(cid, 5, cross, FIREDAMAGE, -min, -max, spell)
- doMoveInArea2(cid, 87, cross, FIREDAMAGE, 0, 0, spell)
- elseif spell == "Silver Wind" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoWithProtectWithDelay(cid, target, BUGDAMAGE, min, max, 78, SilverWing)
- elseif spell == "Bug Buzz" then
- local ret = {}
- ret.id = target
- ret.cd = 9
- ret.eff = 34
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 86, db1, BUGDAMAGE, min, max, spell, ret)
- addEvent(doMoveInArea2, 250, cid, 86, db1, BUGDAMAGE, 0, 0, spell)
- elseif spell == "Whirlpool" then
- local function setSto(cid)
- if isCreature(cid) then
- setPlayerStorageValue(cid, 3644587, -1)
- end
- end
- local function doDano(cid)
- if isSleeping(cid) then return true end
- doDanoWithProtect(cid, WATERDAMAGE, getThingPosWithDebug(cid), splash, min, max, 89)
- end
- setPlayerStorageValue(cid, 3644587, 1)
- for r = 0, 10 do
- addEvent(doDano, 600 * r, cid)
- end
- addEvent(setSto, 600*10, cid)
- elseif spell == "Iron Head" then
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doDanoInTargetWithDelay(cid, target, STEELDAMAGE, -min, -max, 77)
- elseif spell == "Brick Break" or 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] = {90, {x=p.x+1, y=p.y-1, z=p.z}},
- [1] = {90, {x=p.x+2, y=p.y+1, z=p.z}},
- [2] = {90, {x=p.x+1, y=p.y+2, z=p.z}},
- [3] = {90, {x=p.x-1, y=p.y+1, z=p.z}},
- }
- doMoveInArea2(cid, 0, BrickBeak, FIGHTINGDAMAGE, min, max, spell, ret)
- doSendMagicEffect(t[a][2], t[a][1])
- elseif spell == "Volcano Burst" then
- local pos = getThingPosWithDebug(cid)
- doMoveInArea2(cid, 91, inferno1, FIREDAMAGE, 0, 0, spell)
- addEvent(doDanoWithProtect, math.random(100, 400), cid, FIREDAMAGE, pos, inferno2, -min, -max, 0)
- elseif spell == "Bone Rush" then
- local area = {gale1, gale2, gale3, gale4, gale3, gale2, gale1}
- for i = 0, 6 do
- addEvent(doMoveInArea2, i*400, cid, 227, area[i+1], ROCKDAMAGE, min, max, spell)
- end
- elseif spell == "Giant Water Gun" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- eff = 64
- if a == 0 then
- doSendMagicEffect({x=p.x-1, y=p.y-1, z=p.z}, 69)
- doSendMagicEffect({x=p.x, y=p.y-1, z=p.z}, 69)
- doSendMagicEffect({x=p.x+1, y=p.y-1, z=p.z}, 69)
- eff = 64
- elseif a == 1 then
- eff = 65
- doSendMagicEffect({x=p.x+6, y=p.y, z=p.z}, 70)
- doSendMagicEffect({x=p.x+6, y=p.y+1, z=p.z}, 70)
- doSendMagicEffect({x=p.x+6, y=p.y-1, z=p.z}, 70)
- elseif a == 2 then
- eff = 66
- doSendMagicEffect({x=p.x, y=p.y+6, z=p.z}, 71)
- doSendMagicEffect({x=p.x+1, y=p.y+6, z=p.z}, 71)
- doSendMagicEffect({x=p.x-1, y=p.y+6, z=p.z}, 71)
- elseif a == 3 then
- eff = 67
- doSendMagicEffect({x=p.x-1, y=p.y, z=p.z}, 70)
- doSendMagicEffect({x=p.x-1, y=p.y+1, z=p.z}, 70)
- doSendMagicEffect({x=p.x-1, y=p.y-1, z=p.z}, 70)
- end
- doMoveInArea2(cid, eff, triplo6, WATERDAMAGE, min, max, spell)
- elseif spell == "Dual Water Gun" then
- local a = isCreature(target) and getCreatureDirectionToTarget(cid, target) or getCreatureLookDir(cid)
- local p = getThingPosWithDebug(cid)
- if a == 0 then
- doSendMagicEffect({x=p.x-1, y=p.y-1, z=p.z}, 69)
- doSendMagicEffect({x=p.x+1, y=p.y-1, z=p.z}, 69)
- elseif a == 1 then
- doSendMagicEffect({x=p.x+6, y=p.y+1, z=p.z}, 70)
- doSendMagicEffect({x=p.x+6, y=p.y-1, z=p.z}, 70)
- elseif a == 2 then
- doSendMagicEffect({x=p.x+1, y=p.y+6, z=p.z}, 71)
- doSendMagicEffect({x=p.x-1, y=p.y+6, z=p.z}, 71)
- elseif a == 3 then
- doSendMagicEffect({x=p.x-1, y=p.y+1, z=p.z}, 70)
- doSendMagicEffect({x=p.x-1, y=p.y-1, z=p.z}, 70)
- end
- doMoveInArea2(cid, 0, duplo6, WATERDAMAGE, min, max, spell)
- --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 == "Dragon Tail" then
- local function rebackSpd(cid, sss)
- if not isCreature(cid) then return true end
- doChangeSpeed(cid, sss)
- setPlayerStorageValue(cid, 446, -1)
- end
- local x = getCreatureSpeed(cid)
- doFaceOpposite(cid)
- doChangeSpeed(cid, -x)
- addEvent(rebackSpd, 400, cid, x)
- setPlayerStorageValue(cid, 446, 1)
- doAreaCombatHealth(cid, DRAGONDAMAGE, getThingPosWithDebug(target), 0, -min, -max, 136)
- elseif spell == "Discharge" 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 = 7
- ret.check = 0
- ret.eff = 0
- ret.spell = spell
- ret.cond = "Stun"
- doSendMagicEffect(getThingPosWithDebug(cid), 92) --92
- for i = 1, 4 do
- doSendMagicEffect(po[i], 86) --86
- doAreaCombatHealth(cid, ELECTRICDAMAGE, po2[i], crusher, -min, -max, 255)
- end
- doMoveInArea2(cid, 40, crusherstomp, ELECTRICDAMAGE, min, max, spell, ret) --40
- --/////////////////////// PASSIVAS /////////////////////////--
- elseif spell == "Counter Helix" then
- -- [nome] = {out = outfit girando, efeitos}
- local OutFit = {
- ["Scyther"] = {out = 496, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --scyther
- ["Scizor"] = {out = 918, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Scizor
- ["Shiny Scyther"] = {out = 849, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Scyther
- ["Hitmontop"] = {out = 1193, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Hitmontop
- ["Shiny Hitmontop"] = {out = 1451, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Hitmontop
- ["Pineco"] = {out = 1194, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --pineco
- ["Forretress"] = {out = 1192, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Forretress
- ["Wobbuffet"] = {out = 924, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --wobb
- ["Alakazam"] = {out = 569, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --alaka
- ["Kadabra"] = {out = 570, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --kadabra
- ["Shiny Abra"] = {out = 1257, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --s abra
- ["Kangaskhan"] = {out = 549, cima = 251, direita = 253, esquerda = 254, baixo = 252}, --test
- }
- if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas...
- return true
- end
- local nome1 = getSubName(cid, target) --alterado v1.6.1
- local outfitt = OutFit[nome1] --alterado v1.6.1
- local function damage(cid, min, max)
- if isCreature(cid) then
- if isInArray({"Scyther", "Shiny Scyther", "Pineco"}, nome1) then --alterado v1.6
- damage = BUGDAMAGE
- elseif isInArray({"Hitmontop", "Shiny Hitmontop", "Kangaskhan"}, nome1) then
- damage = FIGHTINGDAMAGE --alterado v1.6.1
- else
- damage = STEELDAMAGE
- end
- doAreaCombatHealth(cid, damage, getThingPosWithDebug(cid), scyther5, -min, -max, CONST_ME_NONE) --alterado v1.6.1
- ---
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe1, 0, 0, outfitt.cima) --cima
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe2, 0, 0, outfitt.baixo) --baixo
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe3, 0, 0, outfitt.direita) --direita
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe4, 0, 0, outfitt.esquerda) --esquerda
- end
- end
- local function sendEff(cid)
- if isCreature(cid) then
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe1, 0, 0, outfitt.cima) --cima
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe2, 0, 0, outfitt.baixo) --baixo
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe3, 0, 0, outfitt.direita) --direita --alterado v1.6
- doAreaCombatHealth(cid, null, getThingPos(cid), scythe4, 0, 0, outfitt.esquerda) --esquerda
- end
- end
- local function doChangeO(cid)
- if not isCreature(cid) then return true end
- setPlayerStorageValue(cid, 32623, 0)
- if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
- doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
- else
- doRemoveCondition(cid, CONDITION_OUTFIT)
- end
- end
- local delay = 200 -- não mexe
- local master = isSummon(cid) and getCreatureMaster(cid) or cid --alterado v1.6
- local summons = getCreatureSummons(master)
- if (isPlayer(master) and #summons >= 2) or (ehMonstro(master) and #summons >= 1) then
- for j = 1, #summons do
- setPlayerStorageValue(summons[j], 32623, 1)
- doSetCreatureOutfit(summons[j], {lookType = outfit.out}, -1)
- for i = 1, 2 do --alterado v1.6
- addEvent(sendEff, delay*i, summons[j])
- end
- addEvent(doChangeO, 2 * 300 + 10, summons[j])
- end
- for i = 1, 2 do
- addEvent(damage, delay*i, (isPlayer(master) and summons[1] or master), min, max)
- end
- else
- setPlayerStorageValue(cid, 32623, 1)
- setPlayerStorageValue(cid, 98654, 1)
- for i = 1, 2 do --alterado v1.6
- addEvent(damage, delay*i, cid, min, max)
- end
- addEvent(doChangeO, 2 * 300 + 10, cid)
- end
- elseif spell == "Lava-Counter" then
- local function sendStickEff(cid, dir)
- if not isCreature(cid) then return true end
- doAreaCombatHealth(cid, FIREDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 5)
- end
- local function doStick(cid)
- if not isCreature(cid) then return true end
- local t = {
- [1] = SOUTHWEST,
- [2] = SOUTH,
- [3] = SOUTHEAST,
- [4] = EAST,
- [5] = NORTHEAST,
- [6] = NORTH,
- [7] = NORTHWEST,
- [8] = WEST,
- [9] = SOUTHWEST,
- }
- for a = 1, 9 do
- addEvent(sendStickEff, a * 140, cid, t[a])
- end
- end
- doStick(cid, false, cid)
- setPlayerStorageValue(cid, 98654, 1)
- elseif spell == "Mega Drain" then
- local uid = checkAreaUid(getThingPos(cid), check, 1, 1)
- for _,pid in pairs(uid) do
- if isCreature(cid) and isCreature(pid) and pid ~= cid then
- if isPlayer(pid) and #getCreatureSummons(pid) >= 1 then return false end
- local life = getCreatureHealth(pid)
- doAreaCombatHealth(cid, GRASSDAMAGE, getThingPos(pid), 0, -min, -max, 14)
- local newlife = life - getCreatureHealth(pid)
- doSendMagicEffect(getThingPos(cid), 14)
- setPlayerStorageValue(cid, 98654, 1)
- if newlife >= 1 then
- doCreatureAddHealth(cid, newlife)
- doSendAnimatedText(getThingPos(cid), "+"..newlife.."", 32)
- end
- end
- end
- elseif spell == "Spores Reaction" then
- local random = math.random(1, 3)
- if random == 1 then
- local ret = {}
- ret.id = 0
- ret.cd = math.random(2, 3)
- ret.check = 0 --alterado v1.6
- ret.first = true
- ret.cond = "Sleep"
- doMoveInArea2(cid, 27, confusion, GRASSDAMAGE, 0, 0, "Spores Reaction", ret)
- setPlayerStorageValue(cid, 98654, 1)
- elseif random == 2 then
- local ret = {}
- ret.id = 0
- ret.cd = 6
- ret.eff = 0
- ret.check = 0
- ret.spell = spell
- ret.cond = "Stun"
- doMoveInArea2(cid, 85, confusion, GRASSDAMAGE, 0, 0, "Spores Reaction", ret)
- setPlayerStorageValue(cid, 98654, 1)
- else
- local ret = {}
- ret.id = 0
- ret.cd = math.random(6, 10)
- ret.check = 0
- local lvl = isSummon(cid) and getMasterLevel(cid) or getPokemonLevel(cid) --alterado v1.6
- ret.damage = math.floor((getPokemonLevel(cid)+lvl * 3)/2)
- ret.cond = "Poison"
- doMoveInArea2(cid, 84, confusion, POISONDAMAGE, 0, 0, "Spores Reaction", ret)
- setPlayerStorageValue(cid, 98654, 1)
- end
- elseif spell == "Stunning Confusion" then
- if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
- return true
- end
- local function damage(cid)
- if isCreature(cid) then
- doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPosWithDebug(cid), bombWee3, -min, -max, 133)
- end
- end
- setPlayerStorageValue(cid, 32623, 1) --proteçao
- for i = 1, 7 do
- addEvent(damage, i*500, cid)
- end
- addEvent(setPlayerStorageValue, 3500, cid, 32623, 0) --proteçao
- setPlayerStorageValue(cid, 98654, 1)
- elseif spell == "Bone-Spin" then
- local function sendStickEff(cid, dir)
- if not isCreature(cid) then return true end
- doAreaCombatHealth(cid, GROUNDDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 227)
- end
- local function doStick(cid)
- if not isCreature(cid) then return true end
- local t = {
- [1] = SOUTHWEST,
- [2] = SOUTH,
- [3] = SOUTHEAST,
- [4] = EAST,
- [5] = NORTHEAST,
- [6] = NORTH,
- [7] = NORTHWEST,
- [8] = WEST,
- [9] = SOUTHWEST,
- }
- for a = 1, 9 do
- addEvent(sendStickEff, a * 140, cid, t[a])
- end
- end
- doStick(cid, false, cid)
- setPlayerStorageValue(cid, 98654, 1)
- --alterado v1.4
- elseif spell == "Amnesia" then
- if getPlayerStorageValue(cid, 253) >= 1 then return true end
- doCreatureSay(cid, "????", 20)
- doSendMagicEffect(getThingPosWithDebug(cid), 132)
- setPlayerStorageValue(cid, 253, 1)
- setPlayerStorageValue(cid, 98654, 1)
- elseif spell == "Dragon Fury" then
- if getPlayerStorageValue(cid, 32623) == 1 then
- return true
- end
- setPlayerStorageValue(cid, 32623, 1)
- setPlayerStorageValue(cid, 98654, 1)
- if isInArray({"Persian", "Raticate", "Shiny Raticate"}, getSubName(cid, target)) then --alterado v1.6.1
- doRaiseStatus(cid, 1.5, 0, 0, 10)
- else --alterado v1.5
- doRaiseStatus(cid, 1.5, 1.5, 0, 10) --ver isso
- end
- for t = 1, 7 do --alterado v1.5
- addEvent(sendMoveEffect, t*1500, cid, 12)
- end
- addEvent(setPlayerStorageValue, 10500, cid, 32623, 0) --alterado v1.8
- elseif spell == "Electric Charge" then
- if getPlayerStorageValue(cid, 253) >= 1 then
- return true
- end
- setPlayerStorageValue(cid, 253, 1)
- setPlayerStorageValue(cid, 98654, 1)
- doSendMagicEffect(getThingPosWithDebug(cid), 207)
- doSendAnimatedText(getThingPosWithDebug(cid), "FOCUS", 144)
- elseif spell == "Shock-Counter" then
- local function sendStickEff(cid, dir)
- if not isCreature(cid) then return true end
- doAreaCombatHealth(cid, ELECTRICDAMAGE, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, 207)
- end
- local function doStick(cid)
- if not isCreature(cid) then return true end
- local t = {
- [1] = SOUTHWEST,
- [2] = SOUTH,
- [3] = SOUTHEAST,
- [4] = EAST,
- [5] = NORTHEAST,
- [6] = NORTH,
- [7] = NORTHWEST,
- [8] = WEST,
- [9] = SOUTHWEST,
- }
- for a = 1, 9 do
- addEvent(sendStickEff, a * 140, cid, t[a])
- end
- end
- doStick(cid, false, cid)
- setPlayerStorageValue(cid, 98654, 1)
- elseif spell == "Mirror Coat" then
- if spell == "Magic Coat" then
- eff = 11
- else
- eff = 135
- end
- doSendMagicEffect(getThingPosWithDebug(cid), eff)
- setPlayerStorageValue(cid, 21099, 1)
- setPlayerStorageValue(cid, 98654, 1)
- elseif spell == "Zen Mind" then
- function doCure(cid)
- if not isCreature(cid) then return true end
- if isSummon(cid) then
- doCureBallStatus(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "all")
- end
- doCureStatus(cid, "all")
- end
- addEvent(doCure, 1000, cid)
- doSetCreatureOutfit(cid, {lookType = 1001}, 2000)
- setPlayerStorageValue(cid, 98654, 1)
- elseif spell == "Demon Kicker" then
- --[outfit] = outfit chutando,
- local hitmonlees = {
- ["Hitmonlee"] = 652, --hitmonlee
- ["Shiny Hitmonlee"] = 878, --shiny hitmonlee
- }
- local nome = getCreatureName(cid)
- --alterado v1.6 --alterado v1.7
- if (not hitmonlees[nome] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Demon Kicker"][nome]) then
- if getDistanceBetween(getThingPos(cid), getThingPos(target)) > 1 then
- return true
- end
- if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas...
- return true
- end
- if not isSummon(cid) then --alterado v1.7
- doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
- end
- local function doChangeHitmon(cid)
- if not isCreature(cid) then return true end
- setPlayerStorageValue(cid, 32623, 0) --proteçao
- if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
- doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
- else
- doRemoveCondition(cid, CONDITION_OUTFIT)
- end
- end
- setPlayerStorageValue(cid, 32623, 1) --proteçao
- setPlayerStorageValue(cid, 98654, 1)
- local look = hitmonlees[nome] or getPlayerStorageValue(cid, 21104) --alterado v1.6
- doCreatureSetLookDir(cid, getCreatureDirectionToTarget(cid, target))
- doSetCreatureOutfit(cid, {lookType = look}, -1) --alterado v1.6
- doTargetCombatHealth(cid, target, FIGHTINGDAMAGE, -min, -max, 255)
- addEvent(doChangeHitmon, 700, cid)
- end
- elseif spell == "Blaze Kicker" then
- --[outfit] = outfit chutando,
- local blazikens = {
- ["Blaziken"] = 1628, --Blaziken
- ["Shiny Blaziken"] = 1629, --shiny Blaziken
- }
- local nome = getCreatureName(cid)
- --alterado v1.6 --alterado v1.7
- if (not blazikens[nome] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Blaze Kicker"][nome]) then
- if getDistanceBetween(getThingPos(cid), getThingPos(target)) > 1 then
- return true
- end
- if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a passiva 2x seguidas...
- return true
- end
- if not isSummon(cid) then --alterado v1.7
- doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
- end
- local function doChangeHitmon(cid)
- if not isCreature(cid) then return true end
- setPlayerStorageValue(cid, 32623, 0) --proteçao
- if isSleeping(cid) and getMonsterInfo(getCreatureName(cid)).lookCorpse ~= 0 then
- doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
- else
- doRemoveCondition(cid, CONDITION_OUTFIT)
- end
- end
- setPlayerStorageValue(cid, 32623, 1) --proteçao
- setPlayerStorageValue(cid, 98654, 1)
- local look = blazikens[nome] or getPlayerStorageValue(cid, 21104) --alterado v1.6
- doCreatureSetLookDir(cid, getCreatureDirectionToTarget(cid, target))
- doSetCreatureOutfit(cid, {lookType = look}, -1) --alterado v1.6
- doTargetCombatHealth(cid, target, FIREDAMAGE, -min, -max, 255)
- addEvent(doChangeHitmon, 700, cid)
- end
- elseif spell == "Illusion" then
- local team = {
- ["Misdreavus"] = "MisdreavusTeam",
- ["Shiny Stantler"] = "Shiny StantlerTeam",
- ["Stantler"] = "StantlerTeam",
- }
- local function RemoveTeam(cid)
- if isCreature(cid) then
- doSendMagicEffect(getThingPosWithDebug(cid), 211)
- doRemoveCreature(cid)
- end
- end
- local function sendEff(cid, master, t)
- if isCreature(cid) and isCreature(master) and t > 0 and #getCreatureSummons(master) >= 2 then
- doSendMagicEffect(getThingPosWithDebug(cid), 86, master)
- addEvent(sendEff, 1000, cid, master, t-1) --alterado v1.9
- end
- end
- if getPlayerStorageValue(cid, 637500) >= 1 then
- return true
- end
- local master = getCreatureMaster(cid)
- local item = getPlayerSlotItem(master, 8)
- local life, maxLife = getCreatureHealth(cid), getCreatureMaxHealth(cid)
- local name = getItemAttribute(item.uid, "poke")
- local pos = getThingPosWithDebug(cid)
- local time = 5
- doItemSetAttribute(item.uid, "hp", (life/maxLife))
- local num = getSubName(cid, target) == "Misdreavus" and 3 or 2
- local pk = {}
- doTeleportThing(cid, {x=4, y=3, z=10}, true)
- if team[name] then
- pk[1] = cid
- for b = 2, num do
- pk[b] = doSummonCreature(team[name], pos)
- doConvinceCreature(master, pk[b])
- end
- for a = 1, num do
- addEvent(doTeleportThing, math.random(0, 5), pk[a], getClosestFreeTile(pk[a], pos), true)
- addEvent(doAdjustWithDelay, 5, master, pk[a], true, true, true)
- doSendMagicEffect(getThingPosWithDebug(pk[a]), 211)
- end
- sendEff(cid, master, time) --alterado v1.9
- setPlayerStorageValue(master, 637501, 1)
- addEvent(setPlayerStorageValue, time * 1000, master, 637501, -2)
- -----
- setPlayerStorageValue(pk[2], 637500, 1)
- addEvent(RemoveTeam, time * 1000, pk[2])
- -----
- setPlayerStorageValue(pk[3], 637500, 1)
- addEvent(RemoveTeam, time * 1000, pk[3])
- ----
- if getSubName(cid, target) == "Scizor" then
- setPlayerStorageValue(pk[4], 637500, 1)
- addEvent(RemoveTeam, time * 1000, pk[4])
- end
- end
- elseif spell == "Demon Puncher" then
- local name = getCreatureName(cid)
- --alterado v1.7
- if (not hitmonchans[name] and isCreature(target)) or (isCreature(target) and math.random(1, 100) <= passivesChances["Demon Puncher"][name]) then
- if getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) > 1 then
- return true
- end
- if not isSummon(cid) then --alterado v1.7
- doCreatureSay(cid, string.upper(spell).."!", TALKTYPE_MONSTER)
- end
- if ehMonstro(cid) or not hitmonchans[name] then
- hands = 0
- else
- hands = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "hands")
- end
- if not hitmonchans[name] then
- tabela = hitmonchans[getCreatureName(target)][hands]
- else
- tabela = hitmonchans[name][hands]
- end
- doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(target), 39)
- doTargetCombatHealth(cid, target, tabela.type, -min, -max, 255)
- local alvo = getThingPosWithDebug(target)
- alvo.x = alvo.x + 1 ---alterado v1.7
- if hands == 4 then
- doSendMagicEffect(alvo, tabela.eff)
- else
- doSendMagicEffect(getThingPosWithDebug(target), tabela.eff)
- end
- if hands == 3 then
- local ret = {}
- ret.id = target
- ret.cd = 9 --alterado v1.6
- ret.eff = 43
- ret.check = getPlayerStorageValue(target, conds["Slow"])
- ret.first = true
- ret.cond = "Slow"
- doMoveDano2(cid, target, FIGHTINGDAMAGE, 0, 0, ret, spell)
- setPlayerStorageValue(cid, 98654, 1)
- end
- end
- -- X elemental --
- elseif spell == "Elemental" then
- local types = {
- ["dark"] = {efct = 87, dmg = DARKDAMAGE},
- ["ghost"] = {efct = 138, dmg = GHOSTDAMAGE},
- ["poison"] = {efct = 114, dmg = POISONDAMAGE},
- ["grass"] = {efct = 45, dmg = GRASSDAMAGE},
- ["bug"] = {efct = 105, dmg = BUGDAMAGE},
- ["rock"] = {efct = 44, dmg = ROCKDAMAGE},
- ["ground"] = {efct = 100, dmg = GROUNDDAMAGE},
- ["steel"] = {efct = 77, dmg = STEELDAMAGE},
- ["ice"] = {efct = 43, dmg = ICEDAMAGE},
- ["water"] = {efct = 154, dmg = WATERDAMAGE},
- ["electric"] = {efct = 48, dmg = ELECTRICDAMAGE},
- ["fire"] = {efct = 35, dmg = FIREDAMAGE},
- ["psychic"] = {efct = 133, dmg = PSYCHICDAMAGE},
- ["flying"] = {efct = 41, dmg = FLYINGDAMAGE},
- ["dragon"] = {efct = 143, dmg = DRAGONDAMAGE},
- ["normal"] = {efct = 111, dmg = NORMALDAMAGE},
- ["fighting"] = {efct = 112, dmg = FIGHTINGDAMAGE},
- }
- local ptype = pokes[getCreatureName(cid)].type
- local ptype2 = pokes[getCreatureName(cid)].type2
- local eff = {}
- local damag = {}
- if ptype2 ~= "no type" then
- local math = math.random(1,100)
- if math <= 50 then
- eff = types[ptype].efct
- damag = types[ptype].dmg
- else
- eff = types[ptype2].efct
- damag = types[ptype2].dmg
- end
- else
- eff = types[ptype].efct
- damag = types[ptype].dmg
- end
- local function sendStickEff(cid, dir)
- if not isCreature(cid) then return true end
- doAreaCombatHealth(cid, damag, getPosByDir(getThingPosWithDebug(cid), dir), 0, -5000, -5000, eff)
- 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)
- -- X elemental --
- end
- return true
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement