Postado Dezembro 25, 2020 4 anos ---- #1 BUG DOS POKEMONS VIRAR POKEBOLA! [Warning - IOLoginData::loadItems] Unserialize error for item with id 11829 Acontece isso e o pokemon vira pokebola! EX: https://tibiaking.com/forums/topic/45435-error-bug-ball/ https://tibiaking.com/forums/topic/77977-pokemon-sumindo-virando-pokeball-vazia-pda/ ------#2 Party não funciona, pokemon não tem corpo e ambos não ganha XP; [Error - CreatureScript Interface] datapack/creaturescripts/scripts/pokeexp.lua:onDeath Description: (luaGetCreatureStorage) Creature not found [Error - CreatureScript Interface] datapack/creaturescripts/scripts/pokeexp.lua:onDeath Description: datapack/creaturescripts/scripts/pokeexp.lua:56: attempt to compare boolean with number stack traceback: datapack/creaturescripts/scripts/pokeexp.lua:56: in function <datapack/creaturescripts/scripts/pokeexp.lua:14> ------#3 Não faço e minima ideia, so sei que servidor fica lagado! [Error - TalkAction Interface] In a timer event called from: datapack/talkactions/scripts/move1.lua:onSay Description: datapack/lib/032-position.lua:169: bad argument #1 to 'getn' (table expected, got nil) stack traceback: [C]: in function 'getn' datapack/lib/032-position.lua:169: in function 'getPosfromArea' datapack/lib/newStatusSyst.lua:696: in function <datapack/lib/newStatusSyst.lua:693> -----#4 Tambem não sei para que server, mas quando tento arruma pokemons ficam sem dano! e quando da erro é quando pokemon ta sem dano! [Error - CreatureScript Interface] In a timer event called from: datapack/creaturescripts/scripts/exp.lua:onStatsChange Description: datapack/creaturescripts/scripts/exp.lua:47: attempt to call global 'getPokemonStatus' (a nil value) stack traceback: datapack/creaturescripts/scripts/exp.lua:47: in function <datapack/creaturescripts/scripts/exp.lua:38> -----#5 Esses tem varias spell assim, não se influicia; queria uma explicação do que é isso e como arruma! [Error - TalkAction Interface] In a timer event called from: datapack/talkactions/scripts/move1.lua:onSay ----#6 Pokemons fala que esta no dp, dizendo max pokemon 6 bag; Sendo que não tem nenhum na Bag! SO EM BOX E /CB. Editado Dezembro 25, 2020 4 anos por Isac005 (veja o histórico de edições)
Postado Dezembro 25, 2020 4 anos 4 - Troca tudo por: Spoiler -- Script Feita Por BrendoGraphicsFx function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end 5 é o mesmo que o 3. Ocorre por conflito em spells, algum determinado pokémon tá dando esse erro ai, olha qual spells e edita ela em pokemons moves, na lib. Testa esse move1.lua: Spoiler local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, ? if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then 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 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, 26, "Você precisa de um pokémon para usar 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, 26, "Seu pokémon não reconhece esse move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, 26, "Você precisa ser level "..move.level.." para usar este 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, 26, "Você tem que esperar "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." segundos para usar "..move.name.." novamente.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Você não atacar em PZ.") return true end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Os seus pokemon precisa estar em uma equipe para usar este move!") return true end --alterado v1.7 \/\/\/ if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, 26, "Você não tem um alvo.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, 26, "Você já derrotou o seu alvo.") 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, "Aproxime-se o alvo de usar este 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_ORANGE, "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.."!", 19) 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) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end
Postado Dezembro 25, 2020 4 anos Autor 1 hora atrás, Nysman disse: 4 - Troca tudo por: Mostrar conteúdo oculto -- Script Feita Por BrendoGraphicsFx function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end 5 é o mesmo que o 3. Ocorre por conflito em spells, algum determinado pokémon tá dando esse erro ai, olha qual spells e edita ela em pokemons moves, na lib. Testa esse move1.lua: Mostrar conteúdo oculto local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, ? if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then 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 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, 26, "Você precisa de um pokémon para usar 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, 26, "Seu pokémon não reconhece esse move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, 26, "Você precisa ser level "..move.level.." para usar este 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, 26, "Você tem que esperar "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." segundos para usar "..move.name.." novamente.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Você não atacar em PZ.") return true end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Os seus pokemon precisa estar em uma equipe para usar este move!") return true end --alterado v1.7 \/\/\/ if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, 26, "Você não tem um alvo.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, 26, "Você já derrotou o seu alvo.") 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, "Aproxime-se o alvo de usar este 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_ORANGE, "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.."!", 19) 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) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end 5 funcionou mais o 4 Não! vou mandar o 4! para vc ver!exp.lua
Postado Dezembro 25, 2020 4 anos Pô vi agora que mandei errado, era esse: Spoiler local combats = { [PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC}, [GRASSDAMAGE] = {cor = COLOR_GRASS}, [POISONEDDAMAGE] = {cor = COLOR_GRASS}, [FIREDAMAGE] = {cor = COLOR_FIRE2}, [BURNEDDAMAGE] = {cor = COLOR_BURN}, [WATERDAMAGE] = {cor = COLOR_WATER}, [ICEDAMAGE] = {cor = COLOR_ICE}, [NORMALDAMAGE] = {cor = COLOR_NORMAL}, [FLYDAMAGE] = {cor = COLOR_FLYING}, [GHOSTDAMAGE] = {cor = COLOR_GHOST}, [GROUNDDAMAGE] = {cor = COLOR_GROUND}, [ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC}, [ROCKDAMAGE] = {cor = COLOR_ROCK}, [BUGDAMAGE] = {cor = COLOR_BUG}, [FIGHTDAMAGE] = {cor = COLOR_FIGHTING}, [DRAGONDAMAGE] = {cor = COLOR_DRAGON}, [POISONDAMAGE] = {cor = COLOR_POISON}, [DARKDAMAGE] = {cor = COLOR_DARK}, [STEELDAMAGE] = {cor = COLOR_STEEL}, [MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC}, [DARK_EYEDAMAGE] = {cor = COLOR_GHOST}, [SEED_BOMBDAMAGE] = {cor = COLOR_GRASS}, [SACREDDAMAGE] = {cor = COLOR_FIRE2}, [MUDBOMBDAMAGE] = {cor = COLOR_GROUND}, --alterado v1.9 } local function sendPlayerDmgMsg(cid, text) if not isCreature(cid) then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text) end local races = { [4] = {cor = COLOR_FIRE2}, [6] = {cor = COLOR_WATER}, [7] = {cor = COLOR_NORMAL}, [8] = {cor = COLOR_FIRE2}, [9] = {cor = COLOR_FIGHTING}, [10] = {cor = COLOR_FLYING}, [11] = {cor = COLOR_GRASS}, [12] = {cor = COLOR_POISON}, [13] = {cor = COLOR_ELECTRIC}, [14] = {cor = COLOR_GROUND}, [15] = {cor = COLOR_PSYCHIC}, [16] = {cor = COLOR_ROCK}, [17] = {cor = COLOR_ICE}, [18] = {cor = COLOR_BUG}, [19] = {cor = COLOR_DRAGON}, [20] = {cor = COLOR_GHOST}, [21] = {cor = COLOR_STEEL}, [22] = {cor = COLOR_DARK}, [1] = {cor = 180}, [2] = {cor = 180}, [3] = {cor = 180}, [5] = {cor = 180}, } local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE} local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE} local ignored = {POISONEDDAMAGE, BURNEDDAMAGE} local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE} function onStatsChange(cid, attacker, type, combat, value) if combat == FLYSYSTEMDAMAGE then return false end if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV if not isCreature(attacker) then if not isInArray(fixdamages, combat) and combats[combat] then doSendAnimatedText(getThingPos(cid), value, combats[combat].cor) end return true end local damageCombat = combat -------------------------------------------------- if type == STATSCHANGE_HEALTHGAIN then if cid == attacker then return true end if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then return false end return true end -------------------------------------------------- if isMonster(cid) then local valor = value if not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) doCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor) return false elseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor) return false end end -------------------------------------------------- if isPlayer(attacker) then local valor = value if valor > getCreatureHealth(cid) then valor = getCreatureHealth(cid) end if combat == COMBAT_PHYSICALDAMAGE then return false end if combat == PHYSICALDAMAGE then doSendMagicEffect(getThingPos(cid), 3) doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor) end if #getCreatureSummons(attacker) > 0 then if pokes[getCreatureName(cid)].type == "fire" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == pokes[getCreatureName(cid)].type then if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "ghost" then if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "dragon" then valor = math.ceil(valor / 3) end end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" and pokes[getCreatureName(cid)].type == "ghost" then valor = 500 + valor *2 elseif pokes[getCreatureName(cid)].type == "water" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "ground" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" then return false elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "ghost" then return false elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "ice" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "poison" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ice" then if pokes[getCreatureName(cid)].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor * 1.25) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fighting" then if pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "dark" or pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" or pokes[getCreatureName(cid)].type == "psychic" or pokes[getCreatureName(cid)].type == "fairy" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "ghost" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "poison" then if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fairy" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "ground" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "ghost" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "steel" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ground" then if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "flying" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "flying" then if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "psychic" then if pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "poison"then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "psychic" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "bug" then if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "psychic" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" then if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ghost" then if pokes[getCreatureName(cid)].type == "ghost" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "psychic" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "dragon" then if pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor * 1.25) end end end if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor) end if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".") end return true end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then return false end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then if isSummon(attacker) or isPlayer(attacker) then if canAttackOther(cid, attacker) == "Cant" then return false end end local valor = 0 if combat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) else valor = getSpecialAttack(attacker) end valor = valor * playerDamageReduction valor = valor * math.random(83, 117) / 100 valor = valor / math.ceil(getPlayerLevel(cid) / 55) if valor >= getCreatureHealth(cid) then valor = getCreatureHealth(cid) end valor = math.floor(valor) if valor >= getCreatureHealth(cid) then if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then setPlayerStorageValue(cid, 6598754, -1) setPlayerStorageValue(cid, 6598755, -1) doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, posBackPVP, false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) return false --alterado v1.8 end if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 17000, 0) setPlayerStorageValue(cid, 17001, 0) setPlayerStorageValue(cid, 63215, -1) doChangeSpeed(cid, PlayerSpeed) local item = getPlayerSlotItem(cid, ? local btype = getPokeballType(item.itemid) if #getCreatureSummons(cid) <= 0 then if isInArray(pokeballs[btype].all, item.itemid) then doTransformItem(item.uid, pokeballs[btype].off) doItemSetAttribute(item.uid, "hp", 0) end end end if getPlayerStorageValue(cid, 22545) == 1 then if getGlobalStorageValue(22550) == 1 then doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!") doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) endGoldenArena() return false --alterado v1.8 else setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) return true end end if getPlayerStorageValue(cid, 98796) >= 1 then setPlayerStorageValue(cid, 98796, -1) setPlayerStorageValue(cid, 98797, -1) --alterado v1.8 doTeleportThing(cid, SafariOut, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 27, "You die in the saffari... Best luck in the next time!") return false --alterado v1.8 end local corpse = doCreateItem(3058, 1, getThingPos(cid)) doDecayItem(corpse) doItemSetAttribute(corpse, "pName", getCreatureName(cid)) --alterado v1.7 coloca corpse quando o player morre! doItemSetAttribute(corpse, "attacker", getCreatureName(attacker)) doItemSetAttribute(corpse, "article", getPlayerSex(cid) == 0 and "She" or "He") if getPlayerStorageValue(cid, Agatha.stoIni) >= 1 and getPlayerStorageValue(cid, Agatha.stoIni) <= 10 then setPlayerStorageValue(cid, Agatha.stoIni, -1) setPlayerStorageValue(cid, Agatha.stoRec, -1) setPlayerStorageValue(cid, Agatha.stoPer, -1) setPlayerStorageValue(cid, Agatha.stoEni, -1) --alterado v1.9 agatha quest setPlayerStorageValue(cid, Agatha.stoRes, -1) end end doCreatureAddHealth(cid, -valor, 3, 180) if not isPlayer(cid) then addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end return false end -------------------------------------------------- if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then if isPlayer(cid) then return false end if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if ehMonstro(cid) and ehMonstro(attacker) and not isSummon(cid) and not isSummon(attacker) then return false --alterado v1.9 /\ end -------------------------------------------------- --------------------REFLECT----------------------- if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then if not isInArray({"Team Claw", "Team Slice"}, getPlayerStorageValue(attacker, 21102)) then doSendMagicEffect(getThingPosWithDebug(cid), 135) doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS) addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102)) if getCreatureName(cid) == "Wobbuffet" then doRemoveCondition(cid, CONDITION_OUTFIT) end setPlayerStorageValue(cid, 21099, -1) setPlayerStorageValue(cid, 21100, 1) setPlayerStorageValue(cid, 21101, attacker) setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f) setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType) return false end end ------------------------------------------------- local multiplier = 1 if isCreature(cid) then poketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2 end if not poketype1 or not poketype2 then return false end if getCreatureCondition(cid, CONDITION_INVISIBLE) then return false end if combat == COMBAT_PHYSICALDAMAGE then if isGhostPokemon(cid) then if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --passiva Foresight!! doSendMagicEffect(getThingPos(cid), 3) return false end end local cd = getPlayerStorageValue(attacker, conds["Miss"]) local cd2 = getPlayerStorageValue(attacker, conds["Confusion"]) local cd3 = getPlayerStorageValue(attacker, conds["Stun"]) if cd >= 0 or cd2 >= 0 or cd3 >= 0 then end end -------------------------------------------------- local valor = value if multiplier == 1.5 and poketype2 == "no type" then multiplier = 2 elseif multiplier == 1.5 and poketype2 ~= "no type" then multiplier = 1.75 elseif multiplier == 1.25 then multiplier = 1 end -------------------------------------------------- if isSummon(cid) and isSummon(attacker) then if getCreatureMaster(cid) == getCreatureMaster(attacker) then return false end if canAttackOther(cid, attacker) == "Cant" then return false end end valor = valor * multiplier if isSummon(attacker) then valor = valor * getHappinessRate(attacker) else valor = valor end valor = math.floor(valor) if combat == COMBAT_PHYSICALDAMAGE then local value = getOffense(attacker) > 1000 and 3 or 2 block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid))) --alterado v1.9 testem essa nova formula plzzz '--' valor = (getOffense(attacker)/value) * block if valor <= 0 then valor = math.random(5, 10) --alterado v1.9 end if isInArray(specialabilities["counter"], getCreatureName(cid)) then if math.random(1, 100) <= 10 then doCreatureAddHealth(attacker, -valor, 3, 180) valor = 0 doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215) end end else valor = valor / getDefense(cid) end -------------------------Edited CLAN SYSTEM----------------------------------- if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk") elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2)) end ----------------------------------------------------------------------- ---------------------- FEAR / ROAR ------------------------------------ if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then return true end -------------------------------------------------------------------------- if damageCombat == GROUNDDAMAGE then if isInArray(specialabilities["levitate"], getCreatureName(cid)) then valor = 0 end end ----------------------------------------------------------------------------- local p = getThingPos(cid) if p.x == 1 and p.y == 1 and p.z == 10 then return false end if getPlayerStorageValue(cid, 9658783) == 1 then return false --imune end ----------------------------------------------------------------------------- --------------- FIGHT MODE ----------------------- if useOTClient then if isSummon(cid) then local master = getCreatureMaster(cid) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end if isSummon(attacker) then local master = getCreatureMaster(attacker) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end end ----------------------------------------------------------------------------- if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) end end valor = math.floor(valor) ------------------ SKILLs Q CURAM O ATTACKER --------------------------------- local function doHeal(cid, amount) if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then amount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid)) end if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then doCreatureAddHealth(cid, amount) doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) end end if damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE then if getPlayerStorageValue(attacker, 95487) >= 1 then doHeal(attacker, valor) setPlayerStorageValue(attacker, 95487, -1) end elseif damageCombat == SEED_BOMBDAMAGE then doHeal(attacker, valor) end -------------------------------------------- ----------SACRED FIRE----------------------- if combat == SACREDDAMAGE and not ehNPC(cid) then local ret = {} ret.id = cid ret.cd = 9 ret.check = getPlayerStorageValue(cid, conds["Silence"]) ret.eff = 39 ret.cond = "Silence" doCondition2(ret) elseif combat == MUDBOMBDAMAGE and not ehNPC(cid) then local ret = {} ret.id = cid ret.cd = 9 ret.eff = 34 ret.check = getPlayerStorageValue(cid, conds["Miss"]) ret.spell = "Mud Bomb" --alterado v1.9 doCondition2(ret) end --------------------------------------------- --------------Passiva Lifesteal Clobat------------ if combat == COMBAT_PHYSICALDAMAGE then if getCreatureName(attacker) == "Crobat" then doCreatureAddHealth(attacker, math.floor(valor)) doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30) end end -------------------------------------------- valor = math.abs(valor) --alterado v1.9 if isSummon(attacker) then if combat == COMBAT_PHYSICALDAMAGE then doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) else doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255) end else if combat ~= COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(cid, -valor, 3, combats[damageCombat].cor) else doCreatureAddHealth(cid, -valor, 3, races[getMonsterInfo(getCreatureName(cid)).race].cor) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) end if isSummon(cid) and valor ~= 0 then addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end end if damageCombat == FIREDAMAGE and not isBurning(cid) then local ret = {} ret.id = cid ret.cd = math.random(5, 12) ret.check = getPlayerStorageValue(cid, conds["Burn"]) ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker) ret.cond = "Burn" doCondition2(ret) elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then local ret = {} ret.id = cid ret.cd = math.random(6, 15) ret.check = getPlayerStorageValue(cid, conds["Poison"]) local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker) ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2) ret.cond = "Poison" doCondition2(ret) end --[[---------------CD BAR----------------------- if isSummon(cid) then doCreatureExecuteTalkAction(getCreatureMaster(cid), "/pokeread") end ]] ------------------------------------POTIONS------------------------------------------- if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then if getPlayerStorageValue(cid, 173) >= 1 then if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then setPlayerStorageValue(cid, 173, -1) doSendAnimatedText(getThingPos(cid), "Lost Heal", 144) end end end ----------------------------------------PASSIVAS------------------------------------- -------------------------------------------Counter Helix------------------------------------ if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] then docastspell(cid, "Counter Helix") end -------------------------------------------Lava Counter/Electricity---------------------------- if passivesChances["Fire_Thunder"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Fire_Thunder"][getCreatureName(cid)] then docastspell(cid, "Lava-Electricity") end ---------------------------------------Stunning Confusion----------------------------------------- if passivesChances["Stunning"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning"][getCreatureName(cid)] then docastspell(cid, "Stunning Confusion") end -----------------------------------------Groundshock----------------------------------- if passivesChances["Groundshock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Groundshock"][getCreatureName(cid)] then docastspell(cid, "Groundshock") end --------------------------------------Electric Charge--------------------------------------------- if passivesChances["Electric Charge"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Electric Charge"][getCreatureName(cid)] then docastspell(cid, "Electric Charge", 0, 0) end -------------------------------------Melody------------------------------------ if passivesChances["Melody"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Melody"][getCreatureName(cid)] then docastspell(cid, "Melody") end ------------------------------------- Dragon Fury / Fury --------------------------------------- if passivesChances["Dragon Fury"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Dragon Fury"][getCreatureName(cid)] then docastspell(cid, "Dragon Fury", 0, 0) end ------------------------------------- Mega Drain --------------------------------------- if passivesChances["Mega Drain"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mega Drain"][getCreatureName(cid)] then docastspell(cid, "Mega Drain") end ------------------------------------- Spores Reaction --------------------------------------- if passivesChances["Spores Reaction"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Spores Reaction"][getCreatureName(cid)] then docastspell(cid, "Spores Reaction") end ------------------------------------ Amnesia ---------------------------------------- if passivesChances["Amnesia"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Amnesia"][getCreatureName(cid)] then docastspell(cid, "Amnesia", 0, 0) end ----------------------------------- Zen Mind ----------------------------------------- if passivesChances["Zen Mind"][getCreatureName(cid)] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][getCreatureName(cid)] then docastspell(cid, "Zen Mind", 0, 0) end ---------------------------------- Mirror Coat --------------------------------------- if passivesChances["Mirror Coat"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mirror Coat"][getCreatureName(cid)] then docastspell(cid, "Mirror Coat", 0, 0) end --------------------------------- Illusion ----------------------------------------- return false end
Postado Dezembro 25, 2020 4 anos Autor 2 minutos atrás, Nysman disse: Pô vi agora que mandei errado, era esse: Ocultar conteúdo local combats = { [PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC}, [GRASSDAMAGE] = {cor = COLOR_GRASS}, [POISONEDDAMAGE] = {cor = COLOR_GRASS}, [FIREDAMAGE] = {cor = COLOR_FIRE2}, [BURNEDDAMAGE] = {cor = COLOR_BURN}, [WATERDAMAGE] = {cor = COLOR_WATER}, [ICEDAMAGE] = {cor = COLOR_ICE}, [NORMALDAMAGE] = {cor = COLOR_NORMAL}, [FLYDAMAGE] = {cor = COLOR_FLYING}, [GHOSTDAMAGE] = {cor = COLOR_GHOST}, [GROUNDDAMAGE] = {cor = COLOR_GROUND}, [ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC}, [ROCKDAMAGE] = {cor = COLOR_ROCK}, [BUGDAMAGE] = {cor = COLOR_BUG}, [FIGHTDAMAGE] = {cor = COLOR_FIGHTING}, [DRAGONDAMAGE] = {cor = COLOR_DRAGON}, [POISONDAMAGE] = {cor = COLOR_POISON}, [DARKDAMAGE] = {cor = COLOR_DARK}, [STEELDAMAGE] = {cor = COLOR_STEEL}, [MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC}, [DARK_EYEDAMAGE] = {cor = COLOR_GHOST}, [SEED_BOMBDAMAGE] = {cor = COLOR_GRASS}, [SACREDDAMAGE] = {cor = COLOR_FIRE2}, [MUDBOMBDAMAGE] = {cor = COLOR_GROUND}, --alterado v1.9 } local function sendPlayerDmgMsg(cid, text) if not isCreature(cid) then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text) end local races = { [4] = {cor = COLOR_FIRE2}, [6] = {cor = COLOR_WATER}, [7] = {cor = COLOR_NORMAL}, [8] = {cor = COLOR_FIRE2}, [9] = {cor = COLOR_FIGHTING}, [10] = {cor = COLOR_FLYING}, [11] = {cor = COLOR_GRASS}, [12] = {cor = COLOR_POISON}, [13] = {cor = COLOR_ELECTRIC}, [14] = {cor = COLOR_GROUND}, [15] = {cor = COLOR_PSYCHIC}, [16] = {cor = COLOR_ROCK}, [17] = {cor = COLOR_ICE}, [18] = {cor = COLOR_BUG}, [19] = {cor = COLOR_DRAGON}, [20] = {cor = COLOR_GHOST}, [21] = {cor = COLOR_STEEL}, [22] = {cor = COLOR_DARK}, [1] = {cor = 180}, [2] = {cor = 180}, [3] = {cor = 180}, [5] = {cor = 180}, } local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE} local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE} local ignored = {POISONEDDAMAGE, BURNEDDAMAGE} local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE} function onStatsChange(cid, attacker, type, combat, value) if combat == FLYSYSTEMDAMAGE then return false end if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV if not isCreature(attacker) then if not isInArray(fixdamages, combat) and combats[combat] then doSendAnimatedText(getThingPos(cid), value, combats[combat].cor) end return true end local damageCombat = combat -------------------------------------------------- if type == STATSCHANGE_HEALTHGAIN then if cid == attacker then return true end if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then return false end return true end -------------------------------------------------- if isMonster(cid) then local valor = value if not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) doCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor) return false elseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor) return false end end -------------------------------------------------- if isPlayer(attacker) then local valor = value if valor > getCreatureHealth(cid) then valor = getCreatureHealth(cid) end if combat == COMBAT_PHYSICALDAMAGE then return false end if combat == PHYSICALDAMAGE then doSendMagicEffect(getThingPos(cid), 3) doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor) end if #getCreatureSummons(attacker) > 0 then if pokes[getCreatureName(cid)].type == "fire" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == pokes[getCreatureName(cid)].type then if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "ghost" then if pokes[getCreatureName(getCreatureSummons(attacker)[1])].type ~= "dragon" then valor = math.ceil(valor / 3) end end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" and pokes[getCreatureName(cid)].type == "ghost" then valor = 500 + valor *2 elseif pokes[getCreatureName(cid)].type == "water" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "ground" and pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" then return false elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "normal" and pokes[getCreatureName(cid)].type == "ghost" then return false elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "ice" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fire" and pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "water" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "electric" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "poison" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "grass" and pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ice" then if pokes[getCreatureName(cid)].type == "fire" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "water" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "grass" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor * 1.25) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "fighting" then if pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "dark" or pokes[getCreatureName(cid)].type == "steel" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" or pokes[getCreatureName(cid)].type == "psychic" or pokes[getCreatureName(cid)].type == "fairy" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "ghost" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "poison" then if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fairy" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "ground" or pokes[getCreatureName(cid)].type == "rock" or pokes[getCreatureName(cid)].type == "ghost" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "steel" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ground" then if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor / 3) elseif pokes[getCreatureName(cid)].type == "flying" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "flying" then if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "electric" or pokes[getCreatureName(cid)].type == "rock" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "psychic" then if pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "poison"then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "psychic" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "bug" then if pokes[getCreatureName(cid)].type == "grass" or pokes[getCreatureName(cid)].type == "poison" or pokes[getCreatureName(cid)].type == "psychic" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "flying" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "rock" then if pokes[getCreatureName(cid)].type == "fire" or pokes[getCreatureName(cid)].type == "ice" or pokes[getCreatureName(cid)].type == "flying" or pokes[getCreatureName(cid)].type == "bug" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "fighting" or pokes[getCreatureName(cid)].type == "ground" then valor = math.ceil(valor / 3) end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "ghost" then if pokes[getCreatureName(cid)].type == "ghost" then valor = math.ceil(valor * 1.25) elseif pokes[getCreatureName(cid)].type == "normal" or pokes[getCreatureName(cid)].type == "psychic" then return false end elseif pokes[getCreatureName(getCreatureSummons(attacker)[1])].type == "dragon" then if pokes[getCreatureName(cid)].type == "dragon" then valor = math.ceil(valor * 1.25) end end end if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor) end if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".") end return true end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then return false end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then if isSummon(attacker) or isPlayer(attacker) then if canAttackOther(cid, attacker) == "Cant" then return false end end local valor = 0 if combat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) else valor = getSpecialAttack(attacker) end valor = valor * playerDamageReduction valor = valor * math.random(83, 117) / 100 valor = valor / math.ceil(getPlayerLevel(cid) / 55) if valor >= getCreatureHealth(cid) then valor = getCreatureHealth(cid) end valor = math.floor(valor) if valor >= getCreatureHealth(cid) then if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then setPlayerStorageValue(cid, 6598754, -1) setPlayerStorageValue(cid, 6598755, -1) doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, posBackPVP, false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) return false --alterado v1.8 end if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 17000, 0) setPlayerStorageValue(cid, 17001, 0) setPlayerStorageValue(cid, 63215, -1) doChangeSpeed(cid, PlayerSpeed) local item = getPlayerSlotItem(cid, ? local btype = getPokeballType(item.itemid) if #getCreatureSummons(cid) <= 0 then if isInArray(pokeballs[btype].all, item.itemid) then doTransformItem(item.uid, pokeballs[btype].off) doItemSetAttribute(item.uid, "hp", 0) end end end if getPlayerStorageValue(cid, 22545) == 1 then if getGlobalStorageValue(22550) == 1 then doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!") doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) endGoldenArena() return false --alterado v1.8 else setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) return true end end if getPlayerStorageValue(cid, 98796) >= 1 then setPlayerStorageValue(cid, 98796, -1) setPlayerStorageValue(cid, 98797, -1) --alterado v1.8 doTeleportThing(cid, SafariOut, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 27, "You die in the saffari... Best luck in the next time!") return false --alterado v1.8 end local corpse = doCreateItem(3058, 1, getThingPos(cid)) doDecayItem(corpse) doItemSetAttribute(corpse, "pName", getCreatureName(cid)) --alterado v1.7 coloca corpse quando o player morre! doItemSetAttribute(corpse, "attacker", getCreatureName(attacker)) doItemSetAttribute(corpse, "article", getPlayerSex(cid) == 0 and "She" or "He") if getPlayerStorageValue(cid, Agatha.stoIni) >= 1 and getPlayerStorageValue(cid, Agatha.stoIni) <= 10 then setPlayerStorageValue(cid, Agatha.stoIni, -1) setPlayerStorageValue(cid, Agatha.stoRec, -1) setPlayerStorageValue(cid, Agatha.stoPer, -1) setPlayerStorageValue(cid, Agatha.stoEni, -1) --alterado v1.9 agatha quest setPlayerStorageValue(cid, Agatha.stoRes, -1) end end doCreatureAddHealth(cid, -valor, 3, 180) if not isPlayer(cid) then addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end return false end -------------------------------------------------- if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then if isPlayer(cid) then return false end if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if ehMonstro(cid) and ehMonstro(attacker) and not isSummon(cid) and not isSummon(attacker) then return false --alterado v1.9 /\ end -------------------------------------------------- --------------------REFLECT----------------------- if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then if not isInArray({"Team Claw", "Team Slice"}, getPlayerStorageValue(attacker, 21102)) then doSendMagicEffect(getThingPosWithDebug(cid), 135) doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS) addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102)) if getCreatureName(cid) == "Wobbuffet" then doRemoveCondition(cid, CONDITION_OUTFIT) end setPlayerStorageValue(cid, 21099, -1) setPlayerStorageValue(cid, 21100, 1) setPlayerStorageValue(cid, 21101, attacker) setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f) setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType) return false end end ------------------------------------------------- local multiplier = 1 if isCreature(cid) then poketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2 end if not poketype1 or not poketype2 then return false end if getCreatureCondition(cid, CONDITION_INVISIBLE) then return false end if combat == COMBAT_PHYSICALDAMAGE then if isGhostPokemon(cid) then if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --passiva Foresight!! doSendMagicEffect(getThingPos(cid), 3) return false end end local cd = getPlayerStorageValue(attacker, conds["Miss"]) local cd2 = getPlayerStorageValue(attacker, conds["Confusion"]) local cd3 = getPlayerStorageValue(attacker, conds["Stun"]) if cd >= 0 or cd2 >= 0 or cd3 >= 0 then end end -------------------------------------------------- local valor = value if multiplier == 1.5 and poketype2 == "no type" then multiplier = 2 elseif multiplier == 1.5 and poketype2 ~= "no type" then multiplier = 1.75 elseif multiplier == 1.25 then multiplier = 1 end -------------------------------------------------- if isSummon(cid) and isSummon(attacker) then if getCreatureMaster(cid) == getCreatureMaster(attacker) then return false end if canAttackOther(cid, attacker) == "Cant" then return false end end valor = valor * multiplier if isSummon(attacker) then valor = valor * getHappinessRate(attacker) else valor = valor end valor = math.floor(valor) if combat == COMBAT_PHYSICALDAMAGE then local value = getOffense(attacker) > 1000 and 3 or 2 block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid))) --alterado v1.9 testem essa nova formula plzzz '--' valor = (getOffense(attacker)/value) * block if valor <= 0 then valor = math.random(5, 10) --alterado v1.9 end if isInArray(specialabilities["counter"], getCreatureName(cid)) then if math.random(1, 100) <= 10 then doCreatureAddHealth(attacker, -valor, 3, 180) valor = 0 doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215) end end else valor = valor / getDefense(cid) end -------------------------Edited CLAN SYSTEM----------------------------------- if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk") elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2)) end ----------------------------------------------------------------------- ---------------------- FEAR / ROAR ------------------------------------ if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then return true end -------------------------------------------------------------------------- if damageCombat == GROUNDDAMAGE then if isInArray(specialabilities["levitate"], getCreatureName(cid)) then valor = 0 end end ----------------------------------------------------------------------------- local p = getThingPos(cid) if p.x == 1 and p.y == 1 and p.z == 10 then return false end if getPlayerStorageValue(cid, 9658783) == 1 then return false --imune end ----------------------------------------------------------------------------- --------------- FIGHT MODE ----------------------- if useOTClient then if isSummon(cid) then local master = getCreatureMaster(cid) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end if isSummon(attacker) then local master = getCreatureMaster(attacker) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end end ----------------------------------------------------------------------------- if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) end end valor = math.floor(valor) ------------------ SKILLs Q CURAM O ATTACKER --------------------------------- local function doHeal(cid, amount) if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then amount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid)) end if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then doCreatureAddHealth(cid, amount) doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) end end if damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE then if getPlayerStorageValue(attacker, 95487) >= 1 then doHeal(attacker, valor) setPlayerStorageValue(attacker, 95487, -1) end elseif damageCombat == SEED_BOMBDAMAGE then doHeal(attacker, valor) end -------------------------------------------- ----------SACRED FIRE----------------------- if combat == SACREDDAMAGE and not ehNPC(cid) then local ret = {} ret.id = cid ret.cd = 9 ret.check = getPlayerStorageValue(cid, conds["Silence"]) ret.eff = 39 ret.cond = "Silence" doCondition2(ret) elseif combat == MUDBOMBDAMAGE and not ehNPC(cid) then local ret = {} ret.id = cid ret.cd = 9 ret.eff = 34 ret.check = getPlayerStorageValue(cid, conds["Miss"]) ret.spell = "Mud Bomb" --alterado v1.9 doCondition2(ret) end --------------------------------------------- --------------Passiva Lifesteal Clobat------------ if combat == COMBAT_PHYSICALDAMAGE then if getCreatureName(attacker) == "Crobat" then doCreatureAddHealth(attacker, math.floor(valor)) doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30) end end -------------------------------------------- valor = math.abs(valor) --alterado v1.9 if isSummon(attacker) then if combat == COMBAT_PHYSICALDAMAGE then doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) else doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255) end else if combat ~= COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(cid, -valor, 3, combats[damageCombat].cor) else doCreatureAddHealth(cid, -valor, 3, races[getMonsterInfo(getCreatureName(cid)).race].cor) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) end if isSummon(cid) and valor ~= 0 then addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end end if damageCombat == FIREDAMAGE and not isBurning(cid) then local ret = {} ret.id = cid ret.cd = math.random(5, 12) ret.check = getPlayerStorageValue(cid, conds["Burn"]) ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker) ret.cond = "Burn" doCondition2(ret) elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then local ret = {} ret.id = cid ret.cd = math.random(6, 15) ret.check = getPlayerStorageValue(cid, conds["Poison"]) local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker) ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2) ret.cond = "Poison" doCondition2(ret) end --[[---------------CD BAR----------------------- if isSummon(cid) then doCreatureExecuteTalkAction(getCreatureMaster(cid), "/pokeread") end ]] ------------------------------------POTIONS------------------------------------------- if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then if getPlayerStorageValue(cid, 173) >= 1 then if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then setPlayerStorageValue(cid, 173, -1) doSendAnimatedText(getThingPos(cid), "Lost Heal", 144) end end end ----------------------------------------PASSIVAS------------------------------------- -------------------------------------------Counter Helix------------------------------------ if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] then docastspell(cid, "Counter Helix") end -------------------------------------------Lava Counter/Electricity---------------------------- if passivesChances["Fire_Thunder"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Fire_Thunder"][getCreatureName(cid)] then docastspell(cid, "Lava-Electricity") end ---------------------------------------Stunning Confusion----------------------------------------- if passivesChances["Stunning"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning"][getCreatureName(cid)] then docastspell(cid, "Stunning Confusion") end -----------------------------------------Groundshock----------------------------------- if passivesChances["Groundshock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Groundshock"][getCreatureName(cid)] then docastspell(cid, "Groundshock") end --------------------------------------Electric Charge--------------------------------------------- if passivesChances["Electric Charge"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Electric Charge"][getCreatureName(cid)] then docastspell(cid, "Electric Charge", 0, 0) end -------------------------------------Melody------------------------------------ if passivesChances["Melody"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Melody"][getCreatureName(cid)] then docastspell(cid, "Melody") end ------------------------------------- Dragon Fury / Fury --------------------------------------- if passivesChances["Dragon Fury"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Dragon Fury"][getCreatureName(cid)] then docastspell(cid, "Dragon Fury", 0, 0) end ------------------------------------- Mega Drain --------------------------------------- if passivesChances["Mega Drain"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mega Drain"][getCreatureName(cid)] then docastspell(cid, "Mega Drain") end ------------------------------------- Spores Reaction --------------------------------------- if passivesChances["Spores Reaction"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Spores Reaction"][getCreatureName(cid)] then docastspell(cid, "Spores Reaction") end ------------------------------------ Amnesia ---------------------------------------- if passivesChances["Amnesia"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Amnesia"][getCreatureName(cid)] then docastspell(cid, "Amnesia", 0, 0) end ----------------------------------- Zen Mind ----------------------------------------- if passivesChances["Zen Mind"][getCreatureName(cid)] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][getCreatureName(cid)] then docastspell(cid, "Zen Mind", 0, 0) end ---------------------------------- Mirror Coat --------------------------------------- if passivesChances["Mirror Coat"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mirror Coat"][getCreatureName(cid)] then docastspell(cid, "Mirror Coat", 0, 0) end --------------------------------- Illusion ----------------------------------------- return false end Irei testar, sabe arruma o 1?
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.