Ir para conteúdo

ivan2801

Membro
  • Registro em

  • Última visita

  1. ninguem pra me ajudar? =/
  2. Alguem poderia me ajudar? Nenhum pokemon da outland está tomando dano. ai da um erro na distro. [Error - CreatureScript Interface] data/creaturescripts/scripts/player/statsChange.lua:onStatsChange Description: data/lib/101 - Drazyn Lib.lua:474: attempt to index field '?' (a nil value) stack traceback: data/lib/101 - Drazyn Lib.lua:474: in function 'getPokemonDisadvantage' data/creaturescripts/scripts/player/statsChange.lua:361: in function <data/creaturescripts/scripts/player/statsChange.lua:6> Vou enviar o arquivo 101 - drazyn e o statschange.lua function sendDittoWindow(cid, item) local pokename = tostring(getItemAttribute(item.uid, "poke")) if not isInArray({"Shiny Ditto", "Ditto"}, pokename) then return true end if not getItemAttribute(item.uid, "memory") and pokename == "Shiny Ditto" then doItemSetAttribute(item.uid, "memory", 3) end if getItemAttribute(item.uid, "memory") ~= "without" then local memory = getItemAttribute(item.uid, "memoryDitto") if not memory or memory == nil then doItemSetAttribute(item.uid, "memoryDitto", "?|?|?") memory = getItemAttribute(item.uid, "memoryDitto") end local memoryOne, memoryTwo, memoryTree = memory:explode("|")[1], memory:explode("|")[2], memory:explode("|")[3] local str = memoryOne .. "-".. memoryTwo .."-" .. memoryTree doSendPlayerExtendedOpcode(cid, 111, str) end end function isRare(itemid) return isInArray(rareItems, itemid) end local outland = {"Furious Mantine", "Brave Nidoqueen", "Wingeon Shiny Pidgeot", "Malefic Shiny Muk", "Seavell Tentacruel", "Brute Rhydon", "Raibolt Raichu", "Psy Jynx", "Capoeira Hitmontop", "Seavell Shiny Seadra", "Volcanic Charizard", "Orebound Golem", "Heavy Piloswine", "Gardestriker Ursaring", "Brave Blastoise", "Singer Wigglytuff", "Volcanic Typhlosion", "Gardestriker Shiny Snorlax", "Wingeon Shiny Dragonite", "Volcanic Magmar", "Aviator Pidgeot", "Taekwondo Hitmonlee", "Gardestriker Shiny Hitmonlee", "Brave Noctowl", "Psycraft Shiny Alakazam", "Tribal Feraligatr", "Master Stantler", "Tribal Scyther", "Furious Scyther", "Gardestriker Shiny Hitmontop", "Elder Charizard", "Enraged Typhlosion", "Trickmaster Gengar", "Brave Charizard", "Undefeated Machamp", "Orebound Aerodactyl", "Wingeon Dragonite", "Roll Donphan", "War Gyarados", "Ancient Kingdra", "Elder Raichu", "Elder Pidgeot", "Brute Ursaring", "Elder Venusaur", "Dragon Machamp", "Master Alakazam", "Seavell Blastoise", "Naturia Shiny Venusaur", "Moon Clefable", "Elder Dragonite", "Magnet Electabuzz", "Wardog Arcanine", "Raibolt Electabuzz", "Volcanic Shiny Arcanine", "Metal Scizor", "Bone Marowak", "Enigmatic Girafarig", "Orebound Shiny Golem", "Malefic Shiny Gengar", "Elder Tyranitar", "Seavell Lapras", "Hard Golem", "Raibolt Shiny Jolteon", "Elder Blastoise", "Evil Cloyster", "Iron Steelix", "Banshee Misdreavus", "Furious Ampharos", "Ancient Dragonite", "Naturia Shiny Scyther", "Lava Magmar", "Orebound Shiny Marowak", "Brave Venusaur", "Elder Pinsir", "Elder Arcanine", "Metal Skarmory", "Ancient Meganium", "Raibolt Shiny Raichu", "Boxer Hitmonchan", "War Heracross", "Seavell Shiny Tentacruel", "Psycraft Alakazam", "Ancient Alakazam", "Malefic Umbreon", "Wingeon Shiny Fearow", "Elder Gengar", "Raibolt Shiny Electabuzz", "Hungry Snorlax", "Naturia Venusaur", "Naturia Shiny Tangela", "War Granbull", "Charged Raichu", "Elder Tangela", "Seavell Jynx", "Orebound Golden Rhydon", "Elder Electabuzz", "Gardestriker Shiny Hitmonchan", "Tribal Xatu", "Wingeon Shiny Farfetch'd", "Dark Crobat", "Elder Muk", "Freezing Dewgong", "Octopus Octillery", "Elder Tentacruel", "Volcanic Arcanine", "Furious Sandslash", "Elder Jynx", "Naturia Scyther", "Psycraft Shiny Hypno", "Seavell Shiny Blastoise", "Volcanic Shiny Charizard", "Malefic Misdreavus", "Malefic Gengar", "Milch-Miltank", "Elder Marowak", "Psycraft Shiny Abra", "Psycraft Slowking", "Brave Nidoking"} function isPokeOutland(name) return isInArray(outland, doCorrectString(name)) end function isBoss(name) return isInArray(bossName, doCorrectString(name)) end function isShinyCharm(name) return isInArray(shinyCharm, doCorrectString(name)) end function isHoenn(name) return isInArray(hoeenPoke, doCorrectString(name)) end function getAccountStorageValue(accid, key) local value = db.getResult("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key .. " LIMIT 1;") if(value:getID() ~= -1) then return value:getDataInt("value") else return -1 end value:free() end function setVipSkull(cid) if isPremium(cid) and not isInArray({SKULL_WHITE, 1, 2, 5}, getCreatureSkullType(cid)) then doCreatureSetSkullType(cid, 5) end end function getPlayersInArea(fromPos, toPos) local players = {} for _, pid in ipairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), fromPos, toPos) then table.insert(players, pid) end end return players end function doPlayerAddTableItems(cid, table) if isPlayer(cid) then for _, item in pairs(table) do doPlayerAddItem(cid, item[1], item[2]) end end end function getPlayerItems(cid, id) -- By OrochiElf local retItems = {} for slots = 1, 10 do local item = getPlayerSlotItem(cid, slots) if isContainer(item.uid) then for slotsBp = 0, getContainerSize(item.uid) - 1 do local itemBp = getContainerItem(item.uid, slotsBp) if id ~= nil then if itemBp.itemid == id then table.insert(retItems, itemBp) end else table.insert(retItems, itemBp) end end end if id ~= nil then if item.itemid == id then table.insert(retItems, item) end else table.insert(retItems, item) end end return retItems end function setAccountStorageValue(accid, key, value) local getvalue = db.getResult("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key .. " LIMIT 1;") if(getvalue:getID() ~= -1) then db.executeQuery("UPDATE `account_storage` SET `value` = " .. accid .. " WHERE `key`=" .. key .. " LIMIT 1');") getvalue:free() return 1 else db.executeQuery("INSERT INTO `account_storage` (`account_id`, `key`, `value`) VALUES (" .. accid .. ", " .. key .. ", '"..value.."');") return 1 end end doAreaCombatHealth = doCombatAreaHealth function createBall(cid, name, boost, unique) local mypoke = pokes[name] local item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, 2219, 1) doItemSetAttribute(item, "ball", "poke") doItemSetAttribute(item, "SmeargleID", math.random(5, 8)) doSetAttributesBallsByPokeName(cid, item, name) if boost and tonumber(boost) > 0 and tonumber(boost) <= 50 then doItemSetAttribute(item, "boost", tonumber(boost)) end if name == "Shiny Hitmonchan" or name == "Hitmonchan" then doItemSetAttribute(item, "hands", 0) end doItemSetAttribute(item, "description", "Contains a "..name..".") doItemSetAttribute(item, "fakedesc", "Contains a "..name..".") local x = pokeballs[name:lower()] or pokeballs[doCorrectString(name)] doTransformItem(item, x.on) if unique and unique == "true" then doItemSetAttribute(item, "unique", 1) end return item end function getPlayerTotalExtraExperience(cid) local percent = 1 if isPremium(cid) then percent = percent + 0.10 -- + 10% de experiência end if getPlayerStorageValue(cid, 45144) - os.time() > 1 then percent = percent + (tonumber(getPlayerStorageValue(cid, 45145)) / 100) end return percent end function getPlayerBlessPercent(cid) return (getPlayerStorageValue(cid, 50405) ~= -1 and getPlayerStorageValue(cid, 50405)/100 or 0) end function isDay() local hour = (os.date("*t").hour) return hour >= 6 and hour < 18 end function isNight() return not isDay() end function getNumberMonth() return os.date("%m") end function getNumberYear() return os.date("%Y") end function isHour() return os.date("%X") end function getNumberDay() return os.date("%d") end function getSeason() if isInArray({2, 3, 4}, getNumberMonth()) then est = "Primavera" elseif isInArray({5, 6, 7}, getNumberMonth()) then est = "Verão" elseif isInArray({8, 9, 10}, getNumberMonth()) then est = "Outono" elseif isInArray({11, 12, 1}, getNumberMonth()) then est = "Inverno" end return est end --[[poketypes = { ["none"] = { super = {}, weak = {}, non = {}, }, ["no type"] = { super = {}, weak = {}, non = {}, }, ["normal"] = { super = {}, weak = {"rock", "steel"}, non = {"ghost"}, }, ["fighting"] = { super = {"normal", "rock", "steel", "ice"}, weak = {"flying", "poison", "bug", "psychic", "fairy"}, non = {}, }, ["flying"] = { super = {"fighting", "bug", "grass"}, -- 0.5x weak = {"rock", "eletric"}, -- 2x non = {"ground"}, }, ["fairy"] = { super = {"fighting", "dragon", "dark"}, weak = {"poison", "steel", "fire"}, non = {}, }, ["dark"] = { super = {"ghost", "psychic"}, weak = {"ghost", "fighting", "dark", "fairy"}, non = {"psychic"}, }, ["dragon"] = { super = {"dragon"}, weak = {"steel"}, non = {"fairy"}, }, ["ice"] = { super = {"flying", "ground", "grass", "dragon"}, weak = {"steel", "fire", "water", "ice"}, non = {}, }, ["psychic"] = { super = {"fighting", "poison"}, weak = {"steel", "psychic"}, non = {}, }, ["electric"] = { super = {"flying", "water"}, weak = {"grass", "eletric"}, non = {}, }, ["grass"] = { super = {"ground", "rock", "water"}, weak = {"flying", "poison", "bug", "steel", "fire", "grass", "dragon"}, non = {}, }, ["water"] = { super = {"ground", "rock", "fire"}, weak = {"water", "grass", "electric"}, non = {}, }, ["fire"] = { super = {"bug", "steel", "grass", "ice"}, weak = {"rock", "fire", "water", "dragon"}, non = {}, }, ["steel"] = { super = {"rock", "ice", "fairy"}, weak = {"steel", "fire", "water", "eletric"}, non = {"poison"}, }, ["ghost"] = { super = {"ghost", "psychic"}, weak = {"dark"}, non = {"normal", "fighting"}, }, ["bug"] = { super = {"grass", "psychic", "dark"}, weak = {"fighting", "flying", "poison", "ghost", "steel", "fire", "fairy"}, non = {}, }, ["rock"] = { super = {"flying", "bug", "fire", "ice"}, weak = {"steel", "fighting", "ground", "steel", "water"}, non = {}, }, ["ground"] = { super = {"poison", "rock", "steel", "fire", "eletric"}, weak = {"bug", "grass", "water"}, non = {"electric"}, }, ["poison"] = { super = {"grass", "fairy"}, weak = {"poison", "ground", "rock"}, non = {}, } } ]]-- poketypes = { ["none"] = { super = {}, weak = {}, non = {}, }, ["no type"] = { super = {}, weak = {}, non = {}, }, ["normal"] = { super = {}, weak = {ROCKDAMAGE, STEELDAMAGE}, non = {1, GHOSTDAMAGE}, }, ["fighting"] = { super = {NORMALDAMAGE, ROCKDAMAGE, STEELDAMAGE, ICEDAMAGE}, weak = {FLYINGDAMAGE, POISONDAMAGE, BUGDAMAGE, PSYCHICDAMAGE, FAIRYDAMAGE}, non = {}, }, ["flying"] = { super = {FIGHTINGDAMAGE, BUGDAMAGE, GRASSDAMAGE}, -- 0.5x weak = {ROCKDAMAGE, ELECTRICDAMAGE}, -- 2x non = {GROUNDDAMAGE}, }, ["fairy"] = { super = {FIGHTINGDAMAGE, DRAGONDAMAGE, DARKDAMAGE}, weak = {POISONDAMAGE, STEELDAMAGE, FIREDAMAGE}, non = {}, }, ["dark"] = { super = {GHOSTDAMAGE, PSYCHICDAMAGE}, weak = {GHOSTDAMAGE, FIGHTINGDAMAGE, DARKDAMAGE, FAIRYDAMAGE}, non = {PSYCHICDAMAGE}, }, ["dragon"] = { super = {DRAGONDAMAGE}, weak = {STEELDAMAGE}, non = {FAIRYDAMAGE}, }, ["ice"] = { super = {FLYINGDAMAGE, GROUNDDAMAGE, GRASSDAMAGE, DRAGONDAMAGE}, weak = {STEELDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE}, non = {}, }, ["psychic"] = { super = {FIGHTINGDAMAGE, POISONDAMAGE}, weak = {STEELDAMAGE, PSYCHICDAMAGE}, non = {}, }, ["electric"] = { super = {FLYINGDAMAGE, WATERDAMAGE}, weak = {GRASSDAMAGE, ELECTRICDAMAGE}, non = {}, }, ["grass"] = { super = {GROUNDDAMAGE, ROCKDAMAGE, WATERDAMAGE}, weak = {FLYINGDAMAGE, POISONDAMAGE, BUGDAMAGE, STEELDAMAGE, FIREDAMAGE, GRASSDAMAGE, DRAGONDAMAGE}, non = {}, }, ["water"] = { super = {GROUNDDAMAGE, ROCKDAMAGE, FIREDAMAGE}, weak = {WATERDAMAGE, GRASSDAMAGE, ELECTRICDAMAGE}, non = {}, }, ["fire"] = { super = {BUGDAMAGE, STEELDAMAGE, GRASSDAMAGE, ICEDAMAGE}, weak = {ROCKDAMAGE, FIREDAMAGE, WATERDAMAGE, DRAGONDAMAGE}, non = {}, }, ["steel"] = { super = {ROCKDAMAGE, ICEDAMAGE, FAIRYDAMAGE}, weak = {STEELDAMAGE, FIREDAMAGE, WATERDAMAGE, ELECTRICDAMAGE}, non = {POISONDAMAGE}, }, ["ghost"] = { super = {GHOSTDAMAGE, PSYCHICDAMAGE}, weak = {DARKDAMAGE}, non = {1, NORMALDAMAGE, FIGHTINGDAMAGE}, }, ["bug"] = { super = {GRASSDAMAGE, PSYCHICDAMAGE, DARKDAMAGE}, weak = {FIGHTINGDAMAGE, FLYINGDAMAGE, POISONDAMAGE, GHOSTDAMAGE, STEELDAMAGE, FIREDAMAGE, FAIRYDAMAGE}, non = {}, }, ["rock"] = { super = {FLYINGDAMAGE, BUGDAMAGE, FIREDAMAGE, ICEDAMAGE}, weak = {STEELDAMAGE, FIGHTINGDAMAGE, GROUNDDAMAGE, STEELDAMAGE, WATERDAMAGE}, non = {}, }, ["ground"] = { super = {POISONDAMAGE, ROCKDAMAGE, STEELDAMAGE, FIREDAMAGE, ELECTRICDAMAGE}, weak = {BUGDAMAGE, GRASSDAMAGE, WATERDAMAGE}, non = {ELECTRICDAMAGE}, }, ["poison"] = { super = {GRASSDAMAGE, FAIRYDAMAGE}, weak = {POISONDAMAGE, GROUNDDAMAGE, ROCKDAMAGE}, non = {}, } } poketypes["fly"] = poketypes["flying"] function isValueBetween(value, min, max) return (value >= min and value < max) end function getPokemonAdvantage(pokename) local pokename = doCorrectString(pokename) local stats = {} local type1 = pokes[pokename].type local type2 = pokes[pokename].type2 if type1 then for _, b in pairs(poketypes[type1].super) do table.insert(stats, b) end end if type2 then for _, b in pairs(poketypes[type2].super) do table.insert(stats, b) end end return stats end function getPokemonDisadvantage(pokename) pokename = doCorrectString(pokename) local stats = {} local type1 = pokes[pokename].type or "none" local type2 = pokes[pokename].type2 or "none" if type1 then for _, b in pairs(poketypes[type1].weak) do table.insert(stats, b) end end if type2 then for _, b in pairs(poketypes[type2].weak) do table.insert(stats, b) end end return stats end function getPokemonImunity(pokename) pokename = doCorrectString(pokename) local stats = {} local type1 = pokes[pokename].type local type2 = pokes[pokename].type2 if type1 then for _, b in pairs(poketypes[type1].non) do table.insert(stats, b) end end if type2 then for _, b in pairs(poketypes[type2].non) do table.insert(stats, b) end end return stats end waterID = {4608, 4613, 4610, 4611, 4612, 4609, 16674, 16668, 16672, 11756} taskStorages = { 432415, 431400, 431401, 431402, 431403, 431404, 431405, 431406, 431407, 431408, 431409, 431410, 431411, 431412, 431413, 431414, 431415, 431416, 431417, 431418, 431419, 431420, 431421, 431422, 431423, 431424, 431425, 431426, 431427, 431428, 431429, 431430, 431431, 431432, 431433, 431434, 431435, 431436, 431437, 431438, 431439, 431440, 431441, 431442, 431443, 431444, 431445, 431446, 431447, 431448, 431449, 431450, 431451, 431452, 431453, 431454, 431455, 431456, 431457, 431458, 431459, 431460, 431461, 431462, 431463, 431464, 431465, 431466, 431467, 431468, 431469, 431470, 431471, 431472, 431473, 431474, 431475, 431476, 431477, 431478, 431479, 431480, 431481, 431482, 431483, 431484, 431485, 431486, 431487, 431488, 431489, 431490, 431491, 431492, 431493, 431494, 431495, 431496, 431497, 431498, 431499, } stoneToString = { ["venom"] = 11443, ["leaf"] = 11441, ["water"] = 11442, ["thunder"] = 11444, ["rock"] = 11445, ["punch"] = 11446, ["fire"] = 11447, ["coccon"] = 11448, ["crystal"] = 11449, -- antiga crystal ["dark"] = 11450, ["earth"] = 11451, ["enigma"] = 11452, ["heart"] = 11453, ["ice"] = 11454, ["metal"] = 12232, ["ancient"] = 12244, ["sun"] = 12242, ["shiny"] = 19203, ["feather"] = 19202, } function isOwnPokeball(cid, pid) for _, pokeball in pairs(getPlayerPokeballs(cid)) do if pokeball.uid == pid then return true end end return false end function hasDepotTile(pos) return getTileInfo(pos).depot end function isDepot(uid) return getTileInfo(getThingPos(uid)).depot end function hasCapacityForPokeball(cid) if isPlayer(cid) then return #getPlayerPokeballs(cid) < 6 end return false end function sendPokeballToDepot(cid, ball) doPlayerSendMailByName(getCreatureName(cid), ball, 1) end function getStepDelay(cid) return math.ceil(((1000 * getItemInfo(getTileInfo(getThingPosition(cid)).itemid).speed) / getCreatureSpeed(cid)) * 1.5) end function getPositionsBetween(fromPos, toPos) local positions = {} local min, max = math.min, math.max for z = min(fromPos.z, toPos.z), max(fromPos.z, toPos.z) do for x = min(fromPos.x, toPos.x), max(fromPos.x, toPos.x) do for y = min(fromPos.y, toPos.y), max(fromPos.y, toPos.y) do table.insert(positions, {x = x, y = y, z = z}) end end end return positions end -- ((1000 * groundSpeed) / creatureSpeed) * 1.5 --[[function needStone(pokemon, boost) local pokeB = pokeboost[doCorrectString(pokemon)] if pokeB then if boost <= 5 then return pokeB.b5 elseif boost <= 7 then return pokeB.b7 elseif boost <= 12 then return pokeB.b12 elseif boost <= 15 then return pokeB.b15 elseif boost <= 20 then return pokeB.b20 elseif boost <= 25 then return pokeB.b25 elseif boost <= 28 then return pokeB.b28 elseif boost <= 30 then return pokeB.b30 elseif boost <= 35 then return pokeB.b35 elseif boost <= 38 then return pokeB.b38 elseif boost <= 40 then return pokeB.b40 elseif boost <= 45 then return pokeB.b45 elseif boost <= 48 then return pokeB.b48 else return pokeB.b50 end end end ]]-- function needStone(boost) if boost <= 3 then -- 4 return 1 elseif boost <= 7 then -- 8 return 2 elseif boost <= 12 then return 3 elseif boost <= 15 then -- 16 return 4 elseif boost <= 20 then return 5 elseif boost <= 25 then -- 24 return 6 elseif boost <= 28 then return 7 elseif boost <= 30 then -- 32 return 8 elseif boost <= 35 then -- 36 return 9 elseif boost <= 38 then -- 40 return 10 elseif boost <= 40 then -- 44, 42 return 11 elseif boost <= 45 then -- 48 return 12 elseif boost <= 48 then -- 48 return 13 else return 14 end end function doReloadPokemon(cid) if isPlayer(cid) then local pos = getCreaturePosition(getCreatureSummons(cid)[1]) local direction = getCreatureLookDirection(getCreatureSummons(cid)[1]) doRemoveCreature(getCreatureSummons(cid)[1]) doGoPokemon(cid, getPlayerSlotItem(cid, 8), false) local pk = getCreatureSummons(cid)[1] doTeleportThing(pk, pos, false) doCreatureSetLookDirection(pk, direction) end end function doReloadOTClient(cid) if isPlayer(cid) then doSendLifePokeToOTC(cid) doUpdateMoves(cid) end end function totalStonesPerBoost(boost) local count = 0 local total = 1 local final = 0 for a = 1, 50 do if count == 4 then count = 0 total = total + 1 else count = count + 1 end final = final + total end return final end function pokePrice(pokeName) local poke = doCorrectString(pokeName) if not pokePrice[poke].price then return pokeChance[poke].media end return pokePrice[poke].price end function getPokeballPrice(ball) if isPokeball(ball.itemid) then local boost = getItemAttribute(ball.uid, "boost") or 0 local poke = getItemAttribute(ball.uid, "poke") local boostHeld = 0 local heldx = getItemAttribute(ball.uid, "xHeldItem") local heldName, heldTier = string.explode((heldx or ""), "|")[1], string.explode((heldx or ""), "|")[2] if heldName == "X-Boost" then boostHeld = heldBoost[tonumber(heldTier)] end if pokeChance[poke] then local boostValue = 0 if (boost - boostHeld) > 0 then local stoneId = boostStonePray[poke][1] local stoneName = getItemNameById(stoneId) local stonePrice = priceItemsList[stoneName].price or 5000 --boostValue = needStone(poke, boost - boostHeld) * stonePrice boostValue = needStone(boost - boostHeld) * stonePrice end if pokePrice[poke] then valor = pokePrice[poke].price else valor = pokeChance[poke].media * 150 end return valor * 1.3 + boostValue end end return -1 end boostStonePray = { ["Bulbasaur"] = {leaf, boostStone}, ["Tropius"] = {leaf, boostStone}, ["Ivysaur"] = {leaf, boostStone}, ["Venusaur"] = {leaf, boostStone}, ["Charmander"] = {fire, boostStone}, ["Charmeleon"] = {fire, boostStone}, ["Charizard"] = {fire, boostStone}, ["Squirtle"] = {water, boostStone}, ["Wartortle"] = {water, boostStone}, ["Blastoise"] = {water, boostStone}, ["Caterpie"] = {coccon, boostStone}, ["Metapod"] = {coccon, boostStone}, ["Butterfree"] = {coccon, boostStone}, ["Weedle"] = {coccon, boostStone}, ["Kakuna"] = {coccon, boostStone}, ["Beedrill"] = {coccon, boostStone}, ["Pidgey"] = {heart, boostStone}, ["Pidgeotto"] = {heart, boostStone}, ["Pidgeot"] = {heart, boostStone}, ["Rattata"] = {heart, boostStone}, ["Raticate"] = {heart, boostStone}, ["Spearow"] = {heart, boostStone}, ["Fearow"] = {heart, boostStone}, ["Ekans"] = {venom, boostStone}, ["Arbok"] = {venom, boostStone}, ["Pikachu"] = {thunder, boostStone}, ["Raichu"] = {thunder, boostStone}, ["Sandshrew"] = {earth, boostStone}, ["Sandslash"] = {earth, boostStone}, ["Nidoran Female"] = {venom, boostStone}, ["Nidorina"] = {venom, boostStone}, ["Nidoqueen"] = {venom, earth, boostStone}, ["Nidoran Male"] = {venom, boostStone}, ["Nidorino"] = {venom, boostStone}, ["Nidoking"] = {venom, earth, boostStone}, ["Clefairy"] = {heart, boostStone}, ["Clefable"] = {heart, boostStone}, ["Vulpix"] = {fire, boostStone}, ["Ninetales"] = {fire, boostStone}, ["Jigglypuff"] = {heart, boostStone}, ["Wigglytuff"] = {heart, boostStone}, ["Zubat"] = {venom, boostStone}, ["Golbat"] = {venom, boostStone}, ["Oddish"] = {leaf, venom, boostStone}, ["Gloom"] = {leaf, venom, boostStone}, ["Vileplume"] = {leaf, venom, boostStone}, ["Paras"] = {coccon, leaf, boostStone}, ["Parasect"] = {coccon, leaf, boostStone}, ["Venonat"] = {coccon, venom, boostStone}, ["Venomoth"] = {coccon, venom, boostStone}, ["Diglett"] = {earth, boostStone}, ["Dugtrio"] = {earth, boostStone}, ["Meowth"] = {heart, boostStone}, ["Persian"] = {heart, boostStone}, ["Psyduck"] = {water, boostStone}, ["Golduck"] = {water, enigma, boostStone}, ["Mankey"] = {punch, boostStone}, ["Primeape"] = {punch, boostStone}, ["Growlithe"] = {fire, boostStone}, ["Arcanine"] = {fire, boostStone}, ["Poliwag"] = {water, boostStone}, ["Poliwhirl"] = {water, boostStone}, ["Poliwrath"] = {water, punch, boostStone}, ["Abra"] = {enigma, boostStone}, ["Kadabra"] = {enigma, boostStone}, ["Alakazam"] = {enigma, boostStone}, ["Machop"] = {punch, boostStone}, ["Machoke"] = {punch, boostStone}, ["Machamp"] = {punch, boostStone}, ["Bellsprout"] = {leaf, venom, boostStone}, ["Weepinbell"] = {leaf, venom, boostStone}, ["Victreebel"] = {leaf, venom, boostStone}, ["Tentacool"] = {water, venom, boostStone}, ["Tentacruel"] = {water, venom, boostStone}, ["Geodude"] = {earth, rock, boostStone}, ["Graveler"] = {earth, rock, boostStone}, ["Golem"] = {earth, rock, boostStone}, ["Ponyta"] = {fire, boostStone}, ["Rapidash"] = {fire, boostStone}, ["Slowpoke"] = {water, enigma, boostStone}, ["Slowbro"] = {water, enigma, boostStone}, ["Magnemite"] = {thunder, boostStone}, ["Magneton"] = {thunder, boostStone}, ["Magnezone"] = {thunder, boostStone}, ["Milotic"] = {water, boostStone}, ["Farfetch'd"] = {heart, boostStone}, ["Doduo"] = {heart, boostStone}, ["Dodrio"] = {heart, boostStone}, ["Seel"] = {water, ice, boostStone}, ["Dewgong"] = {water, ice, boostStone}, ["Grimer"] = {venom, boostStone}, ["Muk"] = {venom, boostStone}, ["Shellder"] = {water, ice, boostStone}, ["Cloyster"] = {water, ice, boostStone}, ["Gastly"] = {dark, boostStone}, ["Haunter"] = {dark, boostStone}, ["Gengar"] = {dark, boostStone}, ["Onix"] = {rock, earth, boostStone}, ["Drowzee"] = {enigma, boostStone}, ["Hypno"] = {enigma, boostStone}, ["Krabby"] = {water, boostStone}, ["Kingler"] = {water, boostStone}, ["Voltorb"] = {thunder, boostStone}, ["Electrode"] = {thunder, boostStone}, ["Exeggcute"] = {enigma, leaf, boostStone}, ["Exeggutor"] = {enigma, leaf, boostStone}, ["Cubone"] = {earth, boostStone}, ["Marowak"] = {earth, boostStone}, ["Hitmonlee"] = {punch, boostStone}, ["Hitmonchan"] = {punch, boostStone}, ["Lickitung"] = {heart, boostStone}, ["Koffing"] = {venom, boostStone}, ["Weezing"] = {venom, boostStone}, ["Rhyhorn"] = {earth, rock, boostStone}, ["Rhydon"] = {earth, rock, boostStone}, ["Chansey"] = {heart, boostStone}, ["Tangela"] = {leaf, boostStone}, ["Kangaskhan"] = {heart, boostStone}, ["Horsea"] = {water, boostStone}, ["Seadra"] = {water, boostStone}, ["Goldeen"] = {water, boostStone}, ["Seaking"] = {water, boostStone}, ["Staryu"] = {water, boostStone}, ["Starmie"] = {water, boostStone}, ["Shiny Mantine"] = {water, boostStone}, ["Mr. Mime"] = {enigma, boostStone}, ["Scyther"] = {coccon, boostStone}, ["Jynx"] = {enigma, ice, boostStone}, ["Electabuzz"] = {thunder, boostStone}, ["Electivire"] = {thunder, boostStone}, ["Shiny Electivire"] = {thunder, boostStone}, ["Magmar"] = {fire, boostStone}, ["Magmortar"] = {fire, boostStone}, ["Shiny Magmortar"] = {fire, boostStone}, ["Pinsir"] = {coccon, boostStone}, ["Tauros"] = {heart, boostStone}, ["Magikarp"] = {water, boostStone}, ["Gyarados"] = {water, crystal, boostStone}, ["Lapras"] = {water, ice, boostStone}, ["Ditto"] = {heart, boostStone}, ["Shiny Ditto"] = {heart, boostStone}, ["Eevee"] = {heart, boostStone}, ["Vaporeon"] = {water, boostStone}, ["Jolteon"] = {thunder, boostStone}, ["Flareon"] = {fire, boostStone}, ["Espeon"] = {enigma, boostStone}, ["Umbreon"] = {dark, boostStone}, ["Absol"] = {dark, boostStone}, ["Wailord"] = {water, boostStone}, ["Porygon"] = {heart, enigma, boostStone}, ["Omanyte"] = {rock, water, boostStone}, ["Omastar"] = {rock, water, boostStone}, ["Kabuto"] = {rock, water, boostStone}, ["Kabutops"] = {rock, water, boostStone}, ["Aerodactyl"] = {rock, boostStone}, ["Snorlax"] = {heart, boostStone}, ["Articuno"] = {ice, boostStone}, ["Zapdos"] = {thunder, boostStone}, ["Moltres"] = {fire, boostStone}, ["Dratini"] = {crystal, boostStone}, ["Dragonair"] = {crystal, boostStone}, ["Dragonite"] = {crystal, boostStone}, ["Salamence"] = {crystal, boostStone}, ["Shiny Salamence"] = {crystal, boostStone}, ["Mewtwo"] = {enigma, boostStone}, ["Mew"] = {enigma, boostStone}, ["Shiny Typhlosion"] = {fire, boostStone}, ["Shiny Bulbasaur"] = {leaf, boostStone}, ["Shiny Ivysaur"] = {leaf, boostStone}, ["Shiny Venusaur"] = {leaf, boostStone}, ["Shiny Charmander"] = {fire, boostStone}, ["Shiny Charmeleon"] = {fire, boostStone}, ["Shiny Charizard"] = {fire, boostStone}, ["Shiny Squirtle"] = {water, boostStone}, ["Shiny Wartortle"] = {water, boostStone}, ["Shiny Blastoise"] = {water, boostStone}, ["Shiny Caterpie"] = {coccon, boostStone}, ["Shiny Metapod"] = {coccon, boostStone}, ["Shiny Butterfree"] = {coccon, boostStone}, ["Shiny Weedle"] = {coccon, boostStone}, ["Shiny Kakuna"] = {coccon, boostStone}, ["Shiny Beedrill"] = {coccon, boostStone}, ["Shiny Pidgey"] = {heart, boostStone}, ["Shiny Pidgeotto"] = {heart, boostStone}, ["Shiny Pidgeot"] = {heart, boostStone}, ["Shiny Rattata"] = {heart, boostStone}, ["Shiny Raticate"] = {heart, boostStone}, ["Shiny Spearow"] = {heart, boostStone}, ["Shiny Fearow"] = {heart, boostStone}, ["Shiny Ekans"] = {venom, boostStone}, ["Shiny Arbok"] = {venom, boostStone}, ["Shiny Pikachu"] = {thunder, boostStone}, ["Shiny Raichu"] = {thunder, boostStone}, ["Shiny Sandshrew"] = {earth, boostStone}, ["Shiny Sandslash"] = {earth, boostStone}, ["Shiny Nidoran Female"] = {venom, boostStone}, ["Shiny Nidorina"] = {venom, boostStone}, ["Shiny Nidoqueen"] = {venom, earth, boostStone}, ["Shiny Nidoran Male"] = {venom, boostStone}, ["Shiny Nidorino"] = {venom, boostStone}, ["Shiny Nidoking"] = {venom, earth, boostStone}, ["Shiny Clefairy"] = {heart, boostStone}, ["Shiny Clefable"] = {heart, boostStone}, ["Shiny Vulpix"] = {fire, boostStone}, ["Shiny Ninetales"] = {fire, boostStone}, ["Shiny Jigglypuff"] = {heart, boostStone}, ["Shiny Wigglytuff"] = {heart, boostStone}, ["Shiny Zubat"] = {venom, boostStone}, ["Shiny Golbat"] = {venom, boostStone}, ["Shiny Oddish"] = {leaf, venom, boostStone}, ["Shiny Gloom"] = {leaf, venom, boostStone}, ["Shiny Vileplume"] = {leaf, venom, boostStone}, ["Shiny Paras"] = {coccon, leaf, boostStone}, ["Shiny Parasect"] = {coccon, leaf, boostStone}, ["Shiny Venonat"] = {coccon, venom, boostStone}, ["Shiny Venomoth"] = {coccon, venom, boostStone}, ["Shiny Diglett"] = {earth, boostStone}, ["Shiny Dugtrio"] = {earth, boostStone}, ["Shiny Meowth"] = {heart, boostStone}, ["Shiny Persian"] = {heart, boostStone}, ["Shiny Psyduck"] = {water, boostStone}, ["Shiny Golduck"] = {water, enigma, boostStone}, ["Shiny Mankey"] = {punch, boostStone}, ["Shiny Primeape"] = {punch, boostStone}, ["Shiny Growlithe"] = {fire, boostStone}, ["Shiny Arcanine"] = {fire, boostStone}, ["Shiny Poliwag"] = {water, boostStone}, ["Shiny Poliwhirl"] = {water, boostStone}, ["Shiny Poliwrath"] = {water, punch, boostStone}, ["Shiny Abra"] = {enigma, boostStone}, ["Shiny Kadabra"] = {enigma, boostStone}, ["Shiny Alakazam"] = {enigma, boostStone}, ["Shiny Machop"] = {punch, boostStone}, ["Shiny Machoke"] = {punch, boostStone}, ["Shiny Machamp"] = {punch, boostStone}, ["Shiny Bellsprout"] = {leaf, venom, boostStone}, ["Shiny Weepinbell"] = {leaf, venom, boostStone}, ["Shiny Victreebel"] = {leaf, venom, boostStone}, ["Shiny Tentacool"] = {water, venom, boostStone}, ["Shiny Tentacruel"] = {water, venom, boostStone}, ["Shiny Geodude"] = {earth, rock, boostStone}, ["Shiny Graveler"] = {earth, rock, boostStone}, ["Shiny Golem"] = {rock, boostStone}, ["Shiny Ponyta"] = {fire, boostStone}, ["Shiny Rapidash"] = {fire, boostStone}, ["Shiny Slowpoke"] = {water, enigma, boostStone}, ["Shiny Slowbro"] = {water, enigma, boostStone}, ["Shiny Magnemite"] = {thunder, boostStone}, ["Shiny Magneton"] = {thunder, boostStone}, ["Shiny Farfetch'd"] = {heart, boostStone}, ["Shiny Doduo"] = {heart, boostStone}, ["Shiny Dodrio"] = {heart, boostStone}, ["Shiny Seel"] = {water, ice, boostStone}, ["Shiny Dewgong"] = {water, ice, boostStone}, ["Shiny Grimer"] = {venom, boostStone}, ["Shiny Muk"] = {venom, boostStone}, ["Shiny Shellder"] = {water, ice, boostStone}, ["Shiny Cloyster"] = {water, ice, boostStone}, ["Shiny Gastly"] = {dark, boostStone}, ["Shiny Haunter"] = {dark, boostStone}, ["Shiny Gengar"] = {dark, boostStone}, ["Shiny Onix"] = {rock, earth, boostStone}, ["Shiny Drowzee"] = {enigma, boostStone}, ["Shiny Hypno"] = {enigma, boostStone}, ["Shiny Krabby"] = {water, boostStone}, ["Shiny Kingler"] = {water, boostStone}, ["Shiny Voltorb"] = {thunder, boostStone}, ["Shiny Electrode"] = {thunder, boostStone}, ["Shiny Exeggcute"] = {enigma, leaf, boostStone}, ["Shiny Exeggutor"] = {enigma, leaf, boostStone}, ["Shiny Cubone"] = {earth, boostStone}, ["Shiny Marowak"] = {earth, boostStone}, ["Shiny Hitmonlee"] = {punch, boostStone}, ["Shiny Hitmonchan"] = {punch, boostStone}, ["Shiny Hitmontop"] = {punch, boostStone}, ["Shiny Lickitung"] = {heart, boostStone}, ["Shiny Koffing"] = {venom, boostStone}, ["Shiny Weezing"] = {venom, boostStone}, ["Shiny Rhyhorn"] = {earth, rock, boostStone}, ["Shiny Rhydon"] = {earth, rock, boostStone}, ["Shiny Chansey"] = {heart, boostStone}, ["Shiny Tangela"] = {leaf, boostStone}, ["Shiny Kangaskhan"] = {heart, boostStone}, ["Shiny Horsea"] = {water, boostStone}, ["Shiny Seadra"] = {water, boostStone}, ["Shiny Goldeen"] = {water, boostStone}, ["Shiny Seaking"] = {water, boostStone}, ["Shiny Staryu"] = {water, boostStone}, ["Shiny Starmie"] = {water, boostStone}, ["Shiny Mr. Mime"] = {enigma, boostStone}, ["Shiny Scyther"] = {coccon, boostStone}, ["Shiny Jynx"] = {enigma, ice, boostStone}, ["Shiny Electabuzz"] = {thunder, boostStone}, ["Shiny Magmar"] = {fire, boostStone}, ["Shiny Pinsir"] = {coccon, boostStone}, ["Shiny Tauros"] = {heart, boostStone}, ["Shiny Magikarp"] = {water, boostStone}, ["Shiny Gyarados"] = {water, crystal, boostStone}, ["Shiny Lapras"] = {water, ice, boostStone}, ["Shiny Ditto"] = {heart, boostStone}, ["Shiny Eevee"] = {heart, boostStone}, ["Shiny Vaporeon"] = {water, boostStone}, ["Shiny Jolteon"] = {thunder, boostStone}, ["Shiny Flareon"] = {fire, boostStone}, ["Shiny Porygon"] = {heart, enigma, boostStone}, ["Shiny Omanyte"] = {rock, water, boostStone}, ["Shiny Omastar"] = {rock, water, boostStone}, ["Shiny Kabuto"] = {rock, water, boostStone}, ["Shiny Kabutops"] = {rock, water, boostStone}, ["Shiny Aerodactyl"] = {rock, boostStone}, ["Shiny Snorlax"] = {heart, boostStone}, ["Shiny Articuno"] = {ice, boostStone}, ["Shiny Zapdos"] = {thunder, boostStone}, ["Shiny Moltres"] = {fire, boostStone}, ["Shiny Dratini"] = {crystal, boostStone}, ["Shiny Dragonair"] = {crystal, boostStone}, ["Shiny Dragonite"] = {crystal, boostStone}, ["Shiny Mewtwo"] = {enigma, boostStone}, ["Shiny Mew"] = {enigma, boostStone}, ["Chikorita"] = {leaf, boostStone}, ["Bayleef"] = {leaf, boostStone}, ["Meganium"] = {leaf, boostStone}, ["Cyndaquil"] = {fire, boostStone}, ["Quilava"] = {fire, boostStone}, ["Typhlosion"] = {fire, boostStone}, ["Totodile"] = {water, boostStone}, ["Croconaw"] = {water, boostStone}, ["Feraligatr"] = {water, boostStone}, ["Sentret"] = {heart, boostStone}, ["Furret"] = {heart, boostStone}, ["Hoothoot"] = {heart, enigma, boostStone}, ["Noctowl"] = {heart, enigma, boostStone}, ["Ledyba"] = {coccon, boostStone}, ["Ledian"] = {coccon, boostStone}, ["Spinarak"] = {coccon, venom, boostStone}, ["Ariados"] = {coccon, venom, boostStone}, ["Crobat"] = {venom, boostStone}, ["Chinchou"] = {water, thunder, boostStone}, ["Lanturn"] = {water, thunder, boostStone}, ["Pichu"] = {thunder, boostStone}, ["Cleffa"] = {heart, boostStone}, ["Iglybuff"] = {venom, boostStone}, ["Natu"] = {enigma, boostStone}, ["Xatu"] = {enigma, boostStone}, ["Mareep"] = {thunder, boostStone}, ["Flaaffy"] = {thunder, boostStone}, ["Ampharos"] = {thunder, boostStone}, ["Bellossom"] = {leaf, boostStone}, ["Marill"] = {water, boostStone}, ["Azulmarill"] = {water, boostStone}, ["Sudowoodo"] = {rock, earth, boostStone}, ["Politoed"] = {water, earth, boostStone}, ["Hoppip"] = {leaf, boostStone}, ["Skiploom"] = {leaf, boostStone}, ["Jumpluff"] = {leaf, boostStone}, ["Aipom"] = {heart, boostStone}, ["Sunkern"] = {leaf, boostStone}, ["Sunflora"] = {leaf, boostStone}, ["Yanma"] = {venom, coccon, boostStone}, ["Wooper"] = {water, boostStone}, ["Quagsire"] = {water, earth, boostStone}, ["Murkrow"] = {dark, boostStone}, ["Slowking"] = {enigma, boostStone}, ["Misdreavus"] = {dark, boostStone}, ["Wobbuffet"] = {enigma, boostStone}, ["Girafarig"] = {enigma, boostStone}, ["Pineco"] = {coccon, boostStone}, ["Forretress"] = {coccon, boostStone}, ["Gligar"] = {dark, heart, boostStone}, ["Steelix"] = {metal, boostStone}, ["Snubbull"] = {heart, boostStone}, ["Granbull"] = {heart, boostStone}, ["Qwilfish"] = {water, boostStone}, ["Shuckle"] = {earth, boostStone}, ["Heracross"] = {coccon, boostStone}, ["Teddiursa"] = {heart, boostStone}, ["Ursaring"] = {heart, boostStone}, ["Slugma"] = {fire, boostStone}, ["Magcargo"] = {fire, boostStone}, ["Swinub"] = {ice, earth, boostStone}, ["Piloswine"] = {ice, earth, boostStone}, ["Corsola"] = {water, boostStone}, ["Remoraid"] = {water, boostStone}, ["Octillery"] = {water, boostStone}, ["Delibird"] = {ice, heart, boostStone}, ["Mantine"] = {water, boostStone}, ["Skarmory"] = {metal, boostStone}, ["Houndour"] = {fire, dark, boostStone}, ["Houndoom"] = {fire, dark, boostStone}, ["Kingdra"] = {water, crystal, boostStone}, ["Phanpy"] = {earth, boostStone}, ["Donphan"] = {earth, boostStone}, ["porygon2"] = {enigma, boostStone}, ["Stantler"] = {heart, boostStone}, ["Smeargle"] = {heart, boostStone}, ["Tyrogue"] = {punch, boostStone}, ["Hitmontop"] = {punch, boostStone}, ["Smoochum"] = {ice, enigma, boostStone}, ["Elekid"] = {thunder, boostStone}, ["Magby"] = {fire, boostStone}, ["Miltank"] = {heart, boostStone}, ["Blissey"] = {heart, boostStone}, ["Scizor"] = {metal, boostStone}, ["Beldum"] = {metal, boostStone}, ["Metang"] = {metal, boostStone}, ["Metagross"] = {metal, boostStone}, ["Raikou"] = {thunder, boostStone}, ["Entei"] = {fire, boostStone}, ["Suicune"] = {water, boostStone}, ["Larvitar"] = {earth, dark, boostStone}, ["Pupitar"] = {earth, dark, boostStone}, ["Tyranitar"] = {rock, dark, boostStone}, ["Lugia"] = {enigma, water, boostStone}, ["Ho-oh"] = {enigma, fire, boostStone}, ["Celebi"] = {leaf, enigma, boostStone}, ["Shiny Chikorita"] = {leaf, boostStone}, ["Shiny Bayleef"] = {leaf, boostStone}, ["Shiny Meganium"] = {leaf, boostStone}, ["Shiny Cyndaquil"] = {fire, boostStone}, ["Shiny Quilava"] = {fire, boostStone}, ["Shiny Typhlosion"] = {fire, boostStone}, ["Shiny Totodile"] = {water, boostStone}, ["Shiny Croconaw"] = {water, boostStone}, ["Shiny Feraligatr"] = {water, boostStone}, ["Shiny Sentret"] = {heart, boostStone}, ["Shiny Furret"] = {heart, boostStone}, ["Shiny Hoothoot"] = {heart, enigma, boostStone}, ["Shiny Noctowl"] = {heart, enigma, boostStone}, ["Shiny Ledyba"] = {coccon, boostStone}, ["Shiny Ledian"] = {coccon, boostStone}, ["Shiny Spinarak"] = {coccon, venom, boostStone}, ["Shiny Ariados"] = {coccon, venom, boostStone}, ["Shiny Crobat"] = {venom, boostStone}, ["Shiny Chinchou"] = {water, thunder, boostStone}, ["Shiny Lanturn"] = {water, thunder, boostStone}, ["Shiny Pichu"] = {thunder, boostStone}, ["Shiny Cleffa"] = {heart, boostStone}, ["Shiny Iglybuff"] = {venom, boostStone}, ["Shiny Natu"] = {enigma, boostStone}, ["Shiny Xatu"] = {enigma, boostStone}, ["Shiny Mareep"] = {thunder, boostStone}, ["Shiny Flaaffy"] = {thunder, boostStone}, ["Shiny Ampharos"] = {thunder, boostStone}, ["Shiny Bellossom"] = {leaf, boostStone}, ["Shiny Marill"] = {water, boostStone}, ["Shiny Azulmarill"] = {water, boostStone}, ["Shiny Sudowoodo"] = {rock, earth, boostStone}, ["Shiny Politoed"] = {water, earth, boostStone}, ["Shiny Hoppip"] = {leaf, boostStone}, ["Shiny Skiploom"] = {leaf, boostStone}, ["Shiny Jumpluff"] = {leaf, boostStone}, ["Shiny Aipom"] = {heart, boostStone}, ["Shiny Sunkern"] = {leaf, boostStone}, ["Shiny Sunflora"] = {leaf, boostStone}, ["Shiny Yanma"] = {venom, coccon, boostStone}, ["Shiny Wooper"] = {water, boostStone}, ["Shiny Quagsire"] = {water, earth, boostStone}, ["Shiny Murkrow"] = {dark, boostStone}, ["Shiny Slowking"] = {enigma, boostStone}, ["Shiny Misdreavus"] = {dark, boostStone}, ["Shiny Wobbuffet"] = {enigma, boostStone}, ["Shiny Girafarig"] = {enigma, boostStone}, ["Shiny Umbreon"] = {dark, boostStone}, ["Shiny Espeon"] = {enigma, boostStone}, ["Shiny Pineco"] = {coccon, boostStone}, ["Shiny Forretress"] = {coccon, boostStone}, ["Shiny Gligar"] = {dark, heart, boostStone}, ["Shiny Steelix"] = {metal, boostStone}, ["Shiny Snubbull"] = {heart, boostStone}, ["Shiny Granbull"] = {heart, boostStone}, ["Shiny Qwilfish"] = {water, boostStone}, ["Shiny Shuckle"] = {earth, boostStone}, ["Shiny Heracross"] = {coccon, boostStone}, ["Shiny Teddiursa"] = {heart, boostStone}, ["Shiny Ursaring"] = {heart, boostStone}, ["Shiny Slugma"] = {fire, boostStone}, ["Shiny Magcargo"] = {fire, boostStone}, ["Shiny Swinub"] = {ice, earth, boostStone}, ["Shiny Piloswine"] = {ice, earth, boostStone}, ["Shiny Corsola"] = {water, boostStone}, ["Shiny Remoraid"] = {water, boostStone}, ["Shiny Octillery"] = {water, boostStone}, ["Shiny Delibird"] = {ice, heart, boostStone}, ["Shiny Mantine"] = {water, boostStone}, ["Shiny Skarmory"] = {metal, boostStone}, ["Shiny Houndour"] = {fire, dark, boostStone}, ["Shiny Houndoom"] = {fire, dark, boostStone}, ["Shiny Kingdra"] = {water, crystal, boostStone}, ["Shiny Phanpy"] = {earth, boostStone}, ["Shiny Donphan"] = {earth, boostStone}, ["Shiny Porygon2"] = {enigma, boostStone}, ["Shiny Stantler"] = {heart, boostStone}, ["Shiny Smeargle"] = {heart, boostStone}, ["Shiny Tyrogue"] = {punch, boostStone}, ["Shiny Hitmontop"] = {punch, boostStone}, ["Shiny Smoochum"] = {ice, enigma, boostStone}, ["Shiny Elekid"] = {thunder, boostStone}, ["Shiny Magby"] = {fire, boostStone}, ["Shiny Miltank"] = {heart, boostStone}, ["Shiny Blissey"] = {heart, boostStone}, ["Shiny Scizor"] = {metal, boostStone}, ["Shiny Raikou"] = {thunder, boostStone}, ["Shiny Entei"] = {fire, boostStone}, ["Shiny Suicune"] = {water, boostStone}, ["Shiny Larvitar"] = {earth, dark, boostStone}, ["Shiny Pupitar"] = {earth, dark, boostStone}, ["Shiny Tyranitar"] = {rock, dark, boostStone}, ["Shiny Lugia"] = {enigma, water, boostStone}, ["Shiny Ho-oh"] = {enigma, fire, boostStone}, ["Shiny Celebi"] = {leaf, enigma, boostStone}, } function convertMoneyValue(value) if value < 101 then return value * 0.01 elseif value < 10001 then return value / 100 elseif value < 1000001 then return value / 100000 .."k" elseif value <= 99999999 then return value / 100000 .."k" else return value / 100000000 .."kk" end end function convertTime(a) if(type(tonumber(a)) == "number" and a > 0) then if (a <= 3599) then local minute = math.floor(a/60) local second = a - (60 * minute) if(second == 0) then return ((minute)..((minute > 1) and " minutos" or " minuto")) else return ((minute ~= 0) and ((minute>1) and minute.." minutos e " or minute.." minuto e ").. ((second>1) and second.." segundos" or second.." segundo") or ((second>1) and second.." segundos" or second.. " segundo")) end else local hour = math.floor(a/3600) local minute = math.floor((a - (hour * 3600))/60) local second = (a - (3600 * hour) - (minute * 60)) if (minute == 0 and second > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(second..((second > 1) and " segundos" or " segundo")) elseif (second == 0 and minute > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(minute..((minute > 1) and " minutos" or " minuto")) elseif (second == 0 and minute == 0) then return (hour..((hour > 1) and " horas" or " hora")) end return (hour..((hour > 1) and " horas, " or " hora, "))..(minute..((minute > 1) and " minutos e " or " minuto e "))..(second..((second > 1) and " segundos" or " segundo")) end end end function doConcatTable(itemsss, sep1, sep2) local str = "" if #itemsss > 0 then for i = 1, #itemsss do if #itemsss > 1 then if i ~= #itemsss then if i ~= 1 then str = str..sep1..itemsss[i] else str = str..itemsss[i] end else str = str..sep2..itemsss[i] end else str = itemsss[i] end end end return str end function doSendCancel(cid, msg) addEvent(doPlayerSendCancel, 5, cid, msg) end function doSurf(cid) if not isPlayer(cid) then --alterado v1.9 return false end if isSurf(cid) then return true end if getPlayerStorageValue(cid, 75846) >= 1 then return true end --alterado v1.9 if isPlayer(cid) and isWatchingTv(cid) then return false end -- TV if getCreatureOutfit(cid).lookType == 316 or getCreatureOutfit(cid).lookType == 648 then doSendMagicEffect(fromPosition, 136) end if (getPlayerStorageValue(cid, 63215) >= 1 or isFly(cid)) then return false end if isInDuel(cid) then return false end if #getCreatureSummons(cid) == 0 and not isSurf(cid) then doSendCancel(cid, "You need a pokemon to surf.") return false end if isMega(getCreatureSummons(cid)[1]) then doSendCancel(cid, "Mega Pokémons can't surf.") return false end local pokeName = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke") local ditto = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "copyName") if ditto and ditto ~= "" then pokeName = ditto end if (not isInArray(specialabilities["surf"], pokeName)) then doSendCancel(cid, "This pokemon can't surf.") return false end if isSleeping(getCreatureSummons(cid)[1]) then doSendCancel(cid, "Você não pode surfar enquanto seu pokémon estiver dormindo!") return false end if isInDuel(cid) then doSendCancel(cid, "Você não pode surfar enquanto você estiver batalhando.") --alterado v1.6 return false end if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then doSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7 return false end --alterado v1.6 doSetCreatureOutfit(cid, {lookType = surfs[pokeName].lookType + 351}, -1) setPokemonGhost(cid) doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", TALKTYPE_ORANGE_1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) local speed = 75 + PlayerSpeed + getSpeed(getCreatureSummons(cid)[1]) * 8 setPlayerStorageValue(cid, 54844, speed) doChangeSpeed(cid, speed) local hpToDraw = (getCreatureMaxHealth(getCreatureSummons(cid)[1]) - getCreatureHealth(getCreatureSummons(cid)[1])) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hpToDraw", hpToDraw) addEvent(setPlayerStorageValue, 100, cid, 63215, 1) local item = getPlayerSlotItem(cid, 8) if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then addEvent(sendAuraEffect, 120, cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8 end -- if getItemAttribute(item, "premierAura") then -- addEvent(sendAuraEffect, 120, cid, auraSyst[getItemAttribute(item.uid, "premierAura")]) -- end doSendPlayerExtendedOpcode(cid, 95, '12//,hide') doRemoveCreature(getCreatureSummons(cid)[1]) return true end function isWater(itemid) if itemid > 0 then if isInArray(waterID, itemid) then return true --[[elseif isInArray({"shallow water"}, getItemNameById(itemid)) then return true]] elseif tonumber(id) and id >= 4608 and id <= 4613 then return true end end return false end function getNewMoveTable(table, n) if table == nil or not n then return false end local moves = {table.move1, table.move2, table.move3, table.move4, table.move5, table.move6, table.move7, table.move8, table.move9, table.move10, table.move11, table.move12} return moves[n] or false end function doGoPokemon(cid, ball, sendEffect) if isPlayer(cid) then ball = ball and ball or getPlayerSlotItem(cid, 8) if isPokeball(ball.itemid) then if isPokeballOff(ball) then doPlayerSendCancel(cid, "This pokemon has fainted!") return true end if ball.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then doPlayerSendCancel(cid, "You must put your pokeball in the correct place!") return true end if getItemAttribute(ball.uid, "hp") and getItemAttribute(ball.uid, "hp") <= 0 then doTransformItem(ball.uid, pokeballs[btype].off) doItemSetAttribute(ball.uid, "hp", 0) doPlayerSendCancel(cid, "This pokemon is fainted.") return true end local pokemon = getItemAttribute(ball.uid, "poke") if not pokes[pokemon] then return true end local btype = getPokeballType(ball.itemid) or "pokeball" local x = pokes[pokemon] local boost = getItemAttribute(ball.uid, "boost") or 0 if not isInArray({"Charmander", "Squirtle", "Bulbasaur"}, pokemon) then if getPlayerLevel(cid) < (x.level+boost) then doPlayerSendCancel(cid, "You need level "..(x.level+boost).." to use this pokemon.") return true end end local nick = getItemAttribute(ball.uid, "poke") local pokemonRealName = pokemon if getItemAttribute(ball.uid, "copyName") then -- ditto system pokemon = getItemAttribute(ball.uid, "copyName") pokemonRealName = getItemAttribute(ball.uid, "poke") end if getItemAttribute(ball.uid, "nick") then nick = getItemAttribute(ball.uid, "nick") end pokeSourceCode = doCreateMonsterNick(cid, pokemon, retireShinyName(nick) and retireSmeargleNumber(nick) and retireCastformName(nick), getThingPos(cid), true)--doSummonMonster(cid, pokemon if not pokeSourceCode then doPlayerSendCancel(cid, "Você não pode chamar seu pokémon aqui!") return true end local pk = getCreatureSummons(cid)[1] --setMoveSummon(cid, true) if not isCreature(pk) then return true end --[[if getItemAttribute(ball.uid, "nick") and getItemAttribute(ball.uid, "nick") ~= "" then nick = getItemAttribute(ball.uid, "nick") doCreatureSetNick(pk, nick) end]] local pos = getThingPos(cid) local positionsAround = { [1] = {x = pos.x + 1, y = pos.y, z = pos.z}, [2] = {x = pos.x - 1, y = pos.y, z = pos.z}, [3] = {x = pos.x, y = pos.y + 1, z = pos.z}, [4] = {x = pos.x, y = pos.y - 1, z = pos.z}, [5] = {x = pos.x + 1, y = pos.y + 1, z = pos.z}, [6] = {x = pos.x - 1, y = pos.y + 1, z = pos.z}, [7] = {x = pos.x - 1, y = pos.y - 1, z = pos.z}, [8] = {x = pos.x + 1, y = pos.y - 1, z = pos.z}, } for i = 1, 8 do if isWalkable(positionsAround[i], true, false, false, true) and doComparePositions(pos, getThingPos(cid)) and not isWater(getTileInfo(positionsAround[i]).itemid) then pos = positionsAround[i] end end doTeleportThing(pk, pos) if isSummon(pk) then --passiva hitmonchan if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then if not getItemAttribute(ball.uid, "hands") then doSetItemAttribute(ball.uid, "hands", 0) end local hands = getItemAttribute(ball.uid, "hands") doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1) end end local EFFECTS = { ["Magmar"] = 35, ["Shiny Magmar"] = 35, ["Shiny Magmortar"] = 35, ["Shiny Electabuzz"] = 641, ["Shiny Electivire"] = 641, ["Magmortar"] = 35, ["Electivire"] = 48, ["Jynx"] = 17, --alterado v1.5 ["Shiny Jynx"] = 17, ["Piloswine"] = 205, --alterado v1.8 ["Swinub"] = 205, } if EFFECTS[getCreatureName(pk)] then -- movement magmar, jynx markPosEff(pk, getThingPos(pk)) sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) end doCreatureSetLookDir(pk, 2) setPlayerStorageValue(cid, 543231, 2 + os.time()) adjustStatus(pk, ball.uid, true, true, true) doRegenerateWithY(getCreatureMaster(pk), pk) doCureWithY(getCreatureMaster(pk), pk) doTransformItem(ball.uid, pokeballs[btype].use) setPokemonGhost(pk) if getItemAttribute(ball.uid, "addon") then doSetCreatureOutfit(pk, {lookType = PokeAddons[getCreatureName(pk)][getItemAttribute(ball.uid, "addon")].looktype}, -1) end if getItemAttribute(ball.uid, "aura") == "particle" then doCreatureSetSkullType(pk, math.random(10, 20)) end shColor = math.random(0, 132) shColor2 = math.random(0, 132) if isInArray({"shiny ditto"}, pokemon) then doSetCreatureOutfit(pk, {lookType = getCreatureOutfit(pk).lookType, lookBody = shColor2, lookLegs = shColor}, -1) end doSendLifePokeToOTC(cid) --doUpdateCooldowns(cid) --doUpdateMoves(cid) if sendEffect then local effect = pokeballs[btype].effect if not effect then effect = 21 end local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", (isNicked and nick or retireShinyName(pokemon))) doCreatureSay(cid, mgo, TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(pk), effect) doSendPlayerExtendedOpcode(cid, 95, '12//,show') doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_BATTLE_POKEMON, tostring(pk)) end if getCreatureName(pk):find("Smeargle") then local id = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "SmeargleID") setPlayerStorageValue(pk, storages.SmeargleID, "Smeargle " .. id) end end end end 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} --alterado v1.6 local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE} function onStatsChange(cid, attacker, type, combat, value) if isWatchingTv(cid) then return false end if isWild(attacker) then if isPlayer(cid) and getPlayerStorageValue(cid, 2525252525) >= 1 then return true end end if type == STATSCHANGE_HEALTHGAIN then if cid == attacker then return true end if isSummon(cid) and isSummon(attacker) then if isInDuel(getCreatureMaster(cid)) then return false end if canAttackOther(cid, attacker) == "Cant" then return false end end if isWild(cid) and isWild(attacker) then -- monstros se curarem return true end return true end if isSummon(cid) and isSummon(attacker) then -- Duel local p1, p2 = getCreatureMaster(cid), getCreatureMaster(attacker) if not CanAttackerInDuel(p1, p2) then return false end end if isSleeping(attacker) then return false end if isPlayer(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then return false end if isPlayer(cid) then if getPlayerStorageValue(cid, 201001) >= 1 then return false end end if isNpc(attacker) and isInArray({"Mew", "Mewtwo", "Moltres", "Articuno", "Zapdos", "Snorlax", "Big Porygon", "Aerodactyl", "Dragonite"}, getCreatureName(attacker)) then if isPlayer(cid) or isSummon(cid) then return false end end if isCard(attacker) then if isSummon(cid) and getPlayerStorageValue(cid, 9658783) >= 1 then return false end end if getPlayerStorageValue(cid, 9658783) == 1 then -- lenda causarem dano msm quando tiver com spell de imunidade if not ehLenda(attacker) then return false end return true end if combat == FLYSYSTEMDAMAGE then return false end if isPlayer(cid) and isWatchingTv(cid) then return false end -- TV if (isPlayer(cid) and #getCreatureSummons(cid) >= 1 and not getTileInfo(getThingPos(getCreatureSummons(cid)[1])).protection) or isPlayer(attacker) then return false end -- seguranca do player nao atacar if isGod(cid) then return false end -- god nao morrer o.O if isWild(cid) and isWild(attacker) then return false end -- monstro nao atacar monstro, mas deixar pokemons do shared team baterem if isSummon(cid) and getPlayerStorageValue(cid, 5000001) >= 1 then return false end -- ENQUANTO ESTIVER USANDO MEDITATE NÃO RECEBER DANO if getTileInfo(getThingPos(cid)).protection then return false end if isSummon(attacker) and isPlayer(cid) then return false -- quandotiver pvp colocar storage do pvp aqui+++++++++++ end if not (isCreature(attacker)) then return true end -- player morte e ataques if isPlayer(cid) and (#getCreatureSummons(cid) <= 0 or #getCreatureSummons(cid) >= 1 and getTileInfo(getThingPos(getCreatureSummons(cid)[1])).protection) then local color = 180 if (combat == 128 or combat == 1) then value = math.floor(getOffense(attacker) * 80) -- 100 else if not combat then color = 180 else color = typeTable[combat].color or 180 end end if value >= getCreatureHealth(cid) then value = math.floor(getCreatureHealth(cid)) end if (value) >= getCreatureHealth(cid) then doKillPlayer(cid, attacker, (value)) return false end doSendAnimatedText(getThingPosWithDebug(cid), (math.floor(value) * -1), color) doCreatureAddHealth(cid, math.floor(-value)) return false end if not isPlayer(cid) then local myName = doCorrectString(getCreatureName(cid)) if isInArray(specialabilities["evasion"], myName) and isSummon(cid) then local target = cid if getCreatureTarget(getCreatureMaster(cid)) == attacker then if math.random(1, 100) <= passivesChances["Evasion"][myName] then if isCreature(attacker) then --alterado v1.6 doSendMagicEffect(getThingPosWithDebug(target), 211) doSendAnimatedText(getThingPosWithDebug(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPosWithDebug(attacker)), false) doSendMagicEffect(getThingPosWithDebug(target), 211) doFaceCreature(target, getThingPosWithDebug(attacker)) return false end end end end ---- cor do dano local critical = false local returnDamage = false ------------- Helds if isSummon(cid) then local heldx = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "xHeldItem") if heldx then local heldName, heldTier = string.explode(heldx, "|")[1] or "", string.explode(heldx, "|")[2] or "" if heldName == "X-Block" and isSummon(cid) then -- bloquear alguns ataques local chance = heldBlockChance[tonumber(heldTier)] if (math.random(1, 100) <= chance) then doSendAnimatedText(getThingPos(cid), "BLOCKED", 215) return false end end if heldName == "X-Return" and isSummon(cid) then local chance = heldReturn[tonumber(heldTier)] if (math.random(1, 100) <= chance) then returnDamage = true returntype = false returnDamageValue = heldReturn[tonumber(heldTier)] end end if heldName == "X-Rage" and isSummon(cid) then local chance = heldRage[tonumber(heldTier)] if (math.random(1, 100) <= chance) then docastspell(cid, "Rage") end end if heldName == "X-Strafe" and isSummon(cid) then local chance = heldStrafe[tonumber(heldTier)] if (math.random(1, 100) <= chance) then docastspell(cid, "Strafe") end end if heldName == "X-Harden" and isSummon(cid) then local chance = heldHarden[tonumber(heldTier)] if (math.random(1, 100) <= chance) then docastspell(cid, "Harden") end end if heldName == "X-Agility" and isSummon(cid) then local chance = heldAgility[tonumber(heldTier)] if (math.random(1, 100) <= chance) then docastspell(cid, "Agility") end end if heldName == "X-Elemental" then -- do elemental local chance = heldElemental[tonumber(heldTier)] if (math.random(1, 100) <= chance) then docastspell(cid, "Elemental") end end if heldName == "X-Accuracy" then -- do ACCURACY local chance = heldAccuracy[tonumber(heldTier)] if (math.random(1, 100) <= chance) then local conds = {"Miss", "Slow", "Confusion", "Fear", "Silence", "Paralyze", "Stun", "Sleep"} local sorte = conds[math.random(1, #conds)] local ret = {id = attacker, cd = 7, check = false, first = true, cond = sorte} doCondition2(ret) doSendAnimatedText(getThingPos(cid), "ACCURACY", 215) end end end end if isNpc(attacker) then heldx = getItemAttribute(getPlayerSlotItem(getNpcMaster(attacker), 8).uid, "xHeldItem") elseif isSummon(attacker) then heldx = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "xHeldItem") end -- // REFLECT \\ -- if isSummon(cid) and combat ~= 1 then if getPlayerStorageValue(cid, storages.reflect) >= 1 then returnDamage = true returntype = true returncombat = combat if isWild(attacker) and (isInArray({"Shiny Salamence", "Shiny Scizor", "Shiny Magmortar", "Shiny Electivire"}, getCreatureName(attacker)) or isBoss(getCreatureName(attacker)) or ehLenda(attacker)) then returnDamageValue = 5 else returnDamageValue = math.floor(math.random(1, 10) * 10) end removeReflect(cid) end end if isSummon(attacker) then local heldx = getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, "xHeldItem") if heldx then local heldName, heldTier = string.explode(heldx, "|")[1], string.explode(heldx, "|")[2] if heldName == "X-Critical" then -- dar critico nos ataques local chance = heldCriticalChance[tonumber(heldTier)] if (math.random(1, 100) <= chance) then critical = true end end end end if isSummon(cid) and getCreatureName(cid) == "Castform" then local types = {"normal", "bug", "dark", "steel", "psychic", "fighting", "rock", "ghost", "ice", "electric", "grass", "fire"} for i = 1, #types do if getPokemonType1D(getCreatureName(attacker)) == types[i] or getPokemonType2D(getCreatureName(attacker)) == types[i] then docastspell(cid, "Sunny Day") break end end if getPokemonType1D(getCreatureName(attacker)) == "water" or getPokemonType2D(getCreatureName(attacker)) == "water" then docastspell(cid, "Rain Dance") end if getPokemonType1D(getCreatureName(attacker)) == "ground" or getPokemonType1D(getCreatureName(attacker)) == "dragon" or getPokemonType2D(getCreatureName(attacker)) == "ground" or getPokemonType2D(getCreatureName(attacker)) == "dragon" then docastspell(cid, "Blizzard") end end if isInArray({"Grimer", "Shiny Grimer", "Muk", "Shiny Muk", "Gulpin", "Swalot"}, doCorrectString(getCreatureName(cid))) and (combat == 128 or combat == 1) then if isSummon(cid) and isWild(attacker) then doPoisonPoke(cid, attacker) end end if isSummon(cid) then if math.random(1, 100) < 20 and isInArray({"Whismur", "Loudred"}, doCorrectString(getCreatureName(cid))) and (combat == 128 or combat == 1) then docastspell(cid, "Uproar") -- Passiva Loudred end end if math.random(1, 100) < 40 and isInArray({"Jynx", "Shiny Jynx", "Glalie", "Shiny Glalie"}, doCorrectString(getCreatureName(cid))) and (combat == 128 or combat == 1) then docastspell(cid, "Absolute Zero") -- Passiva Glalie end if math.random(1, 100) < 40 and isInArray({"Banette", "Shiny Banette"}, doCorrectString(getCreatureName(cid))) and (combat == 128 or combat == 1) then docastspell(cid, "Cursed Body") -- Passiva Banette end if isSummon(cid) then if getPlayerStorageValue(cid, 173) >= 1 then -- Potions setPlayerStorageValue(cid, 173, -1) --alterado v1.6 doSendAnimatedText(getThingPos(cid), "LOST HEAL", 144) end end local boost_def, boost_attk = (0.8 * getPokemonBoost(cid)) / 85, (1 * getPokemonBoost(attacker)) / 85 local isMeele = false if(combat == 128 or combat == 1) then -- ataque basico if value == 0 then return false else if isWild(attacker) then value = value * getOffense(attacker) -- buff ataque system value = value * 0.6 -- 0.3 elseif isSummon(attacker) then value = value * getOffense(attacker) value = value * 1.6 else value = value * getOffense(attacker) end local name = doCorrectString(getCreatureName(attacker)) if pokes[name] and pokes[name].level <= 5 and value ~= 0 then value = -math.random(pokes[name].offense, pokes[name].offense+5) end end isMeele = true else -- magia if value == 0 then return false else if isMonster(cid) and isMonster(attacker) then value = value * (1.4 + getSpecialAttack(attacker) / 100) value = value / ((1.2 + getSpecialDefense(cid) / 100)) local pokename = doCorrectPokemonName(attacker) if isWild(pokename) then if getPokemonLevelD(pokename) < 20 then value = value * (7 + getSpecialAttack(pokename) / 57) -- 7, /57 elseif getPokemonLevelD(pokename) >= 20 and getPokemonLevelD(pokename) < 26 then value = value * (6 + getSpecialAttack(pokename) / 68) elseif getPokemonLevelD(pokename) >= 26 and getPokemonLevelD(pokename) < 60 then value = value * (1.5 + getSpecialAttack(pokename) / 90) elseif getPokemonLevelD(pokename) >= 60 and getPokemonLevelD(pokename) < 70 then value = value * (2.2 + getSpecialAttack(pokename) / 78) -- 2, 80 elseif getPokemonLevelD(pokename) >= 70 and getPokemonLevelD(pokename) < 80 then value = value * (2.2 + getSpecialAttack(pokename) / 75) -- 2.1, 75 elseif getPokemonLevelD(pokename) >= 80 and getPokemonLevelD(pokename) < 90 then value = value * (2.5 + getSpecialAttack(pokename) / 66) -- 2.5, 67 elseif getPokemonLevelD(pokename) >= 90 and getPokemonLevelD(pokename) <= 100 then value = value * (2.7 + getSpecialAttack(pokename) / 61) -- 2.7, 62 elseif getPokemonLevelD(pokename) > 100 then value = value * (3 + getSpecialAttack(pokename) / 55) -- 2.8, 60 else value = value * (1.2 + getSpecialAttack(pokename) / 100) -- 0.9, /102 end end end end end if isInArray({"Shiny Magmortar", "Shiny Electivire", "Shiny Scizor", "Shiny Salamence"}, getCreatureName(cid)) and combat ~= 1 then combat = 1 end local spellType = combat or 'none' local multiply = 1 if isInArray(getPokemonDisadvantage(getCreatureName(cid)), spellType) then multiply = 2 end if isInArray(getPokemonAdvantage(getCreatureName(cid)), spellType) then multiply = 1 end if isInArray(specialabilities["levitate"], getCreatureName(cid)) and spellType == GROUNDDAMAGE then return false end if value == 0 then value = -math.random(250, 1000) end --[[ local master = getCreatureMaster(attacker) if isSummon(attacker) and getPlayerClanName(master) ~= 'No Clan!' then -- BONUS DE CLAN if getPlayerClanName(master) == "orebound" and (combat == ROCKDAMAGE or combat == GROUNDDAMAGE) then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 25)) end if getPlayerClanName(master) == "naturia" and (combat == GRASSDAMAGE or combat == BUGDAMAGE) then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 25)) end if getPlayerClanName(master) == "seavell" and (combat == WATERDAMAGE or combat == ICEDAMAGE) then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 25)) end if getPlayerClanName(master) == "wingeon" and (combat == FLYINGDAMAGE or combat == DRAGONDAMAGE) then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 25)) end if getPlayerClanName(master) == "malefic" and (combat == POISONDAMAGE or combat == DARKDAMAGE or combat == GHOSTDAMAGE) then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 25)) end if getPlayerClanName(master) == "gardestrike" and (combat == NORMALDAMAGE or combat == FIGHTINGDAMAGE) then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 25)) end if getPlayerClanName(master) == "psycraft" and combat == PSYCHICDAMAGE then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 35)) end if getPlayerClanName(master) == "ironhard" and combat == STEEL then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 35)) end if getPlayerClanName(master) == "volcanic" and combat == FIREDAMAGE then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 35)) end if getPlayerClanName(master) == "raibolt" and combat == ELECTRICDAMAGE then value = value * tonumber(getPercentClan(master) + (getPlayerClanLevel(master) * 35)) end end ]]-- if value == 0 then --value = -getEffectvineCombat(cid, attacker, getOffense(attacker)) end -- rever isto.. colocar dano base do xml value = value - (value * (getDefense(cid) / 100)) -- buff deff system, defendendo por % -------- boost system value = (value) + (boost_def * (value * -1)) value = (value - getMasterLevel(attacker)) - (boost_attk * (value * -1)) -------- boost system value = math.ceil(value * -1) value = value * multiply if value >= getCreatureHealth(cid) then value = getCreatureHealth(cid) end if value < 0 then value = value * -1 end if ehLenda(attacker) then value = math.floor(value * rateDamageLegendary) -- 2.7 elseif isPokeOutland(getCreatureName(attacker)) then value = math.floor(value * rateDamageOutland) end if isMeele then if getPlayerStorageValue(attacker, 463523) == "Rage" then value = value * 2 end end if not isMeele then if string.find(doCorrectString(getCreatureName(attacker)), "Shiny") then value = value * rateDamageSpellShiny else value = value * rateDamageSpellNormal end end if isSummon(attacker) then value = math.floor(value * rateSummonDamage) elseif isWild(attacker) then value = math.floor(value * rateWildDamage) end -------- xp por dano if (isNpc(attacker) or isSummon(attacker)) and not isSummon(cid) then if isNpc(attacker) then addPlayerDano(cid, getNpcMaster(attacker), value) else addPlayerDano(cid, getCreatureMaster(attacker), value) end end -------- xp por dano if critical then -- X-Critical system value = value * 2 doSendAnimatedText(getThingPos(cid), "CRITICAL", COLOR_BURN) end value = math.floor(value) if isMeele then -- atk raceCombat = typeTable[combat] if raceCombat ~= nil and raceCombat ~= 0 then doSendAnimatedText(getThingPos(cid), (value == 0 and "" or value), (isMega(cid)) and 180 or raceCombat.color) else doSendAnimatedText(getThingPos(cid), (value == 0 and "" or value), 128) end else -- spells raceCombat = typeTable[combat] if raceCombat ~= nil and raceCombat ~= 0 then doSendAnimatedText(getThingPos(cid), (value == 0 and "" or value), (isMega(cid)) and 180 or raceCombat.color) else doSendAnimatedText(getThingPos(cid), (value == 0 and "" or value), 129) end end if returnDamage then local valueToReturn = math.ceil(value * (returnDamageValue / 100)) if valueToReturn > getCreatureHealth(attacker) then valueToReturn = getCreatureHealth(attacker) -1 end if valueToReturn > 1 then value = value - valueToReturn if returntype then local raceCombat = typeTable[combat] doSendAnimatedText(getThingPos(attacker), (valueToReturn == 0 and "" or valueToReturn), raceCombat.color) doSendAnimatedText(getThingPos(cid), "REFLECT", 31) doSendMagicEffect(getThingPos(attacker), 3) else doSendAnimatedText(getThingPos(attacker), (valueToReturn == 0 and "" or valueToReturn), 31) doSendMagicEffect(getThingPos(attacker), 3) end doCreatureAddHealth(attacker, -valueToReturn) end end local spellName = getPlayerStorageValue(attacker, 21102) --setPlayerStorageValue(attacker, 21102, -1) -- reseta a spellName do pokemon atacante -- if getCreatureName(cid) == "Swellow" and isWithCondition(cid) then -- setPlayerStorageValue(cid, 5000003, 1) -- return true -- end if isInArray({"Zigzagoon", "Linoone"}, getCreatureName(cid)) then doRaiseStatus(cid, 0, 0, 400, 10) end if getCreatureName(cid) == "Spinda" and getPlayerStorageValue(cid, 5000010) - os.time() < 0 then docastspell(cid, "Contrary Confusion") setPlayerStorageValue(cid, 5000010, os.time() + 8) end if isSummon(cid) then if getCreatureName(cid) == "Exploud" and getPlayerStorageValue(cid, 5000010) - os.time() < 0 then docastspell(cid, "Uproar") setPlayerStorageValue(cid, 5000010, os.time() + 10) end end if getCreatureName(cid) == "Seviper" and getPlayerStorageValue(cid, 5000010) - os.time() < 0 then docastspell(cid, "Shed Skin") setPlayerStorageValue(cid, 5000010, os.time() + 12) end if getCreatureName(cid) == "Kangaskhan" and math.random(1, 100) < 25 and isMega(cid) then docastspell(cid, "Groundshock", 0, 0) -- passiva mega kangaskhan Groundshock end if (combat == POISONEDDAMAGE or combat == BURNEDDAMAGE) and value >= getCreatureHealth(cid) then value = 0 end -- if value >= getCreatureHealth(cid) then if isSummon(cid) then if isInArray({"Aggron", "Sudowoodo", "Shiny Sudowoodo", "Mega Aggron"}, getCreatureName(cid)) then doCreatureAddHealth(cid, -(getCreatureHealth(cid)-1)) docastspell(cid, "Sturdy", 0, 0) if isSummon(cid) then doSendLifePokeToOTC(getCreatureMaster(cid)) end return false end end doKillWildPoke(attacker, cid) return false end -- if isInArray({"Carvanha", "Sharpedo"}, getCreatureName(cid)) and getPlayerStorageValue(cid, 5000010) - os.time() < 0 then if getCreatureHealth(cid) <= 7500 then docastspell(cid, "Rage") setPlayerStorageValue(cid, 5000010, os.time() + 5) end end if isInArray({"zubat", "golbat", "crobat", "shiny zubat", "shiny golbat", "shiny crobat", "shiny crobat"}, getCreatureName(attacker):lower()) and (combat == 128 or combat == 1) then if isWild(attacker) then value = math.floor(value*0.8) end value = math.floor(value*0.9) doCreatureAddHealth(attacker, math.floor(value)) doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(value), 30) end -- local swim = {"Masquerain", "Lotad", "Lombre", "Ludicolo"} if isInArray(swim, getCreatureName(cid)) and combat == FIREDAMAGE then value = value * 0.5 end -- local solid = {"Camerupt"} if isInArray(solid, getCreatureName(cid)) and combat == WATERDAMAGE then value = value * 0.5 end -- if isInArray({"Cacnea", "Cacturn", "Jolteon", "Shiny Jolteon"}, doCorrectString(getCreatureName(cid))) and (combat == 128 or combat == 1) then if value > getCreatureHealth(attacker) then value = 0 else doCreatureAddHealth(attacker, -value) addEvent(doSendAnimatedText, 10, getThingPosWithDebug(attacker), "-"..value, 32) end end -- if getCreatureName(cid) == "Kecleon" then OutfitKecleon(cid, combat) end -- if isInArray({"Cacnea", "Cacturn"}, getCreatureName(cid)) and combat == WATERDAMAGE then if value > getCreatureHealth(attacker) then value = 0 else value = value * 0.3 doCreatureAddHealth(cid, value) addEvent(doSendAnimatedText, 10, getThingPosWithDebug(cid), "+"..value, 32) end end -- local thick = {"Venusaur"} if isInArray(thick, getCreatureName(cid)) and (combat == FIREDAMAGE or combat == ICEDAMAGE) then value = value * 0.5 end if getCreatureName(cid) == "Masquerain" then value = value * 0.75 end if getCreatureName(cid) == "Big Porygon" and isWild(cid) then local posis = {{x = 1231, y = 368, z = 9}, {x = 1235, y = 371, z = 9}, {x = 1241, y = 377, z = 9}, {x = 1241, y = 368, z = 9}, {x = 1230, y = 376, z = 9}, {x = 1235, y = 379, z = 9}} local posss = posis[math.random(#posis)] if math.random(1, 100) < 20 then doSendAnimatedText(getThingPos(cid), "TELEPORT", 32) addEvent(doTeleportThing, 1000, cid, posss) end if math.random(1, 100) <= 15 then doSendAnimatedText(getThingPos(cid), "HELP-ME", 32) addEvent(doCreateMonster, 1000, cid, "Porygon", posss, false) end if math.random(1, 100) <= 7 then if getCreatureHealth(cid) >= 25000 and getCreatureHealth(cid) <= 175000 then doSendAnimatedText(getThingPos(cid), "SECURITY", 32) addEvent(function() doTeleportThing(cid, {x = 1236, y = 367, z = 8}) doCreatureAddHealth(cid, 15000) addEvent(doTeleportThing, 15000, cid, {x = 1235, y = 373, z = 9}) end, 1000) end end if math.random(1, 100) <= 3 then if getCreatureHealth(cid) >= 1 and getCreatureHealth(cid) <= 75000 then doSendAnimatedText(getThingPos(cid), "Finale", 32) for i = 1, #posis do doCreateMonster(cid, "Porygon2", posis[i], false) end end end end --[[if getCreatureName(cid) == "Shedinja" then docastspell(cid, "Shadow Counter") end]]-- -- end the passives doCreatureAddHealth(cid, -value) doCastPassive(cid) if isSummon(cid) then -- otclient life doSendLifePokeToOTC(getCreatureMaster(cid)) -- otclient life end end if isNpc(attacker) then if value >= getCreatureHealth(cid) then doKillWildPoke(attacker, cid) setNpcFollow(getNpcMaster(attacker), attacker) return false end return false end return false end function getMasterLevel(cid) if isSummon(cid) then return getPlayerLevel(getCreatureMaster(cid)) end return 0 end Obrigado desde ja! .Qual servidor ou website você utiliza como base? MasterX Qual o motivo deste tópico? Erro de script Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

Informação Importante

Confirmação de Termo