Ir para conteúdo

[Encerrado] Pokemon Dormido E segue Atacando


Near Stylez

Posts Recomendados

Olá, espero que esten bem. Queria saber se há um scrip ou uma solução para meu problema que é o seguinte:

 

Ao Stunear um pokemon ou dormir, o pokemon dormido ou stuneado segue lançando seus spells estes não causam dano algum mas se gasta o CD, o que quero ver se me podem ajudar é que quando o pokemon este dormido ou stuneado não possa lançar ningun tipo de spells assim não se perderia o cd e não tendria que esperar que carregue de novo.

 

Uma imagem para que possam entender melhor.

 

http://postimg.org/image/qjcmj3wad/



Pode-se apreciar que o skill se lanço mais não salio nem causo dano algum porque o pokemon estava stuneado.

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

Qual e seu talkactions/scripts/move1.lua ?

 

Move1.lua

local msgs = {"use ", ""}

 

function doAlertReady(cid, id, movename, n, cd)

if not isCreature(cid) then return true end

local myball = getPlayerSlotItem(cid, 8)

if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")

return true

end

local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)

if not p or #p <= 0 then return true end

for a = 1, #p do

if getItemAttribute(p[a], cd) == "cd:"..id.."" then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")

return true

end

end

end

 

function onSay(cid, words, param, channel)

 

 

if param ~= "" then return true end

if string.len(words) > 3 then return true end

 

if #getCreatureSummons(cid) == 0 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")

return 0

end

--alterado v1.5

local mypoke = getCreatureSummons(cid)[1]

 

if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end

if getCreatureName(mypoke) == "Evolution" then return true end

 

if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then

name = getPlayerStorageValue(mypoke, 1010) --edited

else

name = getCreatureName(mypoke)

end

 

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

 

local it = string.sub(words, 2, 3)

local move = movestable[name].move1

if getPlayerStorageValue(mypoke, 212123) >= 1 then

cdzin = "cm_move"..it..""

else

cdzin = "move"..it.."" --alterado v1.5

end

 

if it == "2" then

move = movestable[name].move2

elseif it == "3" then

move = movestable[name].move3

elseif it == "4" then

move = movestable[name].move4

elseif it == "5" then

move = movestable[name].move5

elseif it == "6" then

move = movestable[name].move6

elseif it == "7" then

move = movestable[name].move7

elseif it == "8" then

move = movestable[name].move8

elseif it == "9" then

move = movestable[name].move9

elseif it == "10" then

move = movestable[name].move10

elseif it == "11" then

move = movestable[name].move11

elseif it == "12" then

move = movestable[name].move12

elseif it == "13" then

move = movestable[name].move13

end

 

if not move then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")

return true

end

 

if getPlayerLevel(cid) < move.level then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")

return true

end

 

if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")

return true

end

 

if getTileInfo(getThingPos(mypoke)).protection then

doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")

return true

end

 

if getPlayerStorageValue(mypoke, 3894) >= 1 then

return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3

end

--alterado v1.6

if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then

doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")

return true

end

--alterado v1.7 \/\/\/

if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then

local target = getCreatureTarget(cid)

if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then

if isCreature(getMasterTarget(target)) then --alterado v1.6

doSendMagicEffect(getThingPos(target), 211)

doSendAnimatedText(getThingPos(target), "TOO BAD", 215)

doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)

doSendMagicEffect(getThingPos(target), 211)

doFaceCreature(target, getThingPos(mypoke))

return true --alterado v1.6

end

end

end

 

 

if move.target == 1 then

 

if not isCreature(getCreatureTarget(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")

return 0

end

 

if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then

return 0

end

 

if getCreatureHealth(getCreatureTarget(cid)) <= 0 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")

return 0

end

 

if not isCreature(getCreatureSummons(cid)[1]) then

return true

end

 

if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")

return 0

end

 

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

return 0

end

end

 

local newid = 0

 

if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")

return 0

else

newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)

end

 

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

 

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

 

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

 

for i = 2, #summons do

if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then

docastspell(summons, move.name) --alterado v1.6

end

end

 

docastspell(mypoke, move.name)

doCreatureAddCondition(cid, playerexhaust)

 

if useKpdoDlls then

doUpdateCooldowns(cid)

end

 

return 0

end

 

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

 

Move1.lua

local msgs = {"use ", ""}

 

function doAlertReady(cid, id, movename, n, cd)

if not isCreature(cid) then return true end

local myball = getPlayerSlotItem(cid, 8)

if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")

return true

end

local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)

if not p or #p <= 0 then return true end

for a = 1, #p do

if getItemAttribute(p[a], cd) == "cd:"..id.."" then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")

return true

end

end

end

 

function onSay(cid, words, param, channel)

 

 

if param ~= "" then return true end

if string.len(words) > 3 then return true end

 

if #getCreatureSummons(cid) == 0 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")

return 0

end

--alterado v1.5

local mypoke = getCreatureSummons(cid)[1]

 

if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end

if getCreatureName(mypoke) == "Evolution" then return true end

 

if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then

name = getPlayerStorageValue(mypoke, 1010) --edited

else

name = getCreatureName(mypoke)

end

 

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

 

local it = string.sub(words, 2, 3)

local move = movestable[name].move1

if getPlayerStorageValue(mypoke, 212123) >= 1 then

cdzin = "cm_move"..it..""

else

cdzin = "move"..it.."" --alterado v1.5

end

 

if it == "2" then

move = movestable[name].move2

elseif it == "3" then

move = movestable[name].move3

elseif it == "4" then

move = movestable[name].move4

elseif it == "5" then

move = movestable[name].move5

elseif it == "6" then

move = movestable[name].move6

elseif it == "7" then

move = movestable[name].move7

elseif it == "8" then

move = movestable[name].move8

elseif it == "9" then

move = movestable[name].move9

elseif it == "10" then

move = movestable[name].move10

elseif it == "11" then

move = movestable[name].move11

elseif it == "12" then

move = movestable[name].move12

elseif it == "13" then

move = movestable[name].move13

end

 

if not move then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")

return true

end

 

if getPlayerLevel(cid) < move.level then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.")

return true

end

 

if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.")

return true

end

 

if getTileInfo(getThingPos(mypoke)).protection then

doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")

return true

end

 

if getPlayerStorageValue(mypoke, 3894) >= 1 then

return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3

end

--alterado v1.6

if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then

doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")

return true

end

--alterado v1.7 \/\/\/

if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then

local target = getCreatureTarget(cid)

if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then

if isCreature(getMasterTarget(target)) then --alterado v1.6

doSendMagicEffect(getThingPos(target), 211)

doSendAnimatedText(getThingPos(target), "TOO BAD", 215)

doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)

doSendMagicEffect(getThingPos(target), 211)

doFaceCreature(target, getThingPos(mypoke))

return true --alterado v1.6

end

end

end

 

 

if move.target == 1 then

 

if not isCreature(getCreatureTarget(cid)) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.")

return 0

end

 

if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then

return 0

end

 

if getCreatureHealth(getCreatureTarget(cid)) <= 0 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")

return 0

end

 

if not isCreature(getCreatureSummons(cid)[1]) then

return true

end

 

if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")

return 0

end

 

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

return 0

end

end

 

local newid = 0

 

if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")

return 0

else

newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)

end

 

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

 

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

 

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

 

for i = 2, #summons do

if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then

docastspell(summons, move.name) --alterado v1.6

end

end

 

docastspell(mypoke, move.name)

doCreatureAddCondition(cid, playerexhaust)

 

if useKpdoDlls then

doUpdateCooldowns(cid)

end

 

return 0

end

 

¿Qual e seu newStatusSyst? data/lib/newStatusSyst.lua

 

Ou qual e seu base?

Link para o comentário
Compartilhar em outros sites

¿Qual e seu newStatusSyst? data/lib/newStatusSyst.lua

 

Ou qual e seu base?

Tem

conds = {

["Slow"] = 3890,

["Confusion"] = 3891,

["Burn"] = 3892,

["Poison"] = 3893,

["Fear"] = 3894,

["Stun"] = 3895,

["Paralyze"] = 3896, --alterado v2.6 \/ peguem o script todo!

["Leech"] = 3897,

["Buff1"] = 3898,

["Buff2"] = 3899,

["Buff3"] = 3900,

["Miss"] = 32659,

["Silence"] = 32698,

["Sleep"] = 98271,

}

 

injuries2 = {

[1] = {n = "slow", m = 3890},

[2] = {n = "confuse", m = 3891},

[3] = {n = "burn", m = 3892},

[4] = {n = "poison", m = 3893},

[5] = {n = "fear", m = 3894},

[6] = {n = "stun", m = 3895},

[7] = {n = "paralyze", m = 3896},

[8] = {n = "leech", m = 3897},

[9] = {n = "Buff1", m = 3898},

[10] = {n = "Buff2", m = 3899},

[11] = {n = "Buff3", m = 3900},

[12] = {n = "miss", m = 32659},

[13] = {n = "silence", m = 32698},

[14] = {n = "sleep", m = 98271},

}

 

Buffs = {

[1] = {"Buff1", 3898},

[2] = {"Buff2", 3899},

[3] = {"Buff3", 3900},

}

 

paralizeArea2 = createConditionObject(CONDITION_PARALYZE)

setConditionParam(paralizeArea2, CONDITION_PARAM_TICKS, 50000)

setConditionFormula(paralizeArea2, -0.63, -0.63, -0.63, -0.63)

 

local roardirections = {

[NORTH] = {SOUTH},

[sOUTH] = {NORTH},

[WEST] = {EAST}, --edited sistema de roar

[EAST] = {WEST}}

 

function doSendSleepEffect(cid)

if not isCreature(cid) or not isSleeping(cid) then return true end

doSendMagicEffect(getThingPos(cid), 32)

addEvent(doSendSleepEffect, 1500, cid)

end

 

local outFurys = {

["Shiny Charizard"] = {outFury = 1073},

["Shiny Blastoise"] = {outFury = 1074},

}

 

local outImune = {

["Camouflage"] = 1445,

["Acid Armor"] = 1453,

["Iron Defense"] = 1401,

["Minimize"] = 1455,

["Future Sight"] = 1446,

}

 

local function transBack(cid)

if isCreature(cid) then

if getPlayerStorageValue(cid, 974848) >= 1 then

setPlayerStorageValue(cid, 974848, 0)

doRemoveCondition(cid, CONDITION_OUTFIT)

end

end

end

 

function doCondition2(ret)

--

function doMiss2(cid, cd, eff, check, spell)

local stg = conds["Miss"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, 21100) >= 1 and getPlayerStorageValue(cid, stg) <= -1 then return true end --alterado v2.6 reflect

if not canDoMiss(cid, spell) then return true end

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "miss", a)

doItemSetAttribute(item.uid, "missEff", eff)

doItemSetAttribute(item.uid, "missSpell", spell)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doMiss2, 1000, cid, -1, eff, a, spell)

end

 

function doSilence2(cid, cd, eff, check)

local stg = conds["Silence"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "silence", a)

doItemSetAttribute(item.uid, "silenceEff", eff)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doSilence2, 1000, cid, -1, eff, a)

end

 

function doSlow2(cid, cd, eff, check, first)

local stg = conds["Slow"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "slow", a)

doItemSetAttribute(item.uid, "slowEff", eff)

end

 

if a <= -1 then

doRemoveCondition(cid, CONDITION_PARALYZE)

if not isSleeping(cid) and not isParalyze(cid) then

addEvent(doRegainSpeed, 50, cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if first then

doAddCondition(cid, paralizeArea2)

end

 

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doSlow2, 1000, cid, -1, eff, a)

end

 

function doConfusion2(cid, cd, check)

local stg = conds["Confusion"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "confuse", a)

end

 

if a <= -1 then

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isSleeping(cid) and not isParalyze(cid) then

doRegainSpeed(cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if math.random(1, 6) >= 4 then

doSendMagicEffect(getThingPos(cid), 31)

end

 

local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid)

if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v2.6

doChangeSpeed(cid, -getCreatureSpeed(cid))

doChangeSpeed(cid, 100)

doPushCreature(cid, math.random(0, 3), 1, 0) --alterado v2.6

doChangeSpeed(cid, -100)

end

 

local pos = getThingPos(cid)

addEvent(doSendMagicEffect, math.random(0, 450), pos, 31)

 

addEvent(doConfusion2, 1000, cid, -1, a)

end

 

function doBurn2(cid, cd, check, damage)

local stg = conds["Burn"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "burn", a)

doItemSetAttribute(item.uid, "burndmg", damage)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doCreatureAddHealth(cid, -damage, 15, COLOR_BURN)

addEvent(doBurn2, 3500, cid, -1, a, damage)

end

 

function doPoison2(cid, cd, check, damage)

local stg = conds["Poison"]

if not isCreature(cid) then return true end --is creature?

----------

if isSummon(cid) or ehMonstro(cid) and pokes[getCreatureName(cid)] then --alterado v2.6

local type = pokes[getCreatureName(cid)].type

local type2 = pokes[getCreatureName(cid)].type2

if isInArray({"poison", "steel"}, type) or isInArray({"poison", "steel"}, type2) then

return true

end

end

---------

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "poison", a)

doItemSetAttribute(item.uid, "poisondmg", damage)

end

 

if a <= -1 or getCreatureHealth(cid) == 1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

local dano = getCreatureHealth(cid)-damage <= 0 and getCreatureHealth(cid)-1 or damage

doCreatureAddHealth(cid, -dano, 8, COLOR_GRASS)

 

addEvent(doPoison2, 1500, cid, -1, a, damage)

end

 

function doFear2(cid, cd, check, skill)

local stg = conds["Fear"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "fear", a)

doItemSetAttribute(item.uid, "fearSkill", skill)

end

 

if a <= -1 then

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isSleeping(cid) and not isParalyze(cid) then

doRegainSpeed(cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if skill == "Roar" then

eff = 244

else --edited Roar

eff = 139

end

 

if math.random(1, 6) >= 4 then

doSendMagicEffect(getThingPos(cid), eff)

end

 

local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid)

if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v2.6

local dir = getCreatureDirectionToTarget(cid, isTarget)

doChangeSpeed(cid, -getCreatureSpeed(cid))

doChangeSpeed(cid, 100)

doPushCreature(cid, roardirections[dir][1], 1, 0) --alterado v2.6

doChangeSpeed(cid, -100)

end

 

local pos = getThingPos(cid)

addEvent(doSendMagicEffect, math.random(0, 450), pos, eff)

 

addEvent(doFear2, 1000, cid, -1, a, skill)

end

 

function doStun2(cid, cd, eff, check, spell)

local stg = conds["Stun"]

if not isCreature(cid) then return true end --is creature?

if not canDoMiss(cid, spell) then return true end

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "stun", a)

doItemSetAttribute(item.uid, "stunEff", eff)

doItemSetAttribute(item.uid, "stunSpell", spell)

end

 

if a <= -1 then

doRemoveCondition(cid, CONDITION_PARALYZE)

if not isSleeping(cid) and not isParalyze(cid) then

addEvent(doRegainSpeed, 50, cid) --alterado

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if getCreatureCondition(cid, CONDITION_PARALYZE) == false then

doAddCondition(cid, paralizeArea2)

end

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doStun2, 1000, cid, -1, eff, a, spell)

end

 

function doParalyze2(cid, cd, eff, check, first)

local stg = conds["Paralyze"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "paralyze", a)

doItemSetAttribute(item.uid, "paralyzeEff", eff)

end

 

if a <= -1 then

if isPlayer(cid) then

if not isSleeping(cid) then --alterado

mayNotMove(cid, false)

end

else

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isSleeping(cid) then

doRegainSpeed(cid) --alterado

end

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if isPlayer(cid) then

mayNotMove(cid, true)

else --alterado v2.6

doChangeSpeed(cid, -2000)

end

doSendMagicEffect(getThingPos(cid), eff)

addEvent(doParalyze2, 1000, cid, -1, eff, a, false)

end

 

function doSleep2(cid, cd, check, first)

local stg = conds["Sleep"]

if not isCreature(cid) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not isSleeping(cid) then

addEvent(doSendSleepEffect, 500, cid)

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "sleep", a)

end

 

if a <= -1 then

if not isPlayer(cid) then

local dittoStg = getPlayerStorageValue(cid, 1010)

if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then

doSetCreatureOutfit(cid, {lookType = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "transOutfit")}, -1)

else

doRemoveCondition(cid, CONDITION_OUTFIT)

end

if getPlayerStorageValue(cid, 625877) ~= -1 then

doSetCreatureOutfit(cid, {lookType = getPlayerStorageValue(cid, 625877)}, -1) --alterado v2.6

end

end

if isPlayer(cid) then

if not isParalyze(cid) then

mayNotMove(cid, false) --alterado

end

else

if getCreatureCondition(cid, CONDITION_PARALYZE) == true then

doRemoveCondition(cid, CONDITION_PARALYZE)

addEvent(doAddCondition, 10, cid, paralizeArea2)

end

if not isParalyze(cid) then

doRegainSpeed(cid) --alterado

end

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

if first then

if getCreatureName(cid) == "Ursaring" and getCreatureCondition(cid, CONDITION_OUTFIT) == true then

 

elseif not isPlayer(cid) then

if isInArray({604, 605, 1015, 1016, 1183, 1184}, getCreatureOutfit(cid).lookType) then

Info = 0 --alterado v2.6

else

Info = getMonsterInfo(getCreatureName(cid)).lookCorpse

end

local look = getCreatureOutfit(cid)

---------

local dittoStg = getPlayerStorageValue(cid, 1010)

if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then

local InfoDitto = getMonsterInfo(tostring(dittoStg)).lookCorpse

if InfoDitto ~= 0 and look.lookType ~= 0 then

doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(tostring(dittoStg)).lookCorpse}, -1)

end

else

if getCreatureName(cid) == "Shiny Golem" and getCreatureOutfit(cid).lookType == 1403 then

doRemoveCondition(cid, CONDITION_OUTFIT)

elseif Info ~= 0 and look.lookType ~= 0 then

doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)

end

end

end

end

--alterado v2.6

if isPlayer(cid) then

mayNotMove(cid, true)

else

doChangeSpeed(cid, -getCreatureSpeed(cid))

end

addEvent(doSleep2, 1000, cid, -1, a, false)

end

 

function doLeech2(cid, attacker, cd, check, damage)

local stg = conds["Leech"]

if not isCreature(cid) then return true end --is creature?

if attacker ~= 0 and not isCreature(attacker) then return true end --is creature?

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then

setPlayerStorageValue(cid, stg, cd) --allterado v2.8

return true

end

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, "leech", a)

doItemSetAttribute(item.uid, "leechdmg", damage)

end

 

if a <= -1 then

setPlayerStorageValue(cid, stg, -1)

return true

end

 

local life = getCreatureHealth(cid)

------

doCreatureAddHealth(cid, -damage)

doSendAnimatedText(getThingPos(cid), "-"..damage.."", 144)

doSendMagicEffect(getThingPos(cid), 45)

------

local newlife = life - getCreatureHealth(cid)

if newlife >= 1 and attacker ~= 0 then

doSendMagicEffect(getThingPos(attacker), 14)

doCreatureAddHealth(attacker, newlife)

doSendAnimatedText(getThingPos(attacker), "+"..newlife.."", 32)

end

addEvent(doLeech2, 2000, cid, attacker, -1, a, damage)

end

 

function doBuff2(cid, cd, eff, check, buff, first, attr)

if not isCreature(cid) then return true end --is creature?

---------------------

local atributo = attr and attr or ""

if first and atributo == "" then

for i = 1, 3 do

if getPlayerStorageValue(cid, Buffs[2]) <= 0 then

atributo = Buffs[1]

break

end

end

end

if atributo == "" then return true end

if ehMonstro(cid) then atributo = "Buff1" end

----------------------

local stg = conds[atributo]

 

if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end --n usar 2x

 

if not check and getPlayerStorageValue(cid, stg) >= 1 then

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)

else

setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)

end

 

local a = getPlayerStorageValue(cid, stg)

 

if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doItemSetAttribute(item.uid, atributo, a)

doItemSetAttribute(item.uid, atributo.."eff", eff)

doItemSetAttribute(item.uid, atributo.."skill", buff)

end

 

if a <= -1 then --alterado v2.6

if isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize", "Bug Fighter", "Ancient Fury"}, buff) then

if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then

if isSummon(cid) then

local item = getPlayerSlotItem(getCreatureMaster(cid), 8)

doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1) --alterado v2.6.1

end

elseif not isSleeping(cid) then

doRemoveCondition(cid, CONDITION_OUTFIT)

end

setPlayerStorageValue(cid, 9658783, -1)

setPlayerStorageValue(cid, 625877, -1) --alterado v2.6

end

if isInArray({"Strafe", "Agility", "Ancient Fury", "War Dog", "Fighter Spirit", "Furious Legs", "Ultimate Champion", "Bug Fighter"}, buff) then

setPlayerStorageValue(cid, 374896, -1) --alterado v2.6

end

setPlayerStorageValue(cid, stg, -1)

return true

end

 

doSendMagicEffect(getThingPos(cid), eff)

 

if first then

if buff == "Strafe" or buff == "Agility" then

setPlayerStorageValue(cid, 374896, 1) --velo atk --alterado v2.6

doRaiseStatus(cid, 0, 0, 100, a)

elseif buff == "Tailwind" then

doRaiseStatus(cid, 0, 0, 200, a)

elseif buff == "Rage" then

doRaiseStatus(cid, 2, 0, 0, a)

elseif buff == "Harden" then

doRaiseStatus(cid, 0, 2, 0, a)

elseif buff == "Calm Mind" then

doRaiseStatus(cid, 0, 2, 0, a)

elseif buff == "Ancient Fury" then

doSetCreatureOutfit(cid, {lookType = outFurys[getCreatureName(cid)].outFury}, a*1000)

setPlayerStorageValue(cid, 374896, 1) --velo atk

if getCreatureName(cid) == "Shiny Charizard" then

doRaiseStatus(cid, 2, 0, 0, a) --atk melee --alterado v2.6

else

doRaiseStatus(cid, 0, 2, 0, a) --def

end

setPlayerStorageValue(cid, 625877, outFurys[getCreatureName(cid)].outFury) --alterado v2.6

elseif buff == "War Dog" then

doRaiseStatus(cid, 1.5, 1.5, 0, a)

setPlayerStorageValue(cid, 374896, 1) --velo atk

elseif buff == "Rest" then

doSleep2(cid, cd, getPlayerStorageValue(cid, conds["Sleep"]), true)

doCreatureAddHealth(cid, getCreatureMaxHealth(cid))

elseif isInArray({"Fighter Spirit", "Furious Legs", "Ultimate Champion"}, buff) then

doRaiseStatus(cid, 1.5, 0, 0, a) --atk melee --alterado v2.6

setPlayerStorageValue(cid, 374896, 1) --velo atk

addEvent(setPlayerStorageValue, a*1000, cid, 465987, -1)

elseif isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, buff) then

doSetCreatureOutfit(cid, {lookType = outImune[buff]}, -1)

setPlayerStorageValue(cid, 9658783, 1)

setPlayerStorageValue(cid, 625877, outImune[buff]) --alterado v2.6

elseif buff == "Bug Fighter" then

setPlayerStorageValue(cid, 374896, 1) --velo atk --alterado v2.6

doRaiseStatus(cid, 1.5, 1.5, 100, a)

doSetCreatureOutfit(cid, {lookType = 1448}, a*1000)

setPlayerStorageValue(cid, 625877, 1448) --alterado v2.6

end

end

addEvent(doBuff2, 1000, cid, -1, eff, a, buff, false, atributo)

end

 

if ret.buff and ret.buff ~= "" then

doBuff2(ret.id, ret.cd, ret.eff, ret.check, ret.buff, ret.first, (ret.attr and ret.attr or false))

end

 

if isSummon(ret.id) and getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then --sistema "pegou no boost"

if ret.cond and not isInArray({"Poison", "Burn", "Leech", "Fear"}, ret.cond) then --alterado v2.6

doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215) --alterado v2.8

return true

end

end

 

if ret.cond and ret.cond == "Miss" then

doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)

elseif ret.cond and ret.cond == "Silence" then

doSilence2(ret.id, ret.cd, ret.eff, ret.check)

elseif ret.cond and ret.cond == "Slow" then

doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)

elseif ret.cond and ret.cond == "Confusion" then

doConfusion2(ret.id, ret.cd, ret.check)

elseif ret.cond and ret.cond == "Burn" then

doBurn2(ret.id, ret.cd, ret.check, ret.damage)

elseif ret.cond and ret.cond == "Poison" then

doPoison2(ret.id, ret.cd, ret.check, ret.damage)

elseif ret.cond and ret.cond == "Fear" then

doFear2(ret.id, ret.cd, ret.check, ret.skill)

elseif ret.cond and ret.cond == "Stun" then

doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)

elseif ret.cond and ret.cond == "Paralyze" then

doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)

elseif ret.cond and ret.cond == "Sleep" then

doSleep2(ret.id, ret.cd, ret.check, ret.first)

elseif ret.cond and ret.cond == "Leech" then

doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)

end

end

 

--------------------------------

function cleanBuffs2(item)

if item ~= 0 then

for i = 1, 3 do

doItemEraseAttribute(item, Buffs[1])

doItemEraseAttribute(item, Buffs[1].."eff")

doItemEraseAttribute(item, Buffs[1].."skill")

end

end

end

--------------------------------

function doCureStatus(cid, type, playerballs) --alterado v2.9 \/

if not isCreature(cid) then return true end

if playerballs and isPlayer(cid) then

local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)

local mb = getPlayerSlotItem(cid, 8)

local balls = getPokeballsInContainer(bp.uid)

if isPokeball(mb.itemid) then

if not type or type == "all" then

for b = 1, #injuries2 do

doItemSetAttribute(mb.uid, ""..injuries2.n.."", -1)

end

else

doItemSetAttribute(mb.uid, ""..type.."", -1)

end

end

if #balls >= 1 then

for _, uid in ipairs(balls) do

if not type or type == "all" then

for b = 1, #injuries2 do

doItemSetAttribute(uid, ""..injuries2.n.."", -1)

end

else

doItemSetAttribute(uid, ""..type.."", -1)

end

end

end

end

if type == "all" then

for a = 1, #injuries2 do

setPlayerStorageValue(cid, injuries2[a].m, -1)

end

return true

end

for a, b in pairs (injuries2) do

if b.n == type then

setPlayerStorageValue(cid, b.m, -1)

end

end

end

---------------------------------

function isWithCondition(cid)

for i = 1, #injuries2 do

if getPlayerStorageValue(cid, injuries2.m) >= 1 then

return true

end

end

return false

end

---------------------------------

function doCureBallStatus(item, type)

if not type or type == "all" then

for b = 1, #injuries2 do

doItemSetAttribute(item, ""..injuries2.n.."", -1)

end

else

doItemSetAttribute(item, ""..type.."", -1)

end

end

---------------------------------

function isBurning(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Burn"]) >= 0 then return true end

return false

end

 

function isPoisoned(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Poison"]) >= 0 then return true end

return false

end

 

function isSilence(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Silence"]) >= 0 then return true end

return false

end

 

function isParalyze(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Paralyze"]) >= 0 then return true end

return false

end

 

function isSleeping(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Sleep"]) >= 0 then return true end

return false

end

 

function isWithFear(cid)

if not isCreature(cid) then return false end

if getPlayerStorageValue(cid, conds["Fear"]) >= 0 then return true end

return false

end

-----------------------------------

function doMoveInArea2(cid, eff, area, element, min, max, spell, ret)

if not isCreature(cid) then return true end

 

local pos = getPosfromArea(cid, area) --alterado v2.8

setPlayerStorageValue(cid, 21101, -1) --alterado v2.6

 

local skills = {"Skull Bash", "Gust", "Water Pulse", "Stick Throw", "Overheat", "Toxic", "Take Down", "Gyro Ball"} --alterado v2.7

local n = 0

local l = 0

 

while n < #pos do

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

 

n = n+1

thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}

local pid = getThingFromPosWithProtect(thing)

----

if pid ~= cid then

if spell and isInArray(skills, spell) then

if spell == "Stick Throw" then

addEvent(sendEffWithProtect, l*300, cid, pos[n], eff)

addEvent(sendMoveBack, 1200, cid, pos, eff, min, max)

addEvent(doMoveDano2, l*300, cid, pid, element, min, max, ret, spell) --alterado v2.6

elseif spell and spell == "Gyro Ball" then --alterado v2.7

pos[n].x = pos[n].x+1

addEvent(sendEffWithProtect, l*200, cid, pos[n], eff)

addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell)

else

addEvent(sendEffWithProtect, l*200, cid, pos[n], eff)

addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell) --alterado v2.6

end

elseif spell and spell == "Epicenter" then

local random = math.random(50, 500)

addEvent(sendEffWithProtect, random, cid, pos[n], eff)

addEvent(doDanoWithProtect, random, cid, GROUNDDAMAGE, pos[n], crusher, -min, -max, 255)

elseif spell and spell == "Shadowave" then

posi = {x=pos[n].x, y=pos[n].y+1, z=pos[n].z}

sendEffWithProtect(cid, posi, eff)

doMoveDano2(cid, pid, element, min, max, ret, spell) --alterado v2.6

elseif spell and spell == "Surf" then

addEvent(sendEffWithProtect, math.random(50, 500), cid, pos[n], eff)

addEvent(doMoveDano2, 400, cid, pid, element, min, max, ret, spell) --alterado v2.6

elseif spell and spell == "Sand Attack" then

addEvent(sendEffWithProtect, n*200, cid, pos[n], eff)

addEvent(doMoveDano2, n*200, cid, pid, element, min, max, ret, spell) --alterado v2.6

elseif spell and (spell == "Muddy Water" or spell == "Venom Motion") then

local arr = {

[1] = 0, [2] = 0, [3] = 0, [4] = 200, [5] = 200, [6] = 200, [7] = 400, [8] = 400, [9] = 400, [10] = 600, [11] = 600,

[12] = 600, [13] = 800, [14] = 800, [15] = 800

}

 

local time = {0, 200, 400, 600, 800}

 

addEvent(sendEffWithProtect, arr[n], cid, pos[n], eff)

addEvent(doMoveDano2, arr[n], cid, pid, element, min, max, ret, spell)

elseif spell and (spell == "Inferno" or spell == "Fissure" or spell == "Volcano Burst") then --alterado v2.8

addEvent(sendEffWithProtect, math.random(0, 500), cid, pos[n], eff)

addEvent(doMoveDano2, math.random(0, 500), cid, pid, element, min, max, ret, spell)

else

sendEffWithProtect(cid, pos[n], eff)

doMoveDano2(cid, pid, element, min, max, ret, spell)

end

end

l = l+1

end

end

-------------------------------------------

function doMoveDano2(cid, pid, element, min, max, ret, spell)

if isCreature(pid) and isCreature(cid) and cid ~= pid then

if isNpcSummon(pid) and getCreatureTarget(pid) ~= cid then

return true --alterado v2.6

end

if ehNPC(pid) then return true end

---

local canAtk = true --alterado v2.6

if getPlayerStorageValue(pid, 21099) >= 1 then

doSendMagicEffect(getThingPosWithDebug(pid), 135)

doSendAnimatedText(getThingPosWithDebug(pid), "REFLECT", COLOR_GRASS)

addEvent(docastspell, 100, pid, spell)

if getCreatureName(pid) == "Wobbuffet" then

doRemoveCondition(pid, CONDITION_OUTFIT)

end

canAtk = false

setPlayerStorageValue(pid, 21099, -1)

setPlayerStorageValue(pid, 21100, 1)

setPlayerStorageValue(pid, 21101, cid)

setPlayerStorageValue(pid, 21103, getTableMove(cid, getPlayerStorageValue(cid, 21102)).f)

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

if isSummon(cid) and (ehMonstro(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can" and #getCreatureSummons(pid) <= 0)) and pid ~= cid then

if canAtk then --alterado v2.6

if ret and ret.cond then

ret.id = pid

ret.check = getPlayerStorageValue(pid, conds[ret.cond])

doCondition2(ret)

end

if spell == "Selfdestruct" then

if getPlayerStorageValue(pid, 9658783) <= 0 then

doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

doCreatureAddHealth(pid, -max) --alterado v2.6

end

else

doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)

end

end

elseif ehMonstro(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then

if canAtk then --alterado v2.6

if ret and ret.cond then

ret.id = pid

ret.check = getPlayerStorageValue(pid, conds[ret.cond])

doCondition2(ret)

end

if spell == "Selfdestruct" then

if getPlayerStorageValue(pid, 9658783) <= 0 then

doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

doCreatureAddHealth(pid, -max) --alterado v2.6

end

else

doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)

end

end

elseif isPlayer(cid) and ehMonstro(pid) and pid ~= cid then

if canAtk then --alterado v2.6

if ret and ret.cond then

ret.id = pid

ret.check = getPlayerStorageValue(pid, conds[ret.cond])

doCondition2(ret)

end

if spell == "Selfdestruct" then

if getPlayerStorageValue(pid, 9658783) <= 0 then

doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)

doCreatureAddHealth(pid, -max) --alterado v2.6

end

else

doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)

end

end

end

end

end

--------------------------------------------------------------------------------

function sendEffWithProtect(cid, pos, eff) --Manda algum magic effect com proteçoes

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 checkpos = pos

checkpos.stackpos = 0

if not hasTile(checkpos) then

return true

end

if not canWalkOnPos2(pos, false, true, false, true, false) then --alterado v2.6

return true

end

 

doSendMagicEffect(pos, eff)

end

---------------------------------------------------------------------------------

function getThingPosWithDebug(what)

if not isCreature(what) or getCreatureHealth(what) <= 0 then

return {x = 1, y = 1, z = 10}

end

return getThingPos(what)

end

---------------------------------------------------------------------------------

function doDanoWithProtect(cid, element, pos, area, min, max, eff) --Da dano com proteçoes

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

doAreaCombatHealth(cid, element, pos, area, -(math.abs(min)), -(math.abs(max)), eff)

end

---------------------------------------------------------------------------------

function doDanoWithProtectWithDelay(cid, target, element, min, max, eff, area)

const_distance_delay = 56

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

if target ~= 0 and isCreature(target) and not area then

delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay

addEvent(doDanoWithProtect, delay, cid, element, getThingPosWithDebug(target), 0, min, max, eff)

return true

end

addEvent(doDanoWithProtect, 200, cid, element, getThingPosWithDebug(target), area, min, max, eff)

end

--------------------------------------------------------------------------------

function sendDistanceShootWithProtect(cid, frompos, topos, eff) --Manda um efeito de distancia com proteçoes

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

doSendDistanceShoot(frompos, topos, eff)

end

---------------------------------------------------------------------------------

function sendMoveBack(cid, pos, eff, min, max) --Manda o Atk do farfetchd de volta...

local m = #pos+1

for i = 1, #pos do

if not isCreature(cid) then return true end

---

m = m-1

thing = {x=pos[m].x,y=pos[m].y,z=pos[m].z,stackpos=253}

local pid = getThingFromPosWithProtect(thing)

addEvent(doMoveDano2, i*200, cid, pid, FLYINGDAMAGE, min/4, max/4)

addEvent(sendEffWithProtect, i*200, cid, pos[m], eff) --alterado v1.3

--

end

end

---------------------------------------------------------------------------------

function upEffect(cid, effDis)

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

pos = getThingPos(cid)

frompos = {x = pos.x+1, y = pos.y, z = pos.z}

frompos.x = pos.x - math.random(4, 7)

frompos.y = pos.y - math.random(5, 8)

doSendDistanceShoot(getThingPos(cid), frompos, effDis)

end

---------------------------------------------------------------------------------

function fall(cid, master, element, effDis, effArea) --Function pra jogar efeitos pra cima e cair depois... tpw falling rocks e blizzard

if isCreature(cid) then

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

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

pos = getThingPos(cid)

pos.x = pos.x + math.random(-4,4)

pos.y = pos.y + math.random(-4,4)

if isMonster(cid) or isPlayer(cid) then

frompos = {x = pos.x+1, y = pos.y, z = pos.z}

elseif isSummon(cid) then

frompos = getThingPos(master)

end

frompos.x = pos.x - 7

frompos.y = pos.y - 6

if effDis ~= -1 then --alterado!

doSendDistanceShoot(frompos, pos, effDis)

end

doAreaCombatHealth(cid, element, pos, 0, 0, 0, effArea)

end

end

---------------------------------------------------------------------------------

function canDoMiss(cid, nameAtk) --alterado v2.5

local atkTerra = {"Sand Attack", "Mud Shot", "Mud Bomb", "Stomp", "Crusher Stomp", "Mud Slap", "Sand Tomb"} --alterado v2.7

local atkElectric = {"Electric Storm", "Thunder Wave", "Thunder", "Electricity", "Wild Charge"} --alterado v2.7

if not isCreature(cid) then return false end

if isPlayer(cid) then return true end

if not pokes[getCreatureName(cid)] then return true end

 

if isInArray(atkTerra, nameAtk) then

if (pokes[getCreatureName(cid)].type == "flying") or (pokes[getCreatureName(cid)].type2 == "flying") or isInArray(specialabilities["levitate"], getCreatureName(cid)) then

return false

end

elseif isInArray(atkElectric, nameAtk) then

if (pokes[getCreatureName(cid)].type == "ground") or (pokes[getCreatureName(cid)].type2 == "ground") then

return false

end

end

 

return true

end

---------------------------------------------------------------------------------

function doMoveInAreaMulti(cid, effDis, effMagic, areaEff, areaDano, element, min, max, ret) --alterado v2.7

if not isCreature(cid) then return true end

local pos = getPosfromArea(cid, areaEff)

local pos2 = getPosfromArea(cid, areaDano)

local n = 0

 

while n < #pos2 do

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

 

n = n+1

thing = {x=pos2[n].x,y=pos2[n].y,z=pos2[n].z,stackpos=253}

if n < #pos then

addEvent(sendDistanceShootWithProtect, 50, cid, getThingPos(cid), pos[n], effDis) --39

addEvent(sendEffWithProtect, 100, cid, pos[n], effMagic) -- 112

--- --alterado v2.6.1

if math.random(1, 2) == 2 then

addEvent(sendDistanceShootWithProtect, 450, cid, getThingPos(cid), pos[n], effDis) --550

addEvent(sendEffWithProtect, 550, cid, pos[n], effMagic) -- 650

end

end

local pid = getThingFromPosWithProtect(thing)

if isCreature(pid) then

if ret and ret.id == 0 then --alterado v2.8

ret.id = pid

ret.check = getPlayerStorageValue(pid, conds[ret.cond])

end

if not ret then ret = {} end --alterado v2.7

doMoveDano2(cid, pid, element, min, max, ret, getPlayerStorageValue(cid, 21102))

end

end

end

---------------------------------------------------------------------------------------

function doDoubleHit(cid, pid, valor, races) --alterado v2.6

if isCreature(cid) and isCreature(pid) then

if getPlayerStorageValue(cid, 374896) >= 1 then

if getMasterTarget(cid) == pid then

if isInArray({"Kadabra", "Alakazam", "Mew", "Shiny Abra", "Shiny Alakazam"}, getCreatureName(cid)) then

doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(pid), 39)

end

if isSummon(cid) then

doTargetCombatHealth(getCreatureMaster(cid), pid, PHYSICALDAMAGE, -math.abs(valor), -math.abs(valor), 255)

else

doCreatureAddHealth(pid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(pid)).race].cor)

end

end

end

end

end

----------------------------------------------------------------------------------------

function doDanoInTarget(cid, target, combat, min, max, eff) --alterado v2.7

if not isCreature(cid) or not isCreature(target) 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

doTargetCombatHealth(cid, target, combat, -math.abs(min), -math.abs(max), eff)

end

-----------------------------------------------------------------------------------------

function doDanoInTargetWithDelay(cid, target, combat, min, max, eff) --alterado v2.7

const_distance_delay = 56

if not isCreature(cid) or not isCreature(target) 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 delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay

addEvent(doDanoInTarget, delay, cid, target, combat, min, max, eff)

end

 

 

Link para o comentário
Compartilhar em outros sites

Replace: move1.lua

local msgs = {"use ", ""}

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

function onSay(cid, words, param, channel)


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

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

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

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

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

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

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

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

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

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

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

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


if move.target == 1 then

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

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

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

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

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

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

local newid = 0

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

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

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

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

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

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

if useKpdoDlls then
doUpdateCooldowns(cid)
end

return 0
end
Link para o comentário
Compartilhar em outros sites

  • 2 years later...
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.
Link para o comentário
Compartilhar em outros sites

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