From 0abc64a1a6fe847cdcff135634a0ba72efae7393 Mon Sep 17 00:00:00 2001 From: Caznovia <104919647+Caznovia@users.noreply.github.com> Date: Sun, 28 Dec 2025 11:20:33 -0500 Subject: [PATCH 001/139] Gen 3: Remove Tickle from King's Rock list (#11479) --- data/mods/gen3/items.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/mods/gen3/items.ts b/data/mods/gen3/items.ts index f3bc45365e..30526bd86b 100644 --- a/data/mods/gen3/items.ts +++ b/data/mods/gen3/items.ts @@ -138,8 +138,8 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { inherit: true, onModifyMove(move) { const affectedByKingsRock = [ - 'aerialace', 'aeroblast', 'aircutter', 'armthrust', 'barrage', 'beatup', 'bide', 'bind', 'blastburn', 'bonerush', 'bonemerang', 'bounce', 'brickbreak', 'bulletseed', 'clamp', 'cometpunch', 'crabhammer', 'crosschop', 'cut', 'dig', 'dive', 'doublekick', 'doubleslap', 'doubleedge', 'dragonbreath', 'dragonclaw', 'dragonrage', 'drillpeck', 'earthquake', 'eggbomb', 'endeavor', 'eruption', 'explosion', 'extremespeed', 'falseswipe', 'feintattack', 'firespin', 'flail', 'fly', 'frenzyplant', 'frustration', 'furyattack', 'furycutter', 'furyswipes', 'gust', 'hiddenpower', 'highjumpkick', 'hornattack', 'hydrocannon', 'hydropump', 'hyperbeam', 'iceball', 'iciclespear', 'jumpkick', 'karatechop', 'leafblade', 'lowkick', 'machpunch', 'magicalleaf', 'magnitude', 'megakick', 'megapunch', 'megahorn', 'meteormash', 'mudshot', 'muddywater', 'nightshade', 'outrage', 'overheat', 'payday', 'peck', 'petaldance', 'pinmissile', 'poisontail', 'pound', 'psychoboost', 'psywave', 'quickattack', 'rage', 'rapidspin', 'razorleaf', 'razorwind', 'return', 'revenge', 'reversal', 'rockblast', 'rockthrow', 'rollingkick', 'rollout', 'sandtomb', 'scratch', 'seismictoss', 'selfdestruct', 'shadowpunch', 'shockwave', 'signalbeam', 'silverwind', 'skullbash', 'skyattack', 'skyuppercut', 'slam', 'slash', 'snore', 'solarbeam', 'sonicboom', 'spikecannon', 'spitup', 'steelwing', 'strength', 'struggle', 'submission', 'surf', 'swift', 'tackle', 'takedown', 'thrash', 'tickle', 'triplekick', 'twister', 'uproar', 'visegrip', 'vinewhip', 'vitalthrow', 'volttackle', 'watergun', 'waterpulse', 'waterfall', 'weatherball', 'whirlpool', 'wingattack', 'wrap', - ]; + 'aerialace', 'aeroblast', 'aircutter', 'armthrust', 'barrage', 'beatup', 'bide', 'bind', 'blastburn', 'bonerush', 'bonemerang', 'bounce', 'brickbreak', 'bulletseed', 'clamp', 'cometpunch', 'crabhammer', 'crosschop', 'cut', 'dig', 'dive', 'doublekick', 'doubleslap', 'doubleedge', 'dragonbreath', 'dragonclaw', 'dragonrage', 'drillpeck', 'earthquake', 'eggbomb', 'endeavor', 'eruption', 'explosion', 'extremespeed', 'falseswipe', 'feintattack', 'firespin', 'flail', 'fly', 'frenzyplant', 'frustration', 'furyattack', 'furycutter', 'furyswipes', 'gust', 'hiddenpower', 'highjumpkick', 'hornattack', 'hydrocannon', 'hydropump', 'hyperbeam', 'iceball', 'iciclespear', 'jumpkick', 'karatechop', 'leafblade', 'lowkick', 'machpunch', 'magicalleaf', 'magnitude', 'megakick', 'megapunch', 'megahorn', 'meteormash', 'mudshot', 'muddywater', 'nightshade', 'outrage', 'overheat', 'payday', 'peck', 'petaldance', 'pinmissile', 'poisontail', 'pound', 'psychoboost', 'psywave', 'quickattack', 'rage', 'rapidspin', 'razorleaf', 'razorwind', 'return', 'revenge', 'reversal', 'rockblast', 'rockthrow', 'rollingkick', 'rollout', 'sandtomb', 'scratch', 'seismictoss', 'selfdestruct', 'shadowpunch', 'shockwave', 'signalbeam', 'silverwind', 'skullbash', 'skyattack', 'skyuppercut', 'slam', 'slash', 'snore', 'solarbeam', 'sonicboom', 'spikecannon', 'spitup', 'steelwing', 'strength', 'struggle', 'submission', 'surf', 'swift', 'tackle', 'takedown', 'thrash', 'triplekick', 'twister', 'uproar', 'visegrip', 'vinewhip', 'vitalthrow', 'volttackle', 'watergun', 'waterpulse', 'waterfall', 'weatherball', 'whirlpool', 'wingattack', 'wrap', + ]; // Tickle also has the move flag, but can never flinch because King's Rock requires damage to trigger if (affectedByKingsRock.includes(move.id)) { if (!move.secondaries) move.secondaries = []; move.secondaries.push({ From 40efc83fa00356ce28551c8ef7459f690faefd7f Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 28 Dec 2025 11:51:52 -0700 Subject: [PATCH 002/139] ADV LC: Ban Diglett --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 168cf16471..c1e1cc627b 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -4843,7 +4843,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen3', searchShow: false, ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause', 'Accuracy Moves Clause'], - banlist: ['Chansey', 'Meditite', 'Omanyte', 'Porygon', 'Scyther', 'Wynaut', 'Zigzagoon', 'Deep Sea Tooth', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger', 'Thunder Wave'], + banlist: ['Chansey', 'Diglett', 'Meditite', 'Omanyte', 'Porygon', 'Scyther', 'Wynaut', 'Zigzagoon', 'Deep Sea Tooth', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger', 'Thunder Wave'], }, { name: "[Gen 3] 1v1", From e54906fe2c6c8a593aa6db81ccfc92d3b81f288f Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 00:46:06 -0700 Subject: [PATCH 003/139] Add Likeshop ladders --- config/formats.ts | 22 + .../random-battles/gen9/1v1-factory-sets.json | 2222 +++++++++++++++++ data/random-battles/gen9/teams.ts | 255 ++ test/random-battles/all-gens.js | 70 + 4 files changed, 2569 insertions(+) create mode 100644 data/random-battles/gen9/1v1-factory-sets.json diff --git a/config/formats.ts b/config/formats.ts index c1e1cc627b..a5b70f4c73 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -19,6 +19,28 @@ The column value will be ignored for repeat sections. export const Formats: import('../sim/dex-formats').FormatList = [ + // Likeshop Spotlight + /////////////////////////////////////////////////////////////////// + + { + section: "Likeshop Spotlight", + }, + { + name: "[Gen 9] OU + Solgaleo", + desc: `S/V OU but with Solgaleo.`, + threads: [`• THREAD COMING SOON™`], + mod: 'gen9', + ruleset: ['[Gen 9] OU', '+Solgaleo'], + }, + { + name: "[Gen 9] 1v1 Factory", + desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`, + mod: 'gen9', + team: 'random1v1Factory', + bestOfDefault: true, + ruleset: ['[Gen 9] 1v1'], + }, + // S/V Singles /////////////////////////////////////////////////////////////////// diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json new file mode 100644 index 0000000000..b22d3773fe --- /dev/null +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -0,0 +1,2222 @@ +{ + "Annihilape": { + "weight": 5, + "sets": [ + { + "species": "Annihilape", + "item": "Choice Band", + "ability": "Defiant", + "nature": "Adamant", + "evs": {"hp": 232, "atk": 164, "spd": 96, "spe": 16}, + "moves": [["Close Combat", "Low Kick"], ["Gunk Shot"], ["Outrage"], ["Phantom Force", "Shadow Claw"]], + "weight": 50 + }, + { + "species": "Annihilape", + "item": "Weakness Policy", + "ability": "Defiant", + "nature": "Careful", + "evs": {"hp": 248, "def": 156, "spd": 88, "spe": 16}, + "moves": [["Bulk Up"], ["Rage Fist"], ["Encore"], ["Low Sweep"]], + "weight": 25 + }, + { + "species": "Annihilape", + "item": "Sitrus Berry", + "ability": "Defiant", + "nature": "Impish", + "evs": {"hp": 248, "def": 244, "spe": 16}, + "moves": [["Counter"], ["Bulk Up"], ["Rage Fist"], ["Close Combat"]], + "weight": 25 + } + ] + }, + "Arcanine": { + "weight": 1, + "sets": [ + { + "species": "Arcanine", + "item": "Assault Vest", + "ability": "Intimidate", + "nature": "Naughty", + "evs": {"hp": 224, "atk": 192, "spd": 36, "spe": 56}, + "moves": [["Flare Blitz"], ["Play Rough"], ["Extreme Speed"], ["Overheat"]], + "weight": 100 + } + ] + }, + "Arcanine-Hisui": { + "weight": 2, + "sets": [ + { + "species": "Arcanine-Hisui", + "item": "Choice Band", + "ability": "Rock Head", + "nature": ["Adamant", "Jolly"], + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage", "Iron Head"]], + "weight": 50 + }, + { + "species": "Arcanine-Hisui", + "item": "Choice Scarf", + "ability": "Rock Head", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage"]], + "weight": 50 + } + ] + }, + "Avalugg": { + "weight": 1, + "sets": [ + { + "species": "Avalugg", + "item": "Choice Band", + "ability": "Sturdy", + "nature": "Adamant", + "evs": {"hp": 4, "atk": 252, "def": 252}, + "moves": [["Avalanche"], ["Body Press"], ["Heavy Slam"], ["Mirror Coat", "Earthquake"]], + "weight": 50 + }, + { + "species": "Avalugg", + "item": "Sitrus Berry", + "ability": "Sturdy", + "nature": "Impish", + "evs": {"hp": 252, "atk": 4, "def": 252}, + "moves": [["Body Press"], ["Iron Defense"], ["Recover"], ["Icicle Spear"]], + "weight": 50 + } + ] + }, + "Avalugg-Hisui": { + "weight": 2, + "sets": [ + { + "species": "Avalugg-Hisui", + "item": "Choice Band", + "ability": "Sturdy", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Avalanche"], ["Heavy Slam"], ["Rock Blast", "Stone Edge"], ["Earthquake", "Mirror Coat", "Icicle Spear"]], + "weight": 100 + } + ] + }, + "Azumarill": { + "weight": 3, + "sets": [ + { + "species": "Azumarill", + "item": "Life Orb", + "ability": "Huge Power", + "nature": "Adamant", + "evs": {"hp": 148, "atk": 232, "spd": 84, "spe": 44}, + "moves": [["Play Rough"], ["Liquidation"], ["Trailblaze"], ["Encore"]], + "weight": 50 + }, + { + "species": "Azumarill", + "item": "Leftovers", + "ability": "Sap Sipper", + "nature": "Bold", + "evs": {"hp": 252, "def": 192, "spd": 64}, + "moves": [["Charm"], ["Rest"], ["Amnesia"], ["Chilling Water"]], + "weight": 50 + } + ] + }, + "Basculegion": { + "weight": 5, + "sets": [ + { + "species": "Basculegion", + "item": "Assault Vest", + "ability": "Adaptability", + "nature": "Adamant", + "evs": {"hp": 64, "atk": 124, "def": 192, "spd": 8, "spe": 120}, + "moves": [["Phantom Force"], ["Wave Crash"], ["Aqua Jet"], ["Night Shade"]], + "weight": 100 + } + ] + }, + "Baxcalibur": { + "weight": 2, + "sets": [ + { + "species": "Baxcalibur", + "item": "Choice Band", + "ability": "Thermal Exchange", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Icicle Crash", "Icicle Spear"], ["Earthquake"], ["Ice Shard", "Scale Shot", "Iron Head"]], + "weight": 100 + } + ] + }, + "Bellibolt": { + "weight": 2, + "sets": [ + { + "species": "Bellibolt", + "item": "Custap Berry", + "ability": "Electromorphosis", + "nature": "Quiet", + "evs": {"hp": 252, "def": 24, "spa": 200, "spd": 32}, + "moves": [["Soak"], ["Thunder"], ["Parabolic Charge"], ["Endure"]], + "weight": 50 + }, + { + "species": "Bellibolt", + "item": "Life Orb", + "ability": "Electromorphosis", + "nature": "Quiet", + "evs": {"hp": 240, "def": 80, "spa": 136, "spd": 52}, + "moves": [["Thunder"], ["Parabolic Charge"], ["Sucker Punch"], ["Soak"]], + "weight": 50 + } + ] + }, + "Blastoise": { + "weight": 1, + "sets": [ + { + "species": "Blastoise", + "item": "Life Orb", + "ability": "Torrent", + "nature": "Bold", + "evs": {"hp": 132, "def": 136, "spa": 128, "spe": 112}, + "moves": [["Shell Smash"], ["Hydro Cannon"], ["Ice Beam"], ["Substitute"]], + "weight": 100 + } + ] + }, + "Blaziken": { + "weight": 1, + "sets": [ + { + "species": "Blaziken", + "item": "Liechi Berry", + "ability": "Speed Boost", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Endure"], ["Flare Blitz"], ["Reversal"], ["Swords Dance"]], + "weight": 100 + } + ] + }, + "Carbink": { + "weight": 1, + "sets": [ + { + "species": "Carbink", + "item": "Shell Bell", + "ability": "Sturdy", + "nature": "Quirky", + "level": 1, + "moves": [["Endeavor"], ["Sand Tomb"], ["Sandstorm"], ["Trick Room", "Protect", "Moonblast"]], + "weight": 100 + } + ] + }, + "Ceruledge": { + "weight": 1, + "sets": [ + { + "species": "Ceruledge", + "item": "Weakness Policy", + "ability": "Weak Armor", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Endure"], ["Flare Blitz"], ["Close Combat"], ["Poltergeist"]], + "weight": 100 + } + ] + }, + "Chansey": { + "weight": 1, + "sets": [ + { + "species": "Chansey", + "item": "Eviolite", + "ability": "Natural Cure", + "nature": "Bold", + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Seismic Toss"], ["Charm", "Defense Curl"], ["Soft-Boiled"], ["Thunder Wave"]], + "weight": 100 + } + ] + }, + "Chien-Pao": { + "weight": 5, + "sets": [ + { + "species": "Chien-Pao", + "item": "Choice Band", + "ability": "Sword of Ruin", + "nature": "Jolly", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Icicle Crash"], ["Throat Chop"], ["Giga Impact"], ["Sacred Sword", "Ice Shard", "Psychic Fangs"]], + "weight": 100 + } + ] + }, + "Clodsire": { + "weight": 1, + "sets": [ + { + "species": "Clodsire", + "item": "Kee Berry", + "ability": "Unaware", + "nature": "Relaxed", + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Curse"], ["Amnesia"], ["Toxic"], ["Recover"]], + "weight": 100 + } + ] + }, + "Corviknight": { + "weight": 8, + "sets": [ + { + "species": "Corviknight", + "item": "Maranga Berry", + "ability": "Pressure", + "nature": "Careful", + "evs": {"hp": 248, "def": 56, "spd": 84, "spe": 120}, + "moves": [["Iron Defense"], ["Body Press"], ["Taunt"], ["Roost"]], + "weight": 40 + }, + { + "species": "Corviknight", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 200, "spd": 56, "spe": 252}, + "moves": [["Protect"], ["Substitute"], ["Roost"], ["Taunt"]], + "weight": 40 + }, + { + "species": "Corviknight", + "item": "Life Orb", + "ability": "Pressure", + "nature": "Adamant", + "evs": {"hp": 24, "atk": 228, "def": 44, "spe": 212}, + "moves": [["Bulk Up"], ["Brave Bird"], ["Iron Head"], ["Taunt"]], + "weight": 20 + } + ] + }, + "Cresselia": { + "weight": 5, + "sets": [ + { + "species": "Cresselia", + "item": "Choice Scarf", + "ability": "Levitate", + "nature": "Bold", + "evs": {"hp": 240, "def": 64, "spa": 56, "spd": 36, "spe": 112}, + "moves": [["Psychic"], ["Ice Beam", "Moonblast"], ["Trick"], ["Moonlight"]], + "weight": 50 + }, + { + "species": "Cresselia", + "item": "Clear Amulet", + "ability": "Levitate", + "nature": "Bold", + "evs": {"hp": 252, "def": 44, "spd": 72, "spe": 140}, + "moves": [["Calm Mind"], ["Moonlight"], ["Stored Power"], ["Future Sight", "Reflect"]], + "weight": 50 + } + ] + }, + "Darkrai": { + "weight": 3, + "sets": [ + { + "species": "Darkrai", + "item": "Choice Specs", + "ability": "Bad Dreams", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Dark Pulse"], ["Ice Beam", "Sludge Bomb"], ["Thunder"], ["Focus Blast"]], + "weight": 100 + } + ] + }, + "Diancie": { + "weight": 3, + "sets": [ + { + "species": "Diancie", + "item": "Weakness Policy", + "ability": "Clear Body", + "nature": "Relaxed", + "evs": {"hp": 240, "atk": 60, "def": 208}, + "moves": [["Trick Room"], ["Play Rough"], ["Diamond Storm"], ["Encore"]], + "weight": 50 + }, + { + "species": "Diancie", + "item": "Weakness Policy", + "ability": "Clear Body", + "nature": "Sassy", + "evs": {"hp": 248, "atk": 76, "spd": 184}, + "moves": [["Play Rough"], ["Diamond Storm"], ["Encore"], ["Trick Room"]], + "weight": 50 + } + ] + }, + "Dondozo": { + "weight": 3, + "sets": [ + { + "species": "Dondozo", + "item": "Choice Band", + "ability": ["Unaware", "Water Veil"], + "nature": "Impish", + "evs": {"hp": 120, "atk": 188, "def": 16, "spd": 184}, + "moves": [["Wave Crash"], ["Earthquake"], ["Avalanche"], ["Heavy Slam", "Outrage"]], + "weight": 100 + } + ] + }, + "Donphan": { + "weight": 5, + "sets": [ + { + "species": "Donphan", + "item": "Choice Band", + "ability": "Sturdy", + "nature": "Adamant", + "evs": {"hp": 8, "atk": 252, "spd": 248}, + "moves": [["Earthquake"], ["Gunk Shot"], ["Head Smash"], ["Play Rough", "Ice Shard"]], + "weight": 50 + }, + { + "species": "Donphan", + "item": "Expert Belt", + "ability": "Sturdy", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Earthquake"], ["Gunk Shot"], ["Trailblaze"], ["Encore"]], + "weight": 50 + } + ] + }, + "Dragapult": { + "weight": 8, + "sets": [ + { + "species": "Dragapult", + "item": "Choice Band", + "ability": "Clear Body", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Dragon Darts", "Psychic Fangs"], ["Phantom Force"], ["U-turn"]], + "weight": 40 + }, + { + "species": "Dragapult", + "item": "Choice Specs", + "ability": "Infiltrator", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Shadow Ball"], ["Draco Meteor"], ["Fire Blast"], ["Thunderbolt", "Hydro Pump"]], + "weight": 40 + }, + { + "species": "Dragapult", + "item": "Weakness Policy", + "ability": "Clear Body", + "nature": "Timid", + "evs": {"hp": 48, "def": 248, "spe": 212}, + "moves": [["Will-O-Wisp"], ["Hex"], ["Substitute"], ["Disable"]], + "weight": 20 + } + ] + }, + "Entei": { + "weight": 5, + "sets": [ + { + "species": "Entei", + "item": "Assault Vest", + "ability": "Inner Focus", + "nature": "Adamant", + "evs": {"hp": 240, "atk": 112, "def": 132, "spd": 24}, + "moves": [["Sacred Fire"], ["Eruption"], ["Flame Charge"], ["Extreme Speed"]], + "weight": 50 + }, + { + "species": "Entei", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Jolly", + "evs": {"hp": 128, "def": 116, "spd": 12, "spe": 252}, + "moves": [["Sacred Fire"], ["Substitute"], ["Protect"], ["Flame Charge"]], + "weight": 50 + } + ] + }, + "Espathra": { + "weight": 3, + "sets": [ + { + "species": "Espathra", + "item": "Clear Amulet", + "ability": "Speed Boost", + "nature": "Calm", + "evs": {"hp": 252, "def": 48, "spd": 192, "spe": 16}, + "moves": [["Calm Mind"], ["Stored Power"], ["Feather Dance"], ["Roost"]], + "weight": 100 + } + ] + }, + "Fezandipiti": { + "weight": 2, + "sets": [ + { + "species": "Fezandipiti", + "item": "Life Orb", + "ability": "Technician", + "nature": "Adamant", + "evs": {"hp": 88, "atk": 220, "spd": 136, "spe": 64}, + "moves": [["Gunk Shot"], ["Play Rough"], ["Dual Wingbeat"], ["Swords Dance"]], + "weight": 60 + }, + { + "species": "Fezandipiti", + "item": "Air Balloon", + "ability": "Toxic Chain", + "nature": "Calm", + "evs": {"hp": 252, "def": 124, "spd": 80, "spe": 52}, + "moves": [["Charm"], ["Moonblast"], ["Icy Wind"], ["Roost"]], + "weight": 40 + } + ] + }, + "Florges": { + "weight": 2, + "sets": [ + { + "species": "Florges", + "item": ["Clear Amulet", "Leftovers"], + "ability": "Flower Veil", + "nature": "Bold", + "evs": {"hp": 108, "def": 252, "spe": 148}, + "moves": [["Calm Mind"], ["Synthesis"], ["Moonblast"], ["Psychic Noise"]], + "weight": 50 + }, + { + "species": "Florges", + "item": "Choice Scarf", + "ability": "Flower Veil", + "nature": "Timid", + "evs": {"hp": 88, "def": 232, "spe": 188}, + "moves": [["Moonblast"], ["Trick"], ["Synthesis"], ["Calm Mind"]], + "weight": 50 + } + ] + }, + "Forretress": { + "weight": 1, + "sets": [ + { + "species": "Forretress", + "item": "Leftovers", + "ability": "Sturdy", + "nature": "Impish", + "evs": {"hp": 248, "def": 252, "spd": 8}, + "moves": [["Iron Defense"], ["Body Press"], ["Rest"], ["Counter"]], + "weight": 100 + } + ] + }, + "Gallade": { + "weight": 1, + "sets": [ + { + "species": "Gallade", + "item": "Choice Band", + "ability": "Sharpness", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Sacred Sword"], ["Psycho Cut"], ["Leaf Blade"], ["Triple Axel"]], + "weight": 100 + } + ] + }, + "Garchomp": { + "weight": 8, + "sets": [ + { + "species": "Garchomp", + "item": "Life Orb", + "ability": "Rough Skin", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 176, "spe": 80}, + "moves": [["Earthquake"], ["Scale Shot"], ["Swords Dance"], ["Outrage"]], + "weight": 50 + }, + { + "species": "Garchomp", + "item": "Choice Band", + "ability": "Rough Skin", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Earthquake"], ["Scale Shot"], ["Fire Fang", "Iron Head"]], + "weight": 50 + } + ] + }, + "Glastrier": { + "weight": 1, + "sets": [ + { + "species": "Glastrier", + "item": "Choice Band", + "ability": "Chilling Neigh", + "nature": "Adamant", + "evs": {"hp": 252, "atk": 252, "spd": 4}, + "moves": [["Avalanche"], ["Close Combat"], ["Heavy Slam"], ["High Horsepower", "Crunch"]], + "weight": 100 + } + ] + }, + "Goodra-Hisui": { + "weight": 8, + "sets": [ + { + "species": "Goodra-Hisui", + "item": "Custap Berry", + "ability": "Sap Sipper", + "nature": "Sassy", + "evs": {"hp": 248, "def": 24, "spa": 148, "spd": 88}, + "moves": [["Draco Meteor"], ["Sludge Wave", "Flash Cannon"], ["Acid Spray"], ["Endure"]], + "weight": 25 + }, + { + "species": "Goodra-Hisui", + "item": "Choice Band", + "ability": "Sap Sipper", + "nature": "Adamant", + "evs": {"hp": 248, "atk": 236, "def": 24}, + "moves": [["Outrage"], ["Heavy Slam"], ["Earthquake"], ["Skitter Smack"]], + "weight": 25 + }, + { + "species": "Goodra-Hisui", + "item": "Assault Vest", + "ability": "Sap Sipper", + "nature": "Sassy", + "evs": {"hp": 248, "def": 24, "spa": 60, "spd": 176}, + "moves": [["Acid Spray"], ["Draco Meteor"], ["Flash Cannon"], ["Knock Off"]], + "weight": 25 + }, + { + "species": "Goodra-Hisui", + "item": "Chople Berry", + "ability": "Sap Sipper", + "nature": "Sassy", + "evs": {"hp": 244, "atk": 32, "def": 60, "spa": 84, "spd": 88}, + "moves": [["Acid Spray"], ["Draco Meteor"], ["Heavy Slam"], ["Counter"]], + "weight": 25 + } + ] + }, + "Grafaiai": { + "weight": 1, + "sets": [ + { + "species": "Grafaiai", + "item": "Lagging Tail", + "ability": "Prankster", + "nature": "Sassy", + "evs": {"hp": 248, "def": 96, "spd": 164}, + "ivs": {"spe": 0}, + "moves": [["Poison Jab"], ["Dig"], ["Copycat"], ["Encore"]], + "weight": 100 + } + ] + }, + "Great Tusk": { + "weight": 5, + "sets": [ + { + "species": "Great Tusk", + "item": "Choice Band", + "ability": "Protosynthesis", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Earthquake", "Headlong Rush"], ["Close Combat"], ["Supercell Slam"], ["Ice Spinner", "Heavy Slam", "Megahorn"]], + "weight": 40 + }, + { + "species": "Great Tusk", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Adamant", + "evs": {"hp": 24, "atk": 224, "def": 56, "spe": 204}, + "moves": [["Bulk Up"], ["Headlong Rush"], ["Close Combat"], ["Ice Spinner", "Knock Off"]], + "weight": 30 + }, + { + "species": "Great Tusk", + "item": "Choice Scarf", + "ability": "Protosynthesis", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Earthquake"], ["Close Combat"], ["Head Smash"], ["Ice Spinner", "Knock Off", "Megahorn", "Heavy Slam"]], + "weight": 30 + } + ] + }, + "Greninja": { + "weight": 2, + "sets": [ + { + "species": "Greninja", + "item": "Choice Specs", + "ability": "Protean", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Ice Beam"], ["Hydro Cannon"], ["Sludge Wave"], ["Dark Pulse", "Grass Knot"]], + "weight": 40 + }, + { + "species": "Greninja", + "item": "Petaya Berry", + "ability": "Torrent", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 30}, + "moves": [["Taunt"], ["Hydro Cannon"], ["Dark Pulse"], ["Substitute"]], + "weight": 30 + }, + { + "species": "Greninja", + "item": "Life Orb", + "ability": "Protean", + "nature": "Hasty", + "evs": {"atk": 252, "spa": 8, "spd": 64, "spe": 184}, + "moves": [["Gunk Shot"], ["Hydro Cannon"], ["U-turn"], ["Shadow Sneak"]], + "weight": 30 + } + ] + }, + "Haxorus": { + "weight": 7, + "sets": [ + { + "species": "Haxorus", + "item": "Choice Band", + "ability": "Unnerve", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Outrage"], ["Scale Shot"], ["First Impression"], ["Close Combat", "Iron Tail", "Poison Jab", "Earthquake"]], + "weight": 50 + }, + { + "species": "Haxorus", + "item": "Choice Scarf", + "ability": "Unnerve", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Outrage"], ["Close Combat"], ["Poison Jab", "Iron Tail"], ["Rock Slide", "Earthquake"]], + "weight": 50 + } + ] + }, + "Heatran": { + "weight": 1, + "sets": [ + { + "species": "Heatran", + "item": "Air Balloon", + "ability": "Flame Body", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Overheat"], ["Flash Cannon"], ["Substitute", "Endure", "Earth Power"], ["Metal Sound"]], + "weight": 100 + } + ] + }, + "Hoopa-Unbound": { + "weight": 10, + "sets": [ + { + "species": "Hoopa-Unbound", + "item": "Choice Band", + "ability": "Magician", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Zen Headbutt"], ["Drain Punch", "Fire Punch"]], + "weight": 20 + }, + { + "species": "Hoopa-Unbound", + "item": "Choice Specs", + "ability": "Magician", + "nature": "Modest", + "evs": {"def": 4, "spa": 252, "spe": 252}, + "moves": [["Psychic"], ["Dark Pulse"], ["Thunderbolt"], ["Grass Knot", "Focus Blast"]], + "weight": 20 + }, + { + "species": "Hoopa-Unbound", + "item": "Assault Vest", + "ability": "Magician", + "nature": "Adamant", + "evs": {"hp": 168, "atk": 252, "def": 68, "spe": 20}, + "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Psychic Noise"], ["Knock Off"]], + "weight": 20 + }, + { + "species": "Hoopa-Unbound", + "item": "Custap Berry", + "ability": "Magician", + "nature": "Naughty", + "evs": {"hp": 132, "atk": 220, "def": 140, "spe": 16}, + "moves": [["Psychic"], ["Hyperspace Fury"], ["Gunk Shot"], ["Endure"]], + "weight": 20 + }, + { + "species": "Hoopa-Unbound", + "item": "Life Orb", + "ability": "Magician", + "nature": "Lonely", + "evs": {"hp": 240, "def": 76, "spa": 96, "spe": 96}, + "moves": [["Gunk Shot"], ["Psychic"], ["Dark Pulse"], ["Calm Mind"]], + "weight": 20 + } + ] + }, + "Iron Boulder": { + "weight": 1, + "sets": [ + { + "species": "Iron Boulder", + "item": "Choice Band", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Mighty Cleave"], ["Zen Headbutt"], ["Sacred Sword"], ["Megahorn"]], + "weight": 100 + } + ] + }, + "Iron Bundle": { + "weight": 1, + "sets": [ + { + "species": "Iron Bundle", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Modest", + "evs": {"hp": 28, "spa": 116, "spd": 216, "spe": 148}, + "moves": [["Thief"], ["Hydro Pump"], ["Freeze-Dry"], ["Encore"]], + "weight": 50 + }, + { + "species": "Iron Bundle", + "item": "Choice Specs", + "ability": "Quark Drive", + "nature": "Timid", + "evs": {"hp": 44, "def": 152, "spa": 144, "spe": 168}, + "moves": [["Ice Beam"], ["Freeze-Dry"], ["Hydro Pump"], ["Chilling Water"]], + "weight": 50 + } + ] + }, + "Iron Crown": { + "weight": 9, + "sets": [ + { + "species": "Iron Crown", + "item": "Weakness Policy", + "ability": "Quark Drive", + "nature": "Bold", + "evs": {"hp": 240, "def": 232, "spe": 36}, + "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock"]], + "weight": 25 + }, + { + "species": "Iron Crown", + "item": "Weakness Policy", + "ability": "Quark Drive", + "nature": "Timid", + "evs": {"hp": 252, "spd": 4, "spe": 252}, + "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock", "Psychic Noise"]], + "weight": 25 + }, + { + "species": "Iron Crown", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Modest", + "evs": {"hp": 244, "def": 16, "spa": 196, "spd": 16, "spe": 36}, + "moves": [["Calm Mind"], ["Psychic Noise"], ["Tachyon Cutter"], ["Focus Blast", "Hyper Beam"]], + "weight": 50 + } + ] + }, + "Iron Hands": { + "weight": 7, + "sets": [ + { + "species": "Iron Hands", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Adamant", + "evs": {"atk": 204, "spd": 220, "spe": 84}, + "moves": [["Close Combat"], ["Supercell Slam"], ["Fake Out"], ["Swords Dance", "Earthquake", "Heavy Slam"]], + "weight": 75 + }, + { + "species": "Iron Hands", + "item": "Custap Berry", + "ability": "Quark Drive", + "nature": "Adamant", + "evs": {"hp": 32, "atk": 252, "def": 44, "spd": 96, "spe": 84}, + "moves": [["Supercell Slam"], ["Reversal"], ["Endure"], ["Heavy Slam", "Swords Dance"]], + "weight": 25 + } + ] + }, + "Iron Moth": { + "weight": 3, + "sets": [ + { + "species": "Iron Moth", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Timid", + "evs": {"hp": 4, "spa": 252, "spe": 252}, + "moves": [["Overheat"], ["Sludge Wave"], ["Bug Buzz", "Dazzling Gleam", "Hurricane"], ["Protect", "Endure"]], + "weight": 100 + } + ] + }, + "Iron Treads": { + "weight": 2, + "sets": [ + { + "species": "Iron Treads", + "item": "Choice Band", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Heavy Slam"], ["Earthquake"], ["Megahorn"], ["Ice Spinner"]], + "weight": 70 + }, + { + "species": "Iron Treads", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"hp": 252, "atk": 116, "def": 60, "spe": 80}, + "moves": [["Iron Defense"], ["Body Press"], ["Earthquake"], ["Heavy Slam"]], + "weight": 30 + } + ] + }, + "Iron Valiant": { + "weight": 9, + "sets": [ + { + "species": "Iron Valiant", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Timid", + "evs": {"hp": 252, "def": 232, "spe": 24}, + "moves": [["Moonblast"], ["Protect"], ["Encore"], ["Disable"]], + "weight": 25 + }, + { + "species": "Iron Valiant", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"hp": 252, "def": 96, "spd": 136, "spe": 24}, + "moves": [["Spirit Break"], ["Protect"], ["Encore"], ["Disable"]], + "weight": 25 + }, + { + "species": "Iron Valiant", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Spirit Break"], ["Reversal"], ["Disable"], ["Substitute"]], + "weight": 25 + }, + { + "species": "Iron Valiant", + "item": "Choice Band", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"hp": 4, "atk": 220, "spd": 32, "spe": 252}, + "moves": [["Spirit Break"], ["Close Combat"], ["Giga Impact"], ["Trick", "Ice Punch"]], + "weight": 25 + } + ] + }, + "Klefki": { + "weight": 1, + "sets": [ + { + "species": "Klefki", + "item": "Leftovers", + "ability": "Prankster", + "nature": "Bold", + "evs": {"hp": 200, "def": 128, "spa": 24, "spd": 156}, + "moves": [["Draining Kiss"], ["Iron Defense"], ["Calm Mind"], ["Stored Power"]], + "weight": 100 + } + ] + }, + "Kyurem": { + "weight": 3, + "sets": [ + { + "species": "Kyurem", + "item": "Choice Specs", + "ability": "Pressure", + "nature": "Timid", + "evs": {"def": 4, "spa": 252, "spe": 252}, + "moves": [["Draco Meteor"], ["Freeze-Dry"], ["Ice Beam"], ["Earth Power", "Flash Cannon"]], + "weight": 40 + }, + { + "species": "Kyurem", + "item": "Weakness Policy", + "ability": "Pressure", + "nature": "Modest", + "evs": {"hp": 12, "def": 64, "spa": 240, "spe": 192}, + "moves": [["Reflect"], ["Outrage"], ["Freeze-Dry"], ["Draco Meteor"]], + "weight": 40 + }, + { + "species": "Kyurem", + "item": "Choice Scarf", + "ability": "Pressure", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Draco Meteor"], ["Ice Beam", "Flash Cannon"], ["Earth Power"], ["Freeze-Dry"]], + "weight": 20 + } + ] + }, + "Landorus": { + "weight": 2, + "sets": [ + { + "species": "Landorus", + "item": "Life Orb", + "ability": "Sheer Force", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Earth Power"], ["Sludge Wave"], ["Focus Blast", "Taunt"], ["Smack Down", "Rock Slide"]], + "weight": 100 + } + ] + }, + "Landorus-Therian": { + "weight": 8, + "sets": [ + { + "species": "Landorus-Therian", + "item": "Life Orb", + "ability": "Intimidate", + "nature": "Adamant", + "evs": {"hp": 8, "atk": 136, "def": 196, "spe": 168}, + "moves": [["Earthquake"], ["Swords Dance"], ["Outrage"], ["Smack Down"]], + "weight": 50 + }, + { + "species": "Landorus-Therian", + "item": "Choice Band", + "ability": "Intimidate", + "nature": "Adamant", + "evs": {"hp": 232, "atk": 32, "def": 36, "spd": 120, "spe": 88}, + "moves": [["Earthquake"], ["Outrage"], ["Rock Tomb"], ["Fly"]], + "weight": 50 + } + ] + }, + "Latias": { + "weight": 1, + "sets": [ + { + "species": "Latias", + "item": "Weakness Policy", + "ability": "Levitate", + "nature": "Timid", + "evs": {"hp": 252, "spd": 4, "spe": 252}, + "moves": [["Reflect"], ["Calm Mind"], ["Stored Power"], ["Draco Meteor"]], + "weight": 100 + } + ] + }, + "Magnezone": { + "weight": 1, + "sets": [ + { + "species": "Magnezone", + "item": "Custap Berry", + "ability": "Sturdy", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Endure"], ["Thunderbolt"], ["Metal Sound"], ["Flash Cannon"]], + "weight": 50 + }, + { + "species": "Magnezone", + "item": "Choice Specs", + "ability": "Sturdy", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Hyper Beam"], ["Thunderbolt"], ["Flash Cannon"], ["Mirror Coat"]], + "weight": 50 + } + ] + }, + "Manaphy": { + "weight": 5, + "sets": [ + { + "species": "Manaphy", + "item": "Life Orb", + "ability": "Hydration", + "nature": "Timid", + "evs": {"hp": 60, "def": 68, "spa": 128, "spe": 252}, + "moves": [["Tail Glow"], ["Surf"], ["Alluring Voice"], ["Energy Ball"]], + "weight": 50 + }, + { + "species": "Manaphy", + "item": "Clear Amulet", + "ability": "Hydration", + "nature": "Timid", + "evs": {"hp": 172, "def": 84, "spe": 252}, + "moves": [["Take Heart"], ["Acid Armor"], ["Rest"], ["Scald"]], + "weight": 25 + }, + { + "species": "Manaphy", + "item": ["Sitrus Berry", "Chesto Berry"], + "ability": "Hydration", + "nature": "Timid", + "evs": {"hp": 252, "def": 4, "spe": 252}, + "moves": [["Scald"], ["Acid Armor"], ["Take Heart"], ["Rest"]], + "weight": 25 + } + ] + }, + "Maushold-Four": { + "weight": 1, + "sets": [ + { + "species": "Maushold-Four", + "item": "Wide Lens", + "ability": "Technician", + "nature": "Jolly", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Population Bomb"], ["Feint"], ["Encore"], ["Tickle", "Tidy Up"]], + "weight": 100 + } + ] + }, + "Meowscarada": { + "weight": 7, + "sets": [ + { + "species": "Meowscarada", + "item": "Choice Band", + "ability": "Protean", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Flower Trick"], ["Knock Off"], ["Triple Axel"], ["Giga Impact", "Low Kick", "Play Rough"]], + "weight": 100 + } + ] + }, + "Metagross": { + "weight": 9, + "sets": [ + { + "species": "Metagross", + "item": "Weakness Policy", + "ability": "Clear Body", + "nature": "Impish", + "evs": {"hp": 248, "atk": 100, "def": 116, "spd": 44}, + "moves": [["Heavy Slam"], ["Bullet Punch"], ["Earthquake"], ["Psychic Fangs"]], + "weight": 40 + }, + { + "species": "Metagross", + "item": "Assault Vest", + "ability": "Clear Body", + "nature": "Impish", + "evs": {"hp": 252, "atk": 108, "def": 116, "spd": 32}, + "moves": [["Heavy Slam"], ["Psychic Fangs"], ["Earthquake"], ["Bullet Punch"]], + "weight": 40 + }, + { + "species": "Metagross", + "item": "Air Balloon", + "ability": "Clear Body", + "nature": "Impish", + "evs": {"hp": 248, "atk": 28, "def": 136, "spe": 96}, + "moves": [["Iron Defense"], ["Body Press"], ["Heavy Slam"], ["Bullet Punch"]], + "weight": 20 + } + ] + }, + "Moltres-Galar": { + "weight": 5, + "sets": [ + { + "species": "Moltres-Galar", + "item": "Custap Berry", + "ability": "Berserk", + "nature": "Modest", + "evs": {"hp": 248, "def": 148, "spa": 104, "spd": 8}, + "moves": [["Hurricane"], ["Fiery Wrath"], ["Endure"], ["Nasty Plot"]], + "weight": 40 + }, + { + "species": "Moltres-Galar", + "item": "Life Orb", + "ability": "Berserk", + "nature": "Modest", + "evs": {"atk": 4, "def": 232, "spa": 96, "spe": 176}, + "moves": [["Fiery Wrath"], ["Hurricane"], ["Taunt", "Sucker Punch"], ["Nasty Plot"]], + "weight": 30 + }, + { + "species": "Moltres-Galar", + "item": "Weakness Policy", + "ability": "Berserk", + "nature": "Modest", + "evs": {"hp": 240, "def": 216, "spa": 36, "spd": 16}, + "moves": [["Fiery Wrath"], ["Hurricane"], ["Sucker Punch"], ["Air Slash", "Nasty Plot", "Taunt"]], + "weight": 30 + } + ] + }, + "Ninetales-Alola": { + "weight": 8, + "sets": [ + { + "species": "Ninetales-Alola", + "item": "Leftovers", + "ability": "Snow Warning", + "nature": "Timid", + "evs": {"hp": 216, "def": 40, "spe": 252}, + "moves": [["Protect"], ["Encore"], ["Disable"], ["Moonblast"]], + "weight": 80 + }, + { + "species": "Ninetales-Alola", + "item": "Life Orb", + "ability": "Snow Warning", + "nature": "Timid", + "evs": {"hp": 208, "spa": 100, "spe": 200}, + "moves": [["Calm Mind"], ["Freeze-Dry"], ["Blizzard"], ["Moonblast"]], + "weight": 20 + } + ] + }, + "Ogerpon-Wellspring": { + "weight": 8, + "sets": [ + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Jolly", + "evs": {"hp": 248, "atk": 8, "spe": 252}, + "moves": [["Spiky Shield"], ["Ivy Cudgel", "Power Whip"], ["Leech Seed"], ["Substitute"]], + "weight": 40 + }, + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Jolly", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Power Whip"], ["Ivy Cudgel"], ["Encore"], ["Trailblaze", "Rock Tomb"]], + "weight": 20 + }, + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Adamant", + "evs": {"hp": 200, "atk": 192, "spe": 116}, + "moves": [["Power Whip"], ["Ivy Cudgel"], ["Knock Off"], ["Low Kick", "Play Rough", "Encore"]], + "weight": 20 + }, + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Impish", + "evs": {"hp": 252, "atk": 80, "def": 144, "spe": 32}, + "moves": [["Trailblaze"], ["Counter"], ["Encore"], ["Ivy Cudgel"]], + "weight": 20 + } + ] + }, + "Okidogi": { + "weight": 1, + "sets": [ + { + "species": "Okidogi", + "item": "Choice Band", + "ability": "Toxic Chain", + "nature": "Adamant", + "evs": {"hp": 216, "atk": 164, "spd": 28, "spe": 100}, + "moves": [["Gunk Shot"], ["Low Kick"], ["Knock Off"], ["Outrage"]], + "weight": 50 + }, + { + "species": "Okidogi", + "item": "Assault Vest", + "ability": "Toxic Chain", + "nature": "Adamant", + "evs": {"hp": 104, "atk": 92, "spd": 96, "spe": 216}, + "moves": [["Gunk Shot"], ["Close Combat"], ["Poison Jab"], ["Counter"]], + "weight": 50 + } + ] + }, + "Pecharunt": { + "weight": 9, + "sets": [ + { + "species": "Pecharunt", + "item": "Maranga Berry", + "ability": "Poison Puppeteer", + "nature": "Calm", + "evs": {"hp": 248, "def": 4, "spd": 220, "spe": 36}, + "moves": [["Malignant Chain"], ["Curse"], ["Recover"], ["Parting Shot"]], + "weight": 50 + }, + { + "species": "Pecharunt", + "item": "Air Balloon", + "ability": "Poison Puppeteer", + "nature": "Bold", + "evs": {"hp": 248, "def": 224, "spe": 36}, + "moves": [["Malignant Chain"], ["Curse"], ["Parting Shot"], ["Recover"]], + "weight": 50 + } + ] + }, + "Porygon-Z": { + "weight": 3, + "sets": [ + { + "species": "Porygon-Z", + "item": "Choice Specs", + "ability": "Adaptability", + "nature": "Modest", + "evs": {"hp": 132, "def": 16, "spa": 160, "spd": 12, "spe": 188}, + "moves": [["Hyper Beam"], ["Uproar"], ["Dark Pulse"], ["Thunderbolt"]], + "weight": 40 + }, + { + "species": "Porygon-Z", + "item": "Choice Scarf", + "ability": "Adaptability", + "nature": ["Timid", "Modest"], + "evs": {"hp": 12, "spa": 208, "spd": 36, "spe": 252}, + "moves": [["Hyper Beam"], ["Ice Beam"], ["Dark Pulse"], ["Trick"]], + "weight": 40 + }, + { + "species": "Porygon-Z", + "item": "Custap Berry", + "ability": "Adaptability", + "nature": "Modest", + "evs": {"hp": 240, "spa": 252, "spe": 16}, + "moves": [["Nasty Plot"], ["Uproar"], ["Hyper Beam"], ["Endure"]], + "weight": 20 + } + ] + }, + "Porygon2": { + "weight": 1, + "sets": [ + { + "species": "Porygon2", + "item": "Eviolite", + "ability": "Analytic", + "nature": "Bold", + "evs": {"hp": 136, "def": 244, "spa": 128}, + "moves": [["Hyper Beam"], ["Ice Beam"], ["Eerie Impulse"], ["Recover"]], + "weight": 100 + } + ] + }, + "Primarina": { + "weight": 10, + "sets": [ + { + "species": "Primarina", + "item": "Life Orb", + "ability": "Torrent", + "nature": "Modest", + "evs": {"def": 136, "spa": 120, "spe": 252}, + "moves": [["Encore"], ["Icy Wind"], ["Moonblast"], ["Hydro Cannon"]], + "weight": 25 + }, + { + "species": "Primarina", + "item": "Weakness Policy", + "ability": "Torrent", + "nature": "Bold", + "evs": {"hp": 88, "def": 244, "spe": 176}, + "moves": [["Hydro Cannon"], ["Draining Kiss", "Moonblast"], ["Calm Mind"], ["Charm", "Reflect"]], + "weight": 25 + }, + { + "species": "Primarina", + "item": "Custap Berry", + "ability": "Torrent", + "nature": "Modest", + "evs": {"hp": 144, "def": 216, "spa": 148}, + "moves": [["Hydro Cannon"], ["Moonblast"], ["Endure"], ["Encore", "Calm Mind"]], + "weight": 25 + }, + { + "species": "Primarina", + "item": "Choice Specs", + "ability": "Liquid Voice", + "nature": "Modest", + "evs": {"hp": 252, "def": 160, "spa": 24, "spd": 72}, + "moves": [["Hydro Cannon"], ["Moonblast"], ["Energy Ball"], ["Uproar"]], + "weight": 25 + } + ] + }, + "Raging Bolt": { + "weight": 8, + "sets": [ + { + "species": "Raging Bolt", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Modest", + "evs": {"hp": 240, "def": 24, "spa": 240}, + "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Taunt"]], + "weight": 50 + }, + { + "species": "Raging Bolt", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Modest", + "evs": {"hp": 96, "spa": 232, "spd": 44, "spe": 136}, + "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Calm Mind", "Taunt"]], + "weight": 50 + } + ] + }, + "Registeel": { + "weight": 5, + "sets": [ + { + "species": "Registeel", + "item": "Leftovers", + "ability": "Clear Body", + "nature": "Timid", + "evs": {"hp": 252, "def": 4, "spe": 252}, + "moves": [["Iron Defense"], ["Amnesia"], ["Rest"], ["Body Press"]], + "weight": 100 + } + ] + }, + "Rhyperior": { + "weight": 2, + "sets": [ + { + "species": "Rhyperior", + "item": "Custap Berry", + "ability": "Solid Rock", + "nature": "Adamant", + "evs": {"hp": 72, "atk": 252, "def": 184}, + "moves": [["Earthquake"], ["Rock Wrecker"], ["Endure"], ["Swords Dance"]], + "weight": 60 + }, + { + "species": "Rhyperior", + "item": "Choice Band", + "ability": "Solid Rock", + "nature": "Adamant", + "evs": {"hp": 248, "atk": 252, "def": 8}, + "moves": [["Earthquake"], ["Rock Wrecker"], ["Rock Blast"], ["Avalanch"]], + "weight": 40 + } + ] + }, + "Rillaboom": { + "weight": 3, + "sets": [ + { + "species": "Rillaboom", + "item": "Grassy Seed", + "ability": "Grassy Surge", + "nature": "Impish", + "evs": {"hp": 248, "atk": 32, "def": 112, "spd": 116}, + "moves": [["Swords Dance"], ["Wood Hammer"], ["Grassy Glide"], ["Low Kick"]], + "weight": 40 + }, + { + "species": "Rillaboom", + "item": "Grassy Seed", + "ability": "Grassy Surge", + "nature": "Impish", + "evs": {"hp": 248, "def": 52, "spd": 60, "spe": 148}, + "moves": [["Drum Beating"], ["Substitute"], ["Protect"], ["Leech Seed"]], + "weight": 30 + }, + { + "species": "Rillaboom", + "item": "Life Orb", + "ability": "Grassy Surge", + "nature": "Adamant", + "evs": {"atk": 248, "def": 200, "spe": 60}, + "moves": [["Wood Hammer"], ["Fake Out"], ["Grassy Glide"], ["Low Kick", "Swords Dance"]], + "weight": 30 + } + ] + }, + "Roaring Moon": { + "weight": 7, + "sets": [ + { + "species": "Roaring Moon", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Jolly", + "evs": {"hp": 8, "atk": 156, "spd": 160, "spe": 184}, + "moves": [["Outrage"], ["Knock Off"], ["Acrobatics", "Dragon Dance"], ["Substitute"]], + "weight": 50 + }, + { + "species": "Roaring Moon", + "item": "Choice Band", + "ability": "Protosynthesis", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Knock Off"], ["Earthquake"], ["Iron Head"]], + "weight": 50 + } + ] + }, + "Sableye": { + "weight": 1, + "sets": [ + { + "species": "Sableye", + "item": "Choice Scarf", + "ability": "Prankster", + "nature": "Impish", + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Trick"], ["Disable"], ["Recover"], ["Fling"]], + "weight": 50 + }, + { + "species": "Sableye", + "item": "Leftovers", + "ability": "Prankster", + "nature": "Bold", + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Protect"], ["Encore"], ["Disable"], ["Recover"]], + "weight": 50 + } + ] + }, + "Salamence": { + "weight": 1, + "sets": [ + { + "species": "Salamence", + "item": "Weakness Policy", + "ability": "Intimidate", + "nature": "Adamant", + "evs": {"hp": 136, "atk": 204, "def": 168}, + "moves": [["Dragon Dance"], ["Dual Wingbeat"], ["Outrage"], ["Breaking Swipe"]], + "weight": 50 + }, + { + "species": "Salamence", + "item": "Choice Specs", + "ability": "Intimidate", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Hurricane"], ["Draco Meteor"], ["Fire Blast"], ["Hydro Pump"]], + "weight": 50 + } + ] + }, + "Salazzle": { + "weight": 1, + "sets": [ + { + "species": "Salazzle", + "item": "Leftovers", + "ability": "Oblivious", + "nature": "Timid", + "evs": {"hp": 136, "spd": 120, "spe": 252}, + "moves": [["Protect"], ["Encore"], ["Disable"], ["Flamethrower"]], + "weight": 100 + } + ] + }, + "Sandy Shocks": { + "weight": 1, + "sets": [ + { + "species": "Sandy Shocks", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Protect", "Metal Sound"]], + "weight": 50 + }, + { + "species": "Sandy Shocks", + "item": "Choice Specs", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Hyper Beam"]], + "weight": 50 + } + ] + }, + "Scizor": { + "weight": 3, + "sets": [ + { + "species": "Scizor", + "item": "Choice Band", + "ability": "Technician", + "nature": "Adamant", + "evs": {"hp": 228, "atk": 252, "spd": 28}, + "moves": [["Bullet Punch"], ["Bug Bite"], ["Close Combat", "Dual Wingbeat"], ["Knock Off"]], + "weight": 50 + }, + { + "species": "Scizor", + "item": "Life Orb", + "ability": "Technician", + "nature": "Adamant", + "evs": {"hp": 228, "atk": 60, "def": 136, "spd": 84}, + "moves": [["Bullet Punch"], ["Swords Dance"], ["Dual Wingbeat"], ["Close Combat"]], + "weight": 50 + } + ] + }, + "Serperior": { + "weight": 2, + "sets": [ + { + "species": "Serperior", + "item": "Leftovers", + "ability": "Contrary", + "nature": "Timid", + "evs": {"hp": 252, "spa": 4, "spe": 252}, + "moves": [["Protect"], ["Substitute"], ["Leech Seed"], ["Leaf Storm"]], + "weight": 100 + } + ] + }, + "Sinistcha": { + "weight": 1, + "sets": [ + { + "species": "Sinistcha", + "item": "Clear Amulet", + "ability": "Heatproof", + "nature": "Timid", + "evs": {"hp": 252, "def": 80, "spe": 176}, + "moves": [["Iron Defense"], ["Calm Mind"], ["Strength Sap"], ["Shadow Ball"]], + "weight": 100 + } + ] + }, + "Skeledirge": { + "weight": 5, + "sets": [ + { + "species": "Skeledirge", + "item": "Custap Berry", + "ability": "Blaze", + "nature": "Modest", + "evs": {"hp": 248, "def": 64, "spa": 160, "spd": 36}, + "moves": [["Torch Song"], ["Endure"], ["Blast Burn"], ["Encore"]], + "weight": 40 + }, + { + "species": "Skeledirge", + "item": "Weakness Policy", + "ability": "Unaware", + "nature": "Bold", + "evs": {"hp": 248, "def": 100, "spa": 124, "spd": 36}, + "moves": [["Shadow Ball"], ["Blast Burn"], ["Torch Song"], ["Encore"]], + "weight": 40 + }, + { + "species": "Skeledirge", + "item": "Air Balloon", + "ability": "Unaware", + "nature": "Bold", + "evs": {"hp": 248, "def": 252, "spe": 8}, + "moves": [["Will-O-Wisp"], ["Torch Song"], ["Encore"], ["Slack Off", "Blast Burn"]], + "weight": 20 + } + ] + }, + "Slaking": { + "weight": 1, + "sets": [ + { + "species": "Slaking", + "item": "Choice Band", + "ability": "Truant", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Giga Impact"], ["Earthquake"], ["Ice Punch"], ["Low Kick", "Heavy Slam"]], + "weight": 100 + } + ] + }, + "Sneasler": { + "weight": 5, + "sets": [ + { + "species": "Sneasler", + "item": "Normal Gem", + "ability": "Unburden", + "nature": "Adamant", + "evs": {"hp": 160, "atk": 252, "def": 44, "spd": 4, "spe": 48}, + "moves": [["Fake Out"], ["Gunk Shot"], ["Close Combat"], ["Feint"]], + "weight": 50 + }, + { + "species": "Sneasler", + "item": "Liechi Berry", + "ability": "Unburden", + "nature": ["Adamant", "Jolly"], + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Endure"], ["Gunk Shot"], ["Reversal"], ["Taunt", "Substitute"]], + "weight": 50 + } + ] + }, "Spectrier": { + "weight": 9, + "sets": [ + { + "species": "Spectrier", + "item": "Life Orb", + "ability": "Grim Neigh", + "nature": "Timid", + "evs": {"hp": 4, "def": 124, "spa": 180, "spe": 200}, + "moves": [["Hex"], ["Hyper Beam"], ["Will-O-Wisp"], ["Calm Mind"]], + "weight": 50 + }, + { + "species": "Spectrier", + "item": "Sitrus Berry", + "ability": "Grim Neigh", + "nature": "Modest", + "evs": {"hp": 196, "def": 68, "spa": 4, "spd": 20, "spe": 220}, + "moves": [["Calm Mind"], ["Will-O-Wisp"], ["Hex"], ["Taunt", "Draining Kiss", "Disable"]], + "weight": 30 + }, + { + "species": "Spectrier", + "item": "Clear Amulet", + "ability": "Grim Neigh", + "nature": "Calm", + "evs": {"hp": 36, "spd": 252, "spe": 220}, + "moves": [["Calm Mind"], ["Pain Split"], ["Shadow Ball"], ["Taunt"]], + "weight": 20 + } + ] + }, + "Suicune": { + "weight": 1, + "sets": [ + { + "species": "Suicune", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 240, "def": 8, "spd": 8, "spe": 252}, + "moves": [["Calm Mind"], ["Chilling Water"], ["Substitute"], ["Protect"]], + "weight": 100 + } + ] + }, + "Sylveon": { + "weight": 7, + "sets": [ + { + "species": "Sylveon", + "item": "Life Orb", + "ability": "Pixilate", + "nature": "Modest", + "evs": {"hp": 104, "def": 224, "spa": 180}, + "moves": [["Hyper Beam"], ["Hyper Voice"], ["Calm Mind"], ["Quick Attack", "Fake Tears", "Shadow Ball", "Psyshock"]], + "weight": 40 + }, + { + "species": "Sylveon", + "item": "Custap Berry", + "ability": "Pixilate", + "nature": "Modest", + "evs": {"hp": 96, "def": 164, "spa": 248}, + "moves": [["Hyper Beam"], ["Hyper Voice"], ["Fake Tears"], ["Endure"]], + "weight": 40 + }, + { + "species": "Sylveon", + "item": "Weakness Policy", + "ability": "Pixilate", + "nature": "Bold", + "evs": {"hp": 88, "def": 244, "spe": 176}, + "moves": [["Calm Mind"], ["Hyper Beam"], ["Draining Kiss"], ["Charm"]], + "weight": 20 + } + ] + }, + "Talonflame": { + "weight": 1, + "sets": [ + { + "species": "Talonflame", + "item": "Choice Band", + "ability": "Gale Wings", + "nature": "Adamant", + "evs": {"hp": 8, "atk": 184, "def": 72, "spe": 244}, + "moves": [["Brave Bird"], ["Flare Blitz"], ["U-turn"], ["Steel Wing"]], + "weight": 100 + } + ] + }, + "Tauros-Paldea-Blaze": { + "weight": 1, + "sets": [ + { + "species": "Tauros-Paldea-Blaze", + "item": "Weakness Policy", + "ability": "Intimidate", + "nature": "Adamant", + "evs": {"hp": 168, "atk": 76, "def": 32, "spe": 232}, + "moves": [["Close Combat"], ["Flare Blitz"], ["Bulk Up"], ["Will-O-Wisp"]], + "weight": 100 + } + ] + }, + "Ting-Lu": { + "weight": 2, + "sets": [ + { + "species": "Ting-Lu", + "item": "Weakness Policy", + "ability": "Vessel of Ruin", + "nature": "Impish", + "evs": {"hp": 80, "atk": 176, "def": 4, "spd": 204, "spe": 44}, + "moves": [["Taunt", "Ruination"], ["Heavy Slam"], ["Earthquake"], ["Payback"]], + "weight": 100 + } + ] + }, + "Tinkaton": { + "weight": 1, + "sets": [ + { + "species": "Tinkaton", + "item": "Life Orb", + "ability": "Mold Breaker", + "nature": "Adamant", + "evs": {"hp": 112, "atk": 232, "def": 16, "spd": 4, "spe": 144}, + "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]], + "weight": 50 + }, + { + "species": "Tinkaton", + "item": "Air Balloon", + "ability": "Mold Breaker", + "nature": "Adamant", + "evs": {"hp": 156, "atk": 220, "spd": 68, "spe": 64}, + "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]], + "weight": 50 + } + ] + }, + "Torkoal": { + "weight": 1, + "sets": [ + { + "species": "Torkoal", + "item": "Life Orb", + "ability": "Drought", + "nature": "Modest", + "evs": {"hp": 240, "def": 20, "spa": 84, "spe": 164}, + "moves": [["Shell Smash"], ["Overheat"], ["Solar Beam"], ["Flare Blitz"]], + "weight": 100 + } + ] + }, + "Torterra": { + "weight": 1, + "sets": [ + { + "species": "Torterra", + "item": "Life Orb", + "ability": "Overgrow", + "nature": "Adamant", + "evs": {"hp": 152, "atk": 16, "spd": 132, "spe": 208}, + "moves": [["Shell Smash"], ["Wood Hammer"], ["Substitute"], ["Headlong Rush"]], + "weight": 100 + } + ] + }, + "Tyranitar": { + "weight": 1, + "sets": [ + { + "species": "Tyranitar", + "item": "Choice Band", + "ability": "Sand Stream", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 84, "spe": 172}, + "moves": [["Stone Edge"], ["Knock Off"], ["Avalanche", "Outrage"], ["Heavy Slam", "Rock Blast", "Earthquake"]], + "weight": 100 + } + ] + }, + "Ursaluna": { + "weight": 10, + "sets": [ + { + "species": "Ursaluna", + "item": "Choice Band", + "ability": "Guts", + "nature": "Adamant", + "evs": {"hp": 184, "atk": 228, "spd": 96}, + "moves": [["Headlong Rush"], ["Giga Impact"], ["Gunk Shot"], ["Avalanche", "Ice Punch"]], + "weight": 25 + }, + { + "species": "Ursaluna", + "item": "Flame Orb", + "ability": "Guts", + "nature": "Adamant", + "evs": {"atk": 164, "spd": 92, "spe": 252}, + "moves": [["Facade"], ["Headlong Rush"], ["Swords Dance"], ["Protect"]], + "weight": 25 + }, + { + "species": "Ursaluna", + "item": "Custap Berry", + "ability": "Guts", + "nature": "Adamant", + "evs": {"hp": 184, "atk": 216, "spd": 108}, + "moves": [["Endure"], ["Headlong Rush"], ["Giga Impact"], ["Gunk Shot", "Swords Dance"]], + "weight": 25 + }, + { + "species": "Ursaluna", + "item": "Assault Vest", + "ability": "Guts", + "nature": "Adamant", + "evs": {"hp": 184, "atk": 188, "spd": 136}, + "moves": [["Giga Impact"], ["Earthquake"], ["Avalanche", "Counter"], ["Gunk Shot"]], + "weight": 25 + } + ] + }, + "Ursaluna-Bloodmoon": { + "weight": 2, + "sets": [ + { + "species": "Ursaluna-Bloodmoon", + "item": "Chople Berry", + "ability": "Mind's Eye", + "nature": "Modest", + "evs": {"hp": 252, "def": 156, "spa": 100}, + "moves": [["Blood Moon"], ["Earth Power"], ["Counter"], ["Vacuum Wave"]], + "weight": 50 + }, + { + "species": "Ursaluna-Bloodmoon", + "item": "Choice Specs", + "ability": "Mind's Eye", + "nature": "Modest", + "evs": {"hp": 252, "def": 52, "spa": 112, "spd": 92}, + "moves": [["Hyper Beam"], ["Snarl", "Vacuum Wave"], ["Earth Power"], ["Uproar"]], + "weight": 50 + } + ] + }, + "Urshifu": { + "weight": 8, + "sets": [ + { + "species": "Urshifu", + "item": "Life Orb", + "ability": "Unseen Fist", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Bulk Up"], ["Wicked Blow"], ["Sucker Punch"], ["Close Combat", "Low Kick"]], + "weight": 40 + }, + { + "species": "Urshifu", + "item": "Custap Berry", + "ability": "Unseen Fist", + "nature": "Adamant", + "evs": {"hp": 128, "atk": 224, "spd": 156}, + "moves": [["Wicked Blow"], ["Reversal"], ["Endure"], ["Bulk Up", "Sucker Punch"]], + "weight": 40 + }, + { + "species": "Urshifu", + "item": "Assault Vest", + "ability": "Unseen Fist", + "nature": "Adamant", + "evs": {"hp": 160, "atk": 92, "def": 16, "spd": 160, "spe": 80}, + "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-Turn"]], + "weight": 20 + } + ] + }, + "Urshifu-Rapid-Strike": { + "weight": 7, + "sets": [ + { + "species": "Urshifu-Rapid-Strike", + "item": "Choice Band", + "ability": "Unseen Fist", + "nature": "Adamant", + "evs": {"hp": 252, "atk": 220, "def": 32, "spd": 4}, + "moves": [["Surging Strikes"], ["Close Combat"], ["Low Kick", "Thunder Punch"], ["Iron Head", "Ice Spinner"]], + "weight": 30 + }, + { + "species": "Urshifu-Rapid-Strike", + "item": "Custap Berry", + "ability": "Unseen Fist", + "nature": "Adamant", + "evs": {"hp": 4, "atk": 208, "spd": 120, "spe": 176}, + "moves": [["Surging Strikes"], ["Reversal"], ["Bulk Up"], ["Endure"]], + "weight": 40 + }, + { + "species": "Urshifu-Rapid-Strike", + "item": "Life Orb", + "ability": "Unseen Fist", + "nature": "Jolly", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Surging Strikes"], ["Close Combat"], ["Bulk Up"], ["Aqua Jet"]], + "weight": 30 + } + ] + }, + "Venusaur": { + "weight": 1, + "sets": [ + { + "species": "Venusaur", + "item": "Custap Berry", + "ability": "Overgrow", + "nature": "Modest", + "evs": {"def": 208, "spa": 204, "spe": 96}, + "moves": [["Frenzy Plant"], ["Sludge Bomb"], ["Endure"], ["Acid Spray"]], + "weight": 100 + } + ] + }, + "Volcanion": { + "weight": 7, + "sets": [ + { + "species": "Volcanion", + "item": "Life Orb", + "ability": "Water Absorb", + "nature": "Rash", + "evs": {"hp": 136, "atk": 8, "def": 88, "spa": 44, "spe": 232}, + "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Bomb"], ["Flame Charge"]], + "weight": 50 + }, + { + "species": "Volcanion", + "item": "Assault Vest", + "ability": "Water Absorb", + "nature": "Modest", + "evs": {"hp": 244, "spa": 184, "spd": 80}, + "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Wave"], ["Earth Power", "Flame Charge", "Focus Bla"]], + "weight": 25 + }, + { + "species": "Volcanion", + "item": "Air Balloon", + "ability": "Water Absorb", + "nature": "Modest", + "evs": {"hp": 136, "def": 88, "spa": 188, "spe": 96}, + "moves": [["Substitute"], ["Steam Eruption"], ["Overheat"], ["Sludge Wave"]], + "weight": 25 + } + ] + }, + "Volcarona": { + "weight": 8, + "sets": [ + { + "species": "Volcarona", + "item": "Life Orb", + "ability": "Swarm", + "nature": "Modest", + "evs": {"hp": 252, "def": 32, "spa": 12, "spd": 16, "spe": 196}, + "moves": [["Quiver Dance"], ["Bug Buzz"], ["Overheat"], ["Substitute"]], + "weight": 50 + }, + { + "species": "Volcarona", + "item": "Passho Berry", + "ability": "Swarm", + "nature": "Calm", + "evs": {"hp": 192, "spa": 76, "spd": 44, "spe": 196}, + "moves": [["Quiver Dance"], ["Overheat"], ["Bug Buzz"], ["Giga Drain"]], + "weight": 50 + } + ] + }, + "Walking Wake": { + "weight": 7, + "sets": [ + { + "species": "Walking Wake", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"def": 4, "spa": 252, "spe": 252}, + "moves": [["Draco Meteor"], ["Hydro Pump"], ["Flamethrower", "Hurricane"], ["Aqua Jet"]], + "weight": 75 + }, + { + "species": "Walking Wake", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"hp": 8, "def": 56, "spa": 192, "spe": 252}, + "moves": [["Draco Meteor"], ["Hydro Pump"], ["Hurricane"], ["Chilling Water"]], + "weight": 25 + } + ] + }, + "Whimsicott": { + "weight": 2, + "sets": [ + { + "species": "Whimsicott", + "item": ["Babiri Berry", "Mental Herb"], + "ability": "Prankster", + "nature": "Bold", + "evs": {"hp": 248, "def": 232, "spd": 28}, + "moves": [["Leech Seed"], ["Substitute"], ["Protect"], ["Taunt"]], + "weight": 100 + } + ] + }, + "Zapdos": { + "weight": 8, + "sets": [ + { + "species": "Zapdos", + "item": "Clear Amulet", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 248, "spd": 84, "spe": 176}, + "moves": [["Hurricane"], ["Thunderbolt"], ["Eerie Impulse"], ["Roost"]], + "weight": 50 + }, + { + "species": "Zapdos", + "item": "Life Orb", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 8, "spa": 200, "spd": 48, "spe": 252}, + "moves": [["Hurricane"], ["Thunderbolt"], ["Charge"], ["Heat Wave"]], + "weight": 25 + }, + { + "species": "Zapdos", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 248, "spa": 8, "spe": 252}, + "moves": [["Protect"], ["Substitute"], ["Roost"], ["Thunderbolt"]], + "weight": 25 + } + ] + }, + "Zapdos-Galar": { + "weight": 2, + "sets": [ + { + "species": "Zapdos-Galar", + "item": "Custap Berry", + "ability": "Defiant", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Reversal"], ["Brave Bird"], ["Endure"], ["Knock Off", "Bulk Up", "Thunderous Kick"]], + "weight": 50 + }, + { + "species": "Zapdos-Galar", + "item": "Assault Vest", + "ability": "Defiant", + "nature": "Adamant", + "evs": {"hp": 144, "atk": 68, "def": 4, "spd": 56, "spe": 236}, + "moves": [["Thunderous Kick"], ["Close Combat"], ["Brave Bird"], ["Knock Off"]], + "weight": 50 + } + ] + }, + "Zarude": { + "weight": 5, + "sets": [ + { + "species": "Zarude", + "item": "Weakness Policy", + "ability": "Leaf Guard", + "nature": "Jolly", + "evs": {"hp": 128, "atk": 144, "spd": 4, "spe": 232}, + "moves": [["Power Whip"], ["Knock Off"], ["Encore"], ["Bulk Up"]], + "weight": 50 + }, + { + "species": "Zarude", + "item": "Choice Band", + "ability": "Leaf Guard", + "nature": "Adamant", + "evs": {"hp": 120, "atk": 68, "spd": 76, "spe": 244}, + "moves": [["Knock Off"], ["Power Whip"], ["Low Kick", "Rock Slide"], ["Bullet Seed"]], + "weight": 50 + } + ] + } +} \ No newline at end of file diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index 86d0c1dff7..061db8297b 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -37,6 +37,7 @@ interface BattleFactorySet { evs?: Partial; ivs?: Partial; shiny?: boolean; + level?: number; } interface BSSFactorySet { species: string; @@ -3004,6 +3005,260 @@ export class RandomTeams { }; }); } + + random1v1FactorySets: { [species: string]: BattleFactorySpecies } = require('./1v1-factory-sets.json'); + + random1v1FactorySet( + species: Species, teamData: RandomTeamsTypes.FactoryTeamDetails + ): RandomTeamsTypes.RandomFactorySet | null { + const setList = this.random1v1FactorySets[species.name].sets; + + const itemsLimited = ['choicespecs', 'choiceband', 'choicescarf']; + const movesLimited: { [k: string]: string } = {}; + const abilitiesLimited: { [k: string]: string } = {}; + + // Build a pool of eligible sets, given the team partners + // Also keep track of moves and items limited to one per team + const effectivePool: { + set: BattleFactorySet, moves?: string[], item?: string, + }[] = []; + + for (const set of setList) { + let reject = false; + + // reject disallowed items, specifically a second of any given choice item + const allowedItems: string[] = []; + let ogItem = set.item; + if (!Array.isArray(ogItem)) ogItem = [ogItem]; + for (const itemString of ogItem) { + const itemId = toID(itemString); + if (itemsLimited.includes(itemId) && teamData.has[itemId]) continue; + allowedItems.push(itemString); + } + if (!allowedItems.length) continue; + const item = this.sample(allowedItems); + + const abilityId = toID(this.sample(set.ability)); + + if (abilitiesLimited[abilityId] && teamData.has[abilitiesLimited[abilityId]]) continue; + + const moves: string[] = []; + for (const move of set.moves) { + const allowedMoves: string[] = []; + for (const m of move) { + const moveId = toID(m); + if (movesLimited[moveId] && teamData.has[movesLimited[moveId]]) continue; + allowedMoves.push(m); + } + if (!allowedMoves.length) { + reject = true; + break; + } + moves.push(this.sample(allowedMoves)); + } + if (reject) continue; + effectivePool.push({ set, moves, item }); + } + + if (!effectivePool.length) { + if (!teamData.forceResult) return null; + for (const set of setList) { + effectivePool.push({ set }); + } + } + + // Sets have individual weight, choose one with weighted random selection + + let setData = this.sample(effectivePool); // Init with unweighted random set as fallback + + const total = effectivePool.reduce((a, b) => a + b.set.weight, 0); + const setRand = this.random(total); + + let cur = 0; + for (const set of effectivePool) { + cur += set.set.weight; + if (cur > setRand) { + setData = set; // Bingo! + break; + } + } + + const moves = []; + for (const [i, moveSlot] of setData.set.moves.entries()) { + moves.push(setData.moves ? setData.moves[i] : this.sample(moveSlot)); + } + + const item = setData.item || this.sampleIfArray(setData.set.item); + + return { + name: species.baseSpecies, + species: (typeof species.battleOnly === 'string') ? species.battleOnly : species.name, + gender: setData.set.gender || species.gender || this.sample(['M', 'F']), // F for Cute Charm Enamorus + item, + ability: this.sampleIfArray(setData.set.ability), + shiny: setData.set.shiny || this.randomChance(1, 1024), + level: this.adjustLevel || setData.set.level || 100, + happiness: 255, + evs: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0, ...setData.set.evs }, + ivs: { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31, ...setData.set.ivs }, + nature: this.sample(setData.set.nature) || "Serious", + moves, + }; + } + + random1v1FactoryTeam(side: PlayerOptions, depth = 0): RandomTeamsTypes.RandomFactorySet[] { + this.enforceNoDirectCustomBanlistChanges(); + + const forceResult = depth >= 12; + + const pokemon = []; + const pokemonPool = Object.keys(this.random1v1FactorySets); + + const teamData: TeamData = { + typeCount: {}, + typeComboCount: {}, + baseFormes: {}, + has: {}, + forceResult, + weaknesses: {}, + resistances: {}, + }; + const resistanceAbilities: { [k: string]: string[] } = { + dryskin: ['Water'], waterabsorb: ['Water'], stormdrain: ['Water'], + flashfire: ['Fire'], heatproof: ['Fire'], waterbubble: ['Fire'], wellbakedbody: ['Fire'], + lightningrod: ['Electric'], motordrive: ['Electric'], voltabsorb: ['Electric'], + sapsipper: ['Grass'], + thickfat: ['Ice', 'Fire'], + eartheater: ['Ground'], levitate: ['Ground'], + }; + const movesLimited: { [k: string]: string } = {}; + const abilitiesLimited: { [k: string]: string } = {}; + const limitFactor = Math.ceil(this.maxTeamSize / 3); + /** + * Weighted random shuffle + * Uses the fact that for two uniform variables x1 and x2, x1^(1/w1) is larger than x2^(1/w2) + * with probability equal to w1/(w1+w2), which is what we want. See e.g. here https://arxiv.org/pdf/1012.0256.pdf, + * original paper is behind a paywall. + */ + const shuffledSpecies = []; + for (const speciesName of pokemonPool) { + const sortObject = { + speciesName, + score: this.prng.random() ** (1 / this.random1v1FactorySets[speciesName].weight), + }; + shuffledSpecies.push(sortObject); + } + shuffledSpecies.sort((a, b) => a.score - b.score); + + while (shuffledSpecies.length && pokemon.length < this.maxTeamSize) { + // repeated popping from weighted shuffle is equivalent to repeated weighted sampling without replacement + const species = this.dex.species.get(shuffledSpecies.pop()!.speciesName); + if (!species.exists) continue; + + if (this.forceMonotype && !species.types.includes(this.forceMonotype)) continue; + + // Limit to one of each species (Species Clause) + if (teamData.baseFormes[species.baseSpecies]) continue; + + // Limit 1 of any type (most of the time) + const types = species.types; + let skip = false; + if (!this.forceMonotype) { + for (const type of types) { + if (teamData.typeCount[type] >= limitFactor && this.randomChance(4, 5)) { + skip = true; + break; + } + } + } + if (skip) continue; + + if (!teamData.forceResult && !this.forceMonotype) { + // Limit 2 of any weakness + for (const typeName of this.dex.types.names()) { + // it's weak to the type + if (this.dex.getEffectiveness(typeName, species) > 0 && this.dex.getImmunity(typeName, types)) { + if (teamData.weaknesses[typeName] >= 2 * limitFactor) { + skip = true; + break; + } + } + } + } + if (skip) continue; + + const set = this.random1v1FactorySet(species, teamData); + if (!set) continue; + + // Limit 1 of any type combination + let typeCombo = types.slice().sort().join(); + if (set.ability === "Drought" || set.ability === "Drizzle") { + // Drought and Drizzle don't count towards the type combo limit + typeCombo = set.ability; + } + if (!this.forceMonotype && teamData.typeComboCount[typeCombo] >= limitFactor) continue; + + // Okay, the set passes, add it to our team + pokemon.push(set); + + // Now that our Pokemon has passed all checks, we can update team data: + for (const type of types) { + if (type in teamData.typeCount) { + teamData.typeCount[type]++; + } else { + teamData.typeCount[type] = 1; + } + } + if (typeCombo in teamData.typeComboCount) { + teamData.typeComboCount[typeCombo]++; + } else { + teamData.typeComboCount[typeCombo] = 1; + } + + teamData.baseFormes[species.baseSpecies] = 1; + + teamData.has[toID(set.item)] = 1; + + for (const move of set.moves) { + const moveId = toID(move); + if (movesLimited[moveId]) { + teamData.has[movesLimited[moveId]] = 1; + } + } + + const ability = this.dex.abilities.get(set.ability); + if (abilitiesLimited[ability.id]) { + teamData.has[abilitiesLimited[ability.id]] = 1; + } + + for (const typeName of this.dex.types.names()) { + const typeMod = this.dex.getEffectiveness(typeName, types); + // Track resistances because we will require it for triple weaknesses + if ( + typeMod < 0 || + resistanceAbilities[ability.id]?.includes(typeName) || + !this.dex.getImmunity(typeName, types) + ) { + // We don't care about the number of resistances, so just set to 1 + teamData.resistances[typeName] = 1; + // Track weaknesses + } else if (typeMod > 0) { + teamData.weaknesses[typeName] = (teamData.weaknesses[typeName] || 0) + 1; + } + } + } + if (!teamData.forceResult && pokemon.length < this.maxTeamSize) return this.random1v1FactoryTeam(side, ++depth); + + // Quality control we cannot afford for monotype + if (!teamData.forceResult && !this.forceMonotype) { + for (const type in teamData.weaknesses) { + // We reject if our team is triple weak to any type without having a resist + if (teamData.resistances[type]) continue; + if (teamData.weaknesses[type] >= 2 * limitFactor) return this.random1v1FactoryTeam(side, ++depth); + } + } + return pokemon; + } } export default RandomTeams; diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js index 3dc8f6bd1c..f342c13867 100644 --- a/test/random-battles/all-gens.js +++ b/test/random-battles/all-gens.js @@ -462,3 +462,73 @@ describe('[Gen 9] BSS Factory data should be valid (slow)', () => { } }); }); + +describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { + it(`gen9/1v1-factory-sets.json should contain valid sets`, function () { + this.timeout(0); + const setsJSON = require(`../../dist/data/random-battles/gen9/1v1-factory-sets.json`); + const mod = 'gen9'; + + for (const species in setsJSON) { + const speciesData = setsJSON[species]; + for (const set of speciesData.sets) { + const species = Dex.species.get(set.species); + assert(species.exists, `invalid species "${set.species}" of ${species}`); + assert.equal(species.name, set.species, `miscapitalized species "${set.species}" of ${species}`); + + assert(species.id.startsWith(toID(species.baseSpecies)), `non-matching species "${set.species}" of ${species}`); + + for (const itemName of [].concat(set.item)) { + if (!itemName) continue; + const item = Dex.items.get(itemName); + assert(item.exists, `invalid item "${itemName}" of ${species}`); + assert.equal(item.name, itemName, `miscapitalized item "${itemName}" of ${species}`); + } + + for (const abilityName of [].concat(set.ability)) { + const ability = Dex.abilities.get(abilityName); + assert(ability.exists, `invalid ability "${abilityName}" of ${species}`); + assert.equal(ability.name, abilityName, `miscapitalized ability "${abilityName}" of ${species}`); + const allowedAbilities = new Set(Object.values((species.battleOnly && !species.requiredAbility) ? Dex.species.get(species.battleOnly).abilities : species.abilities)); + if (species.unreleasedHidden) allowedAbilities.delete(species.abilities.H); + assert(allowedAbilities.has(abilityName), `${species.name} can't have ${abilityName}`); + } + + for (const natureName of [].concat(set.nature)) { + const nature = Dex.natures.get(natureName); + assert(nature.exists, `invalid nature "${natureName}" of ${species}`); + assert.equal(nature.name, natureName, `miscapitalized nature "${natureName}" of ${species}`); + } + + for (const moveSpec of set.moves) { + for (const moveName of [].concat(moveSpec)) { + const move = Dex.moves.get(moveName); + assert(move.exists, `invalid move "${moveName}" of ${species}`); + assert.equal(move.name, moveName, `miscapitalized move "${moveName}" ≠ "${move.name}" of ${species}`); + assert(validateLearnset(move, set, '1v1', mod), `illegal move "${moveName}" of ${species}`); + } + } + + // Check that no moves appear more than once in a set + assert.equal(set.moves.flat(1).length, new Set(set.moves.flat(1)).size, `${species} has repeat moves`); + + assert(!!set.evs, `Set of ${species} has no EVs specified`); + const keys = Object.keys(set.evs); + let totalEVs = 0; + for (const ev of keys) { + assert(Dex.stats.ids().includes(ev), `Invalid EV key (${ev}) on set of ${species}`); + totalEVs += set.evs[ev]; + assert.equal(set.evs[ev] % 4, 0, `EVs of ${ev} not divisible by 4 on ${species}`); + } + const sortedKeys = Utils.sortBy([...keys], ev => Dex.stats.ids().indexOf(ev)); + assert.deepEqual(keys, sortedKeys, `EVs out of order on set of ${species}, possibly because one of them is for the wrong stat`); + assert(totalEVs <= 510, `more than 510 EVs on set of ${species}`); + } + let totalWeight = 0; + for (const set of speciesData.sets) { + totalWeight += set.weight; + } + assert.equal(totalWeight, 100, `Total set weight for ${species} is ${totalWeight < 100 ? 'less' : 'greater'} than 100%`); + } + }); +}); From 07469afc59b517e6b9b6ceddca1b8037786eb1c9 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:11:33 -0700 Subject: [PATCH 004/139] Fix build --- data/random-battles/gen9/1v1-factory-sets.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index b22d3773fe..bf0b658e82 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -215,6 +215,7 @@ "item": "Shell Bell", "ability": "Sturdy", "nature": "Quirky", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 0, "spd": 0, "spe": 0}, "level": 1, "moves": [["Endeavor"], ["Sand Tomb"], ["Sandstorm"], ["Trick Room", "Protect", "Moonblast"]], "weight": 100 From f10c7af9e5f693f38539890d83927bac47fc2f4e Mon Sep 17 00:00:00 2001 From: ACakeWearingAHat <45981036+ACakeWearingAHat@users.noreply.github.com> Date: Thu, 1 Jan 2026 03:16:12 -0600 Subject: [PATCH 005/139] Randomized format set udpates (#11655) * Randomized format set updates * updoot * more thing * role names * lint * Change old gens Golduck from Bulky Attacker to Bulky Setup with subcm as an option * Remove unnecessary PT * Level 73 Pikachu in gen 2 * 75% tbolt for Persian in gen 1 * ionnss yelled at me * Add aura sphere to mewtwo in gen 8 * Make wigglytuff always Competitive in gen 8 * council veto of lum klawf removal * toxic dreig * life orb trailblaze mamoswine * prevent choice trailblaze lmao * Force Ice Shard on Gen 5 Mamoswine and merge into a single set --------- Co-authored-by: Kelvin Liu Co-authored-by: Kelvin Liu <115855253+livid-washed@users.noreply.github.com> --- data/random-battles/gen1/data.json | 2 +- data/random-battles/gen2/sets.json | 1 + data/random-battles/gen3/sets.json | 6 +- data/random-battles/gen4/sets.json | 54 ++++++++------ data/random-battles/gen4/teams.ts | 11 --- data/random-battles/gen5/sets.json | 64 ++++++++-------- data/random-battles/gen5/teams.ts | 11 +-- data/random-battles/gen6/sets.json | 50 ++++++++----- data/random-battles/gen6/teams.ts | 2 +- data/random-battles/gen7/sets.json | 57 ++++++++------ data/random-battles/gen7/teams.ts | 4 +- data/random-battles/gen8/data.json | 2 +- data/random-battles/gen8/teams.ts | 2 +- data/random-battles/gen9/doubles-sets.json | 78 ++++++++++++-------- data/random-battles/gen9/factory-sets.json | 2 +- data/random-battles/gen9/sets.json | 86 ++++++++++++---------- data/random-battles/gen9/teams.ts | 15 +++- data/random-battles/gen9ffa/sets.json | 2 +- 18 files changed, 252 insertions(+), 197 deletions(-) diff --git a/data/random-battles/gen1/data.json b/data/random-battles/gen1/data.json index e4b9c52378..a7c96bbf24 100644 --- a/data/random-battles/gen1/data.json +++ b/data/random-battles/gen1/data.json @@ -245,7 +245,7 @@ "persian": { "level": 73, "moves": ["bodyslam", "bubblebeam", "slash"], - "exclusiveMoves": ["hyperbeam", "thunderbolt"] + "exclusiveMoves": ["hyperbeam", "thunderbolt", "thunderbolt", "thunderbolt"] }, "psyduck": { "level": 89, diff --git a/data/random-battles/gen2/sets.json b/data/random-battles/gen2/sets.json index b6a7ff2490..8d1d325055 100644 --- a/data/random-battles/gen2/sets.json +++ b/data/random-battles/gen2/sets.json @@ -103,6 +103,7 @@ ] }, "pikachu": { + "level": 73, "sets": [ { "role": "Fast Attacker", diff --git a/data/random-battles/gen3/sets.json b/data/random-battles/gen3/sets.json index 1e31a94ef3..f6a57826fe 100644 --- a/data/random-battles/gen3/sets.json +++ b/data/random-battles/gen3/sets.json @@ -806,7 +806,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["calmmind", "hiddenpowerfire", "icebeam", "lovelykiss", "psychic", "substitute"], + "movepool": ["calmmind", "icebeam", "lovelykiss", "psychic", "substitute"], "abilities": ["Oblivious"] } ] @@ -1753,7 +1753,7 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["calmmind", "icebeam", "recover", "surf", "toxic"], + "movepool": ["calmmind", "explosion", "icebeam", "recover", "surf", "toxic"], "abilities": ["Natural Cure"] } ] @@ -2690,7 +2690,7 @@ }, { "role": "Wallbreaker", - "movepool": ["earthquake", "explosion", "overheat", "rockslide", "shadowball"], + "movepool": ["earthquake", "explosion", "rockslide", "shadowball"], "abilities": ["Levitate"], "preferredTypes": ["Ground"] } diff --git a/data/random-battles/gen4/sets.json b/data/random-battles/gen4/sets.json index 634f823019..bd8e541b86 100644 --- a/data/random-battles/gen4/sets.json +++ b/data/random-battles/gen4/sets.json @@ -382,7 +382,8 @@ { "role": "Bulky Support", "movepool": ["haze", "hydropump", "icebeam", "rapidspin", "sludgebomb", "surf", "toxicspikes"], - "abilities": ["Clear Body", "Liquid Ooze"] + "abilities": ["Clear Body", "Liquid Ooze"], + "preferredTypes": ["Poison"] } ] }, @@ -487,6 +488,11 @@ "role": "Bulky Support", "movepool": ["explosion", "iceshard", "rapidspin", "rockblast", "spikes", "surf", "toxicspikes"], "abilities": ["Shell Armor", "Skill Link"] + }, + { + "role": "Bulky Support", + "movepool": ["explosion", "icebeam", "iceshard", "rapidspin", "spikes", "surf", "toxicspikes"], + "abilities": ["Shell Armor"] } ] }, @@ -596,7 +602,7 @@ }, { "role": "Bulky Attacker", - "movepool": ["bulkup", "closecombat", "drainpunch", "icepunch", "machpunch", "stoneedge"], + "movepool": ["bulkup", "closecombat", "icepunch", "machpunch", "stoneedge"], "abilities": ["Iron Fist"] } ] @@ -812,10 +818,9 @@ "abilities": ["Swift Swim"] }, { - "role": "Bulky Support", - "movepool": ["earthpower", "icebeam", "spikes", "stealthrock", "surf", "toxicspikes"], - "abilities": ["Shell Armor", "Swift Swim"], - "preferredTypes": ["Ice"] + "role": "Bulky Attacker", + "movepool": ["icebeam", "spikes", "stealthrock", "surf", "toxicspikes"], + "abilities": ["Shell Armor", "Swift Swim"] } ] }, @@ -927,7 +932,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["aurasphere", "calmmind", "fireblast", "psychic", "recover", "shadowball"], + "movepool": ["aurasphere", "calmmind", "fireblast", "psychic", "recover", "signalbeam"], "abilities": ["Pressure"] } ] @@ -1159,6 +1164,11 @@ "role": "Wallbreaker", "movepool": ["earthpower", "hiddenpowerfire", "hiddenpowerice", "hiddenpowerrock", "leafstorm", "sludgebomb"], "abilities": ["Chlorophyll"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthpower", "hiddenpowerfire", "solarbeam", "sunnyday"], + "abilities": ["Chlorophyll"] } ] }, @@ -1299,9 +1309,14 @@ "granbull": { "level": 88, "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "healbell", "return", "thunderwave"], + "abilities": ["Intimidate"] + }, { "role": "Bulky Attacker", - "movepool": ["closecombat", "crunch", "healbell", "return", "thunderwave"], + "movepool": ["closecombat", "crunch", "return", "thunderwave"], "abilities": ["Intimidate"] } ] @@ -1352,7 +1367,8 @@ { "role": "Fast Attacker", "movepool": ["closecombat", "earthquake", "megahorn", "nightslash", "stoneedge", "swordsdance"], - "abilities": ["Guts"] + "abilities": ["Guts"], + "preferredTypes": ["Rock"] } ] }, @@ -1475,16 +1491,10 @@ "level": 84, "sets": [ { - "role": "Spinner", + "role": "Bulky Support", "movepool": ["earthquake", "iceshard", "rapidspin", "stealthrock", "stoneedge", "toxic"], "abilities": ["Sturdy"], "preferredTypes": ["Rock"] - }, - { - "role": "Bulky Attacker", - "movepool": ["earthquake", "gunkshot", "iceshard", "stealthrock", "stoneedge"], - "abilities": ["Sturdy"], - "preferredTypes": ["Rock"] } ] }, @@ -1680,13 +1690,13 @@ "level": 84, "sets": [ { - "role": "Fast Attacker", - "movepool": ["agility", "fireblast", "stoneedge", "superpower", "thunderpunch", "vacuumwave"], + "role": "Wallbreaker", + "movepool": ["agility", "earthquake", "fireblast", "stoneedge", "superpower", "vacuumwave"], "abilities": ["Blaze"] }, { - "role": "Wallbreaker", - "movepool": ["flareblitz", "stoneedge", "superpower", "swordsdance", "thunderpunch"], + "role": "Fast Attacker", + "movepool": ["earthquake", "flareblitz", "stoneedge", "superpower", "swordsdance"], "abilities": ["Blaze"] } ] @@ -2370,7 +2380,7 @@ { "role": "Wallbreaker", "movepool": ["hiddenpowerfighting", "shadowclaw", "shadowsneak", "thunderwave", "willowisp"], - "abilities": ["Frisk", "Insomnia"] + "abilities": ["Insomnia"] } ] }, @@ -2525,7 +2535,7 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["earthquake", "explosion", "rest", "stealthrock", "stoneedge", "thunderwave", "toxic"], + "movepool": ["earthquake", "explosion", "stealthrock", "stoneedge", "thunderwave", "toxic"], "abilities": ["Clear Body"] }, { diff --git a/data/random-battles/gen4/teams.ts b/data/random-battles/gen4/teams.ts index f06f4e7684..66ebe587c3 100644 --- a/data/random-battles/gen4/teams.ts +++ b/data/random-battles/gen4/teams.ts @@ -215,17 +215,6 @@ export class RandomGen4Teams extends RandomGen5Teams { this.incompatibleMoves(moves, movePool, statusInflictingMoves, statusInflictingMoves); } - // Cull filler moves for otherwise fixed set Stealth Rock users - if (!teamDetails.stealthRock) { - if (species.id === 'registeel' && role === 'Staller') { - if (movePool.includes('thunderwave')) this.fastPop(movePool, movePool.indexOf('thunderwave')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (species.id === 'wormadamtrash' && role === 'Staller') { - if (movePool.includes('suckerpunch')) this.fastPop(movePool, movePool.indexOf('suckerpunch')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - } if (species.id === 'bastiodon') { // Enforces Toxic too, for good measure. this.incompatibleMoves(moves, movePool, ['metalburst', 'protect', 'roar'], ['metalburst', 'protect']); diff --git a/data/random-battles/gen5/sets.json b/data/random-battles/gen5/sets.json index bfe85d332c..024077c526 100644 --- a/data/random-battles/gen5/sets.json +++ b/data/random-battles/gen5/sets.json @@ -321,9 +321,15 @@ "golduck": { "level": 88, "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "encore", "focusblast", "icebeam", "scald", "substitute"], + "abilities": ["Cloud Nine", "Swift Swim"], + "preferredTypes": ["Ice"] + }, { "role": "Fast Attacker", - "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam", "scald"], + "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam"], "abilities": ["Cloud Nine", "Swift Swim"], "preferredTypes": ["Ice"] } @@ -418,7 +424,8 @@ { "role": "Bulky Support", "movepool": ["haze", "icebeam", "rapidspin", "scald", "sludgebomb", "toxicspikes"], - "abilities": ["Clear Body", "Liquid Ooze"] + "abilities": ["Clear Body", "Liquid Ooze"], + "preferredTypes": ["Poison"] } ] }, @@ -529,7 +536,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["focusblast", "painsplit", "shadowball", "sludgewave", "substitute", "trick", "willowisp"], + "movepool": ["destinybond", "focusblast", "painsplit", "shadowball", "sludgewave", "substitute", "trick", "willowisp"], "abilities": ["Levitate"], "preferredTypes": ["Fighting"] } @@ -983,7 +990,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"], + "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"], "abilities": ["Unnerve"] } ] @@ -1373,9 +1380,14 @@ "granbull": { "level": 90, "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "healbell", "return", "thunderwave"], + "abilities": ["Intimidate"] + }, { "role": "Bulky Attacker", - "movepool": ["closecombat", "crunch", "healbell", "return", "thunderwave"], + "movepool": ["closecombat", "crunch", "return", "thunderwave"], "abilities": ["Intimidate"] } ] @@ -1545,16 +1557,10 @@ "level": 82, "sets": [ { - "role": "Spinner", + "role": "Bulky Support", "movepool": ["earthquake", "iceshard", "rapidspin", "stealthrock", "stoneedge", "toxic"], "abilities": ["Sturdy"], "preferredTypes": ["Rock"] - }, - { - "role": "Bulky Attacker", - "movepool": ["earthquake", "gunkshot", "iceshard", "stealthrock", "stoneedge"], - "abilities": ["Sturdy"], - "preferredTypes": ["Rock"] } ] }, @@ -2413,7 +2419,7 @@ { "role": "Wallbreaker", "movepool": ["hiddenpowerfighting", "shadowclaw", "shadowsneak", "thunderwave", "willowisp"], - "abilities": ["Cursed Body", "Frisk", "Insomnia"] + "abilities": ["Insomnia"] } ] }, @@ -3426,12 +3432,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["earthquake", "iceshard", "iciclecrash", "stealthrock"], - "abilities": ["Thick Fat"] - }, - { - "role": "Fast Attacker", - "movepool": ["earthquake", "iceshard", "iciclecrash", "stoneedge", "superpower"], + "movepool": ["earthquake", "iceshard", "iciclecrash", "stealthrock", "stoneedge", "superpower"], "abilities": ["Thick Fat"] } ] @@ -4274,7 +4275,7 @@ }, { "role": "Staller", - "movepool": ["hurricane", "leechseed", "protect", "substitute"], + "movepool": ["encore", "hurricane", "leechseed", "substitute"], "abilities": ["Prankster"] } ] @@ -4353,12 +4354,12 @@ "level": 82, "sets": [ { - "role": "Setup Sweeper", - "movepool": ["crunch", "dragondance", "highjumpkick", "stoneedge", "zenheadbutt"], - "abilities": ["Intimidate", "Moxie"] + "role": "Bulky Setup", + "movepool": ["crunch", "dragondance", "drainpunch", "stoneedge", "zenheadbutt"], + "abilities": ["Intimidate"] }, { - "role": "Bulky Setup", + "role": "Bulky Attacker", "movepool": ["bulkup", "crunch", "drainpunch", "rest"], "abilities": ["Shed Skin"] } @@ -4466,7 +4467,7 @@ "sets": [ { "role": "Bulky Setup", - "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover", "signalbeam"], + "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover"], "abilities": ["Magic Guard"] } ] @@ -4568,9 +4569,13 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["bugbuzz", "gigadrain", "hiddenpowerice", "thunder", "voltswitch"], - "abilities": ["Compound Eyes"], - "preferredTypes": ["Bug"] + "movepool": ["bugbuzz", "hiddenpowerice", "thunder", "voltswitch"], + "abilities": ["Compound Eyes"] + }, + { + "role": "Wallbreaker", + "movepool": ["bugbuzz", "energyball", "thunder", "voltswitch"], + "abilities": ["Compound Eyes"] } ] }, @@ -4956,7 +4961,8 @@ { "role": "Setup Sweeper", "movepool": ["calmmind", "earthpower", "focusblast", "psychic", "rockpolish", "sludgewave"], - "abilities": ["Sheer Force"] + "abilities": ["Sheer Force"], + "preferredTypes": ["Poison"] } ] }, diff --git a/data/random-battles/gen5/teams.ts b/data/random-battles/gen5/teams.ts index 0994749ddd..0774d4a494 100644 --- a/data/random-battles/gen5/teams.ts +++ b/data/random-battles/gen5/teams.ts @@ -236,15 +236,8 @@ export class RandomGen5Teams extends RandomGen6Teams { if (abilities.includes('Guts')) this.incompatibleMoves(moves, movePool, 'protect', 'swordsdance'); // Cull filler moves for otherwise fixed set Stealth Rock users - if (!teamDetails.stealthRock) { - if (species.id === 'registeel' && role === 'Staller') { - if (movePool.includes('thunderwave')) this.fastPop(movePool, movePool.indexOf('thunderwave')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (species.baseSpecies === 'Wormadam' && role === 'Staller') { - if (movePool.includes('suckerpunch')) this.fastPop(movePool, movePool.indexOf('suckerpunch')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } + if (species.id === 'mamoswine') { + this.incompatibleMoves(moves, movePool, ['stealthrock', 'stoneedge'], ['stoneedge', 'superpower']); } } diff --git a/data/random-battles/gen6/sets.json b/data/random-battles/gen6/sets.json index 08c4aa2510..fc1997b862 100644 --- a/data/random-battles/gen6/sets.json +++ b/data/random-battles/gen6/sets.json @@ -212,7 +212,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["earthpower", "fireblast", "icebeam", "sludgewave", "stealthrock", "toxicspikes"], + "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "stealthrock", "toxicspikes"], "abilities": ["Sheer Force"], "preferredTypes": ["Ice"] } @@ -223,7 +223,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["earthpower", "fireblast", "icebeam", "sludgewave", "substitute", "superpower"], + "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "substitute"], "abilities": ["Sheer Force"], "preferredTypes": ["Ice"] } @@ -339,9 +339,15 @@ "golduck": { "level": 90, "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "encore", "focusblast", "icebeam", "scald", "substitute"], + "abilities": ["Cloud Nine", "Swift Swim"], + "preferredTypes": ["Ice"] + }, { "role": "Fast Attacker", - "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam", "scald"], + "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam"], "abilities": ["Cloud Nine", "Swift Swim"], "preferredTypes": ["Ice"] } @@ -1056,7 +1062,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"], + "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"], "abilities": ["Unnerve"] } ] @@ -1076,7 +1082,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"], + "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"], "abilities": ["Unnerve"] } ] @@ -2506,6 +2512,11 @@ "role": "Bulky Setup", "movepool": ["dragondance", "earthquake", "outrage", "roost"], "abilities": ["Natural Cure"] + }, + { + "role": "Bulky Support", + "movepool": ["dracometeor", "earthquake", "fireblast", "healbell", "roost", "toxic"], + "abilities": ["Natural Cure"] } ] }, @@ -2516,11 +2527,6 @@ "role": "Setup Sweeper", "movepool": ["dragondance", "earthquake", "return", "roost"], "abilities": ["Natural Cure"] - }, - { - "role": "Bulky Support", - "movepool": ["earthquake", "fireblast", "healbell", "return", "roost"], - "abilities": ["Natural Cure"] } ] }, @@ -3806,7 +3812,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["doubleedge", "knockoff", "leafblade", "swordsdance", "synthesis", "xscissor"], + "movepool": ["doubleedge", "knockoff", "leafblade", "substitute", "swordsdance", "synthesis"], "abilities": ["Chlorophyll"], "preferredTypes": ["Dark"] } @@ -4079,9 +4085,13 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["drainpunch", "knockoff", "return", "substitute", "thunderwave"], - "abilities": ["Slow Start"], - "preferredTypes": ["Dark"] + "movepool": ["drainpunch", "knockoff", "return", "thunderwave"], + "abilities": ["Slow Start"] + }, + { + "role": "Bulky Support", + "movepool": ["knockoff", "return", "substitute", "thunderwave"], + "abilities": ["Slow Start"] } ] }, @@ -4822,9 +4832,9 @@ "level": 83, "sets": [ { - "role": "Setup Sweeper", - "movepool": ["dragondance", "highjumpkick", "ironhead", "knockoff"], - "abilities": ["Intimidate", "Moxie"] + "role": "Bulky Attacker", + "movepool": ["dragondance", "drainpunch", "ironhead", "knockoff"], + "abilities": ["Intimidate"] }, { "role": "Bulky Setup", @@ -4937,7 +4947,7 @@ "sets": [ { "role": "Bulky Setup", - "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover", "signalbeam"], + "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover"], "abilities": ["Magic Guard"] } ] @@ -5045,7 +5055,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["bugbuzz", "gigadrain", "stickyweb", "thunder", "voltswitch"], + "movepool": ["bugbuzz", "energyball", "stickyweb", "thunder", "voltswitch"], "abilities": ["Compound Eyes"], "preferredTypes": ["Bug"] } @@ -5293,7 +5303,7 @@ }, { "role": "Bulky Attacker", - "movepool": ["darkpulse", "dracometeor", "fireblast", "roost", "uturn"], + "movepool": ["darkpulse", "dracometeor", "fireblast", "roost", "toxic", "uturn"], "abilities": ["Levitate"] }, { diff --git a/data/random-battles/gen6/teams.ts b/data/random-battles/gen6/teams.ts index 0747d1f30f..4e7c261f93 100644 --- a/data/random-battles/gen6/teams.ts +++ b/data/random-battles/gen6/teams.ts @@ -227,7 +227,7 @@ export class RandomGen6Teams extends RandomGen7Teams { ['hornleech', 'woodhammer'], [['gigadrain', 'leafstorm'], ['leafstorm', 'petaldance', 'powerwhip']], ['wildcharge', 'thunderbolt'], - ['gunkshot', 'poisonjab'], + [['gunkshot', 'sludgewave'], 'poisonjab'], [['drainpunch', 'focusblast'], ['closecombat', 'highjumpkick', 'superpower']], ['stoneedge', 'headsmash'], ['dracometeor', 'dragonpulse'], diff --git a/data/random-battles/gen7/sets.json b/data/random-battles/gen7/sets.json index c0f304dcf1..bae946f3c9 100644 --- a/data/random-battles/gen7/sets.json +++ b/data/random-battles/gen7/sets.json @@ -283,7 +283,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["earthpower", "fireblast", "icebeam", "sludgewave", "stealthrock", "toxicspikes"], + "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "stealthrock", "toxicspikes"], "abilities": ["Sheer Force"], "preferredTypes": ["Ice"] } @@ -294,7 +294,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["earthpower", "fireblast", "icebeam", "sludgewave", "substitute", "superpower"], + "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "substitute", "throatchop"], "abilities": ["Sheer Force"], "preferredTypes": ["Ice"] } @@ -453,10 +453,16 @@ "level": 93, "sets": [ { - "role": "Fast Attacker", - "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam", "scald"], + "role": "Bulky Setup", + "movepool": ["calmmind", "encore", "focusblast", "icebeam", "scald", "substitute"], "abilities": ["Cloud Nine", "Swift Swim"], "preferredTypes": ["Ice"] + }, + { + "role": "Fast Attacker", + "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam"], + "abilities": ["Cloud Nine", "Swift Swim"], + "preferredTypes": ["Ice"] } ] }, @@ -1269,7 +1275,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"], + "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"], "abilities": ["Unnerve"] } ] @@ -1289,7 +1295,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"], + "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"], "abilities": ["Unnerve"] } ] @@ -2748,6 +2754,11 @@ "altaria": { "level": 92, "sets": [ + { + "role": "Bulky Setup", + "movepool": ["dragondance", "earthquake", "outrage", "roost"], + "abilities": ["Natural Cure"] + }, { "role": "Bulky Support", "movepool": ["defog", "dracometeor", "earthquake", "fireblast", "healbell", "roost", "toxic"], @@ -4115,7 +4126,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["doubleedge", "knockoff", "leafblade", "swordsdance", "synthesis", "xscissor"], + "movepool": ["doubleedge", "knockoff", "leafblade", "substitute", "swordsdance", "synthesis"], "abilities": ["Chlorophyll"], "preferredTypes": ["Dark"] } @@ -4406,9 +4417,13 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["drainpunch", "knockoff", "return", "substitute", "thunderwave"], - "abilities": ["Slow Start"], - "preferredTypes": ["Dark"] + "movepool": ["drainpunch", "knockoff", "return", "thunderwave"], + "abilities": ["Slow Start"] + }, + { + "role": "Bulky Support", + "movepool": ["knockoff", "return", "substitute", "thunderwave"], + "abilities": ["Slow Start"] } ] }, @@ -5200,9 +5215,9 @@ "level": 84, "sets": [ { - "role": "Setup Sweeper", - "movepool": ["dragondance", "highjumpkick", "ironhead", "knockoff"], - "abilities": ["Intimidate", "Moxie"] + "role": "Bulky Attacker", + "movepool": ["dragondance", "drainpunch", "ironhead", "knockoff"], + "abilities": ["Intimidate"] }, { "role": "Bulky Setup", @@ -5315,7 +5330,7 @@ "sets": [ { "role": "Bulky Setup", - "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover", "signalbeam"], + "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover"], "abilities": ["Magic Guard"] } ] @@ -5429,7 +5444,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["bugbuzz", "gigadrain", "stickyweb", "thunder", "voltswitch"], + "movepool": ["bugbuzz", "energyball", "stickyweb", "thunder", "voltswitch"], "abilities": ["Compound Eyes"], "preferredTypes": ["Bug"] } @@ -5694,7 +5709,7 @@ }, { "role": "Bulky Attacker", - "movepool": ["darkpulse", "defog", "dracometeor", "fireblast", "roost", "uturn"], + "movepool": ["darkpulse", "defog", "dracometeor", "fireblast", "roost", "toxic", "uturn"], "abilities": ["Levitate"] }, { @@ -7615,9 +7630,10 @@ "level": 77, "sets": [ { - "role": "Bulky Attacker", + "role": "Z-Move user", "movepool": ["calmmind", "flashcannon", "fleurcannon", "shiftgear"], - "abilities": ["Soul-Heart"] + "abilities": ["Soul-Heart"], + "preferredTypes": ["Fairy"] }, { "role": "Bulky Support", @@ -7625,10 +7641,9 @@ "abilities": ["Soul-Heart"] }, { - "role": "Z-Move user", + "role": "Bulky Setup", "movepool": ["aurasphere", "fleurcannon", "ironhead", "shiftgear"], - "abilities": ["Soul-Heart"], - "preferredTypes": ["Fairy", "Steel"] + "abilities": ["Soul-Heart"] } ] }, diff --git a/data/random-battles/gen7/teams.ts b/data/random-battles/gen7/teams.ts index 99ad0e24b1..1f427d5304 100644 --- a/data/random-battles/gen7/teams.ts +++ b/data/random-battles/gen7/teams.ts @@ -345,7 +345,7 @@ export class RandomGen7Teams extends RandomGen8Teams { ['hornleech', 'woodhammer'], [['gigadrain', 'leafstorm'], ['energyball', 'leafstorm', 'petaldance', 'powerwhip']], ['wildcharge', 'thunderbolt'], - ['gunkshot', 'poisonjab'], + [['gunkshot', 'sludgewave'], 'poisonjab'], [['drainpunch', 'focusblast'], ['closecombat', 'highjumpkick', 'superpower']], ['dracometeor', 'dragonpulse'], ['dragonclaw', 'outrage'], @@ -933,7 +933,7 @@ export class RandomGen7Teams extends RandomGen8Teams { if (ability === 'Sturdy' && moves.has('explosion') && !counter.get('speedsetup')) return 'Custap Berry'; if (types.includes('Normal') && moves.has('fakeout') && !!counter.get('Normal')) return 'Silk Scarf'; if (species.id === 'latias' || species.id === 'latios') return 'Soul Dew'; - if (role === 'Bulky Setup' && !!counter.get('speedsetup') && !moves.has('swordsdance')) { + if (role === 'Bulky Setup' && (!!counter.get('speedsetup') || moves.has('shiftgear')) && !moves.has('swordsdance')) { return 'Weakness Policy'; } if (species.id === 'palkia') return 'Lustrous Orb'; diff --git a/data/random-battles/gen8/data.json b/data/random-battles/gen8/data.json index 6d1ed007f3..102a5bd7bf 100644 --- a/data/random-battles/gen8/data.json +++ b/data/random-battles/gen8/data.json @@ -458,7 +458,7 @@ }, "mewtwo": { "level": 70, - "moves": ["fireblast", "nastyplot", "psystrike", "recover", "shadowball"], + "moves": ["aurasphere", "fireblast", "nastyplot", "psystrike", "recover"], "doublesLevel": 74, "doublesMoves": ["aurasphere", "icebeam", "nastyplot", "psystrike", "recover"] }, diff --git a/data/random-battles/gen8/teams.ts b/data/random-battles/gen8/teams.ts index b2582cf4ad..d57fdafa92 100644 --- a/data/random-battles/gen8/teams.ts +++ b/data/random-battles/gen8/teams.ts @@ -1526,7 +1526,7 @@ export class RandomGen8Teams { case 'Cloud Nine': return (!isNoDynamax || species.id !== 'golduck'); case 'Competitive': - return (counter.get('Special') < 2 || (moves.has('rest') && moves.has('sleeptalk'))); + return (moves.has('rest') && moves.has('sleeptalk')); case 'Compound Eyes': case 'No Guard': return !counter.get('inaccurate'); case 'Cursed Body': diff --git a/data/random-battles/gen9/doubles-sets.json b/data/random-battles/gen9/doubles-sets.json index 3eed419f7b..ba098fa4ab 100644 --- a/data/random-battles/gen9/doubles-sets.json +++ b/data/random-battles/gen9/doubles-sets.json @@ -1041,7 +1041,7 @@ "role": "Offensive Protect", "movepool": ["Hurricane", "Hyper Voice", "Protect", "Tailwind"], "abilities": ["Tinted Lens"], - "teraTypes": ["Flying"] + "teraTypes": ["Normal", "Steel"] } ] }, @@ -1480,7 +1480,7 @@ "sets": [ { "role": "Doubles Support", - "movepool": ["Heal Pulse", "Helping Hand", "Hyper Voice", "Protect", "Seismic Toss", "Soft-Boiled", "Thunder Wave"], + "movepool": ["Helping Hand", "Hyper Voice", "Life Dew", "Soft-Boiled", "Thunder Wave"], "abilities": ["Healer"], "teraTypes": ["Fairy", "Ghost", "Poison"] } @@ -1538,13 +1538,13 @@ "role": "Doubles Bulky Setup", "movepool": ["Dragon Dance", "High Horsepower", "Knock Off", "Protect", "Rock Slide", "Stone Edge"], "abilities": ["Sand Stream"], - "teraTypes": ["Ghost", "Rock", "Steel"] + "teraTypes": ["Ghost", "Rock"] }, { "role": "Doubles Bulky Attacker", "movepool": ["Fire Blast", "High Horsepower", "Icy Wind", "Knock Off", "Rock Slide", "Stone Edge"], "abilities": ["Sand Stream"], - "teraTypes": ["Flying", "Ghost", "Steel"] + "teraTypes": ["Flying", "Ghost"] } ] }, @@ -1682,7 +1682,7 @@ }, { "role": "Doubles Wallbreaker", - "movepool": ["Dazzling Gleam", "Moonblast", "Mystical Fire", "Psychic", "Trick"], + "movepool": ["Dazzling Gleam", "Moonblast", "Mystical Fire", "Psychic"], "abilities": ["Trace"], "teraTypes": ["Fairy", "Fire", "Steel"] } @@ -2023,7 +2023,7 @@ "sets": [ { "role": "Doubles Support", - "movepool": ["Energy Ball", "Helping Hand", "Hurricane", "Protect", "Tailwind", "Wide Guard"], + "movepool": ["Energy Ball", "Hurricane", "Protect", "Tailwind", "Wide Guard"], "abilities": ["Harvest"], "teraTypes": ["Steel"] } @@ -2575,7 +2575,7 @@ "sets": [ { "role": "Doubles Support", - "movepool": ["Encore", "Helping Hand", "Hydro Pump", "Icy Wind", "Tailwind", "Tickle"], + "movepool": ["Encore", "Helping Hand", "Hydro Pump", "Icy Wind", "Tailwind"], "abilities": ["Storm Drain"], "teraTypes": ["Fire", "Ground"] } @@ -3086,7 +3086,7 @@ "role": "Bulky Protect", "movepool": ["Ice Beam", "Protect", "Scald", "Tail Glow"], "abilities": ["Hydration"], - "teraTypes": ["Grass", "Steel", "Water"] + "teraTypes": ["Grass", "Steel"] }, { "role": "Doubles Bulky Setup", @@ -3486,13 +3486,7 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Encore", "Moonblast", "Tailwind", "Taunt"], - "abilities": ["Prankster"], - "teraTypes": ["Fire", "Ghost", "Steel"] - }, - { - "role": "Doubles Support", - "movepool": ["Encore", "Helping Hand", "Moonblast", "Tailwind"], + "movepool": ["Encore", "Helping Hand", "Moonblast", "Tailwind", "Taunt"], "abilities": ["Prankster"], "teraTypes": ["Fire", "Ghost", "Steel"] } @@ -4298,7 +4292,7 @@ "sets": [ { "role": "Choice Item user", - "movepool": ["Aura Sphere", "Dark Pulse", "Dragon Pulse", "Muddy Water", "U-turn"], + "movepool": ["Aura Sphere", "Dark Pulse", "Dragon Pulse", "Muddy Water"], "abilities": ["Mega Launcher"], "teraTypes": ["Dark", "Dragon", "Fighting"] }, @@ -4615,7 +4609,7 @@ "teraTypes": ["Ground"] }, { - "role": "Doubles Setup Sweeper", + "role": "Doubles Bulky Setup", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Ground"] @@ -4632,7 +4626,7 @@ "teraTypes": ["Ground"] }, { - "role": "Doubles Setup Sweeper", + "role": "Doubles Bulky Setup", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Ground"] @@ -4649,7 +4643,7 @@ "teraTypes": ["Fighting", "Ground"] }, { - "role": "Doubles Setup Sweeper", + "role": "Doubles Bulky Setup", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Fighting", "Ground"] @@ -4666,7 +4660,7 @@ "teraTypes": ["Fighting", "Ground"] }, { - "role": "Doubles Setup Sweeper", + "role": "Doubles Bulky Setup", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Fighting", "Ground"] @@ -5183,8 +5177,8 @@ "teraTypes": ["Dragon", "Steel"] }, { - "role": "Doubles Support", - "movepool": ["Glare", "High Horsepower", "Rest", "Stealth Rock", "Stone Edge"], + "role": "Doubles Bulky Attacker", + "movepool": ["Glare", "High Horsepower", "Rest", "Stone Edge"], "abilities": ["Shed Skin"], "teraTypes": ["Dragon", "Steel"] } @@ -5206,7 +5200,7 @@ "sets": [ { "role": "Doubles Wallbreaker", - "movepool": ["Close Combat", "Poison Jab", "Protect", "Psychic Fangs", "Waterfall"], + "movepool": ["Close Combat", "Flip Turn", "Poison Jab", "Protect", "Waterfall"], "abilities": ["Propeller Tail"], "teraTypes": ["Fighting"] } @@ -5316,6 +5310,12 @@ "movepool": ["Alluring Voice", "Dazzling Gleam", "Decorate", "Encore", "Protect"], "abilities": ["Aroma Veil"], "teraTypes": ["Steel"] + }, + { + "role": "Doubles Bulky Attacker", + "movepool": ["Alluring Voice", "Dazzling Gleam", "Decorate", "Helping Hand", "Protect"], + "abilities": ["Aroma Veil"], + "teraTypes": ["Steel"] } ] }, @@ -5335,9 +5335,9 @@ "sets": [ { "role": "Doubles Support", - "movepool": ["Electroweb", "Recover", "Thunderbolt", "Toxic Spikes"], + "movepool": ["Electroweb", "Recover", "Scald", "Thunderbolt"], "abilities": ["Electric Surge"], - "teraTypes": ["Grass"] + "teraTypes": ["Grass", "Water"] } ] }, @@ -5515,7 +5515,7 @@ "sets": [ { "role": "Doubles Wallbreaker", - "movepool": ["Close Combat", "Coaching", "Crunch", "Howl", "Iron Head", "Psychic Fangs", "Stone Edge"], + "movepool": ["Close Combat", "Coaching", "Crunch", "Howl", "Stone Edge"], "abilities": ["Dauntless Shield"], "teraTypes": ["Dark", "Fighting", "Steel"] }, @@ -6121,7 +6121,7 @@ "role": "Doubles Support", "movepool": ["Energy Ball", "Fire Blast", "Protect", "Rage Powder", "Will-O-Wisp"], "abilities": ["Chlorophyll"], - "teraTypes": ["Fire", "Grass", "Steel"] + "teraTypes": ["Fire", "Steel"] } ] }, @@ -6360,7 +6360,13 @@ "sets": [ { "role": "Doubles Wallbreaker", - "movepool": ["Hyper Voice", "Nasty Plot", "Protect", "Psychic", "Trick Room"], + "movepool": ["Hyper Voice", "Protect", "Psychic", "Trick Room"], + "abilities": ["Armor Tail"], + "teraTypes": ["Fairy"] + }, + { + "role": "Doubles Bulky Attacker", + "movepool": ["Hyper Voice", "Nasty Plot", "Psychic", "Trick Room"], "abilities": ["Armor Tail"], "teraTypes": ["Fairy"] } @@ -6422,9 +6428,15 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Close Combat", "Crunch", "Protect", "Rage Powder", "Seed Bomb", "Spore", "Sucker Punch"], + "movepool": ["Close Combat", "Crunch", "Protect", "Seed Bomb", "Spore", "Sucker Punch"], "abilities": ["Protosynthesis"], "teraTypes": ["Dark", "Poison"] + }, + { + "role": "Doubles Support", + "movepool": ["Rage Powder", "Seed Bomb", "Spore", "Sucker Punch"], + "abilities": ["Protosynthesis"], + "teraTypes": ["Ghost", "Poison"] } ] }, @@ -6669,7 +6681,13 @@ "sets": [ { "role": "Bulky Protect", - "movepool": ["Knock Off", "Leech Seed", "Pollen Puff", "Protect", "Ruination"], + "movepool": ["Knock Off", "Leech Seed", "Pollen Puff", "Protect"], + "abilities": ["Tablets of Ruin"], + "teraTypes": ["Poison"] + }, + { + "role": "Bulky Protect", + "movepool": ["Knock Off", "Leech Seed", "Protect", "Ruination"], "abilities": ["Tablets of Ruin"], "teraTypes": ["Poison"] } diff --git a/data/random-battles/gen9/factory-sets.json b/data/random-battles/gen9/factory-sets.json index 08b467f9a2..d1813dac25 100644 --- a/data/random-battles/gen9/factory-sets.json +++ b/data/random-battles/gen9/factory-sets.json @@ -757,7 +757,7 @@ "item": ["Choice Specs"], "ability": ["Infiltrator"], "evs": {"spa": 252, "spd": 4, "spe": 252}, - "nature": ["Timid", "Modest"], + "nature": ["Timid"], "teraType": ["Dragon", "Ghost"], "moves": [["Draco Meteor"], ["Shadow Ball"], ["Flamethrower"], ["U-turn"]] }, { diff --git a/data/random-battles/gen9/sets.json b/data/random-battles/gen9/sets.json index daabe4f4dd..03b9266bba 100644 --- a/data/random-battles/gen9/sets.json +++ b/data/random-battles/gen9/sets.json @@ -60,13 +60,13 @@ "teraTypes": ["Dark", "Ground"] }, { - "role": "Setup Sweeper", + "role": "Bulky Setup", "movepool": ["Coil", "Earthquake", "Gunk Shot", "Trailblaze"], "abilities": ["Intimidate"], "teraTypes": ["Grass", "Ground"] }, { - "role": "Fast Bulky Setup", + "role": "Bulky Attacker", "movepool": ["Coil", "Earthquake", "Gunk Shot", "Sucker Punch"], "abilities": ["Intimidate"], "teraTypes": ["Dark", "Ground"] @@ -296,7 +296,7 @@ "level": 90, "sets": [ { - "role": "Fast Bulky Setup", + "role": "Bulky Setup", "movepool": ["Encore", "Grass Knot", "Hydro Pump", "Ice Beam", "Nasty Plot"], "abilities": ["Cloud Nine", "Swift Swim"], "teraTypes": ["Water"] @@ -694,7 +694,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["Close Combat", "Drain Punch", "Ice Punch", "Knock Off", "Mach Punch", "Rapid Spin", "Swords Dance"], + "movepool": ["Drain Punch", "Ice Punch", "Knock Off", "Mach Punch", "Rapid Spin", "Swords Dance"], "abilities": ["Inner Focus", "Iron Fist"], "teraTypes": ["Dark", "Fighting"] }, @@ -1417,6 +1417,12 @@ "movepool": ["Body Press", "Iron Head", "Rapid Spin", "Spikes", "Stealth Rock"], "abilities": ["Sturdy"], "teraTypes": ["Fighting", "Water"] + }, + { + "role": "Bulky Support", + "movepool": ["Iron Head", "Rapid Spin", "Spikes", "Stealth Rock", "Thunder Wave"], + "abilities": ["Sturdy"], + "teraTypes": ["Water"] } ] }, @@ -2259,7 +2265,7 @@ "teraTypes": ["Dark", "Fire", "Grass", "Ground", "Poison"] }, { - "role": "Setup Sweeper", + "role": "Bulky Setup", "movepool": ["Earthquake", "Gunk Shot", "Swords Dance", "Trailblaze"], "abilities": ["Infiltrator"], "teraTypes": ["Grass", "Ground"] @@ -3044,7 +3050,7 @@ { "role": "Fast Attacker", "movepool": ["Body Press", "Flash Cannon", "Thunderbolt", "Volt Switch"], - "abilities": ["Magnet Pull"], + "abilities": ["Analytic", "Magnet Pull"], "teraTypes": ["Electric", "Fighting", "Flying", "Water"] }, { @@ -3179,7 +3185,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["Earthquake", "Ice Shard", "Icicle Crash", "Knock Off", "Stealth Rock"], + "movepool": ["Earthquake", "Ice Shard", "Icicle Crash", "Knock Off", "Stealth Rock", "Trailblaze"], "abilities": ["Thick Fat"], "teraTypes": ["Ground", "Ice"] } @@ -3241,7 +3247,7 @@ }, { "role": "Bulky Support", - "movepool": ["Earthquake", "Pain Split", "Poltergeist", "Shadow Sneak", "Will-O-Wisp"], + "movepool": ["Earthquake", "Pain Split", "Poltergeist", "Will-O-Wisp"], "abilities": ["Frisk"], "teraTypes": ["Dark", "Fairy"] }, @@ -3904,7 +3910,7 @@ "teraTypes": ["Fire"] }, { - "role": "Setup Sweeper", + "role": "Bulky Setup", "movepool": ["Bulk Up", "Drain Punch", "Flare Blitz", "Trailblaze"], "abilities": ["Reckless"], "teraTypes": ["Fighting", "Grass"] @@ -4011,15 +4017,9 @@ "sets": [ { "role": "Fast Support", - "movepool": ["Encore", "Giga Drain", "Moonblast", "Stun Spore", "U-turn"], + "movepool": ["Encore", "Giga Drain", "Leech Seed", "Moonblast", "Stun Spore", "Substitute", "U-turn"], "abilities": ["Prankster"], "teraTypes": ["Poison", "Steel"] - }, - { - "role": "Bulky Support", - "movepool": ["Encore", "Leech Seed", "Moonblast", "Substitute"], - "abilities": ["Prankster"], - "teraTypes": ["Steel"] } ] }, @@ -4095,9 +4095,15 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["Bulk Up", "Earthquake", "Gunk Shot", "Knock Off", "Stealth Rock", "Stone Edge"], + "movepool": ["Earthquake", "Gunk Shot", "Knock Off", "Stealth Rock", "Stone Edge"], "abilities": ["Intimidate"], "teraTypes": ["Ground", "Poison"] + }, + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Earthquake", "Gunk Shot", "Knock Off"], + "abilities": ["Intimidate"], + "teraTypes": ["Poison"] } ] }, @@ -4110,12 +4116,6 @@ "abilities": ["Shed Skin"], "teraTypes": ["Poison"] }, - { - "role": "Setup Sweeper", - "movepool": ["Close Combat", "Dragon Dance", "Knock Off", "Poison Jab"], - "abilities": ["Intimidate"], - "teraTypes": ["Poison"] - }, { "role": "Bulky Attacker", "movepool": ["Dragon Dance", "Drain Punch", "Knock Off", "Poison Jab"], @@ -4202,7 +4202,7 @@ "sets": [ { "role": "Bulky Support", - "movepool": ["Brave Bird", "Defog", "Hydro Pump", "Knock Off", "Roost"], + "movepool": ["Brave Bird", "Defog", "Flip Turn", "Hydro Pump", "Knock Off", "Roost"], "abilities": ["Hydration"], "teraTypes": ["Ground"] } @@ -4264,7 +4264,7 @@ "sets": [ { "role": "Fast Support", - "movepool": ["Bug Buzz", "Giga Drain", "Sticky Web", "Thunder", "Volt Switch"], + "movepool": ["Bug Buzz", "Energy Ball", "Sticky Web", "Thunder", "Volt Switch"], "abilities": ["Compound Eyes"], "teraTypes": ["Electric"] } @@ -4490,7 +4490,7 @@ }, { "role": "Bulky Support", - "movepool": ["Body Press", "Iron Defense", "Iron Head", "Stealth Rock", "Stone Edge", "Thunder Wave", "Volt Switch"], + "movepool": ["Body Press", "Iron Defense", "Iron Head", "Stealth Rock", "Thunder Wave", "Volt Switch"], "abilities": ["Justified"], "teraTypes": ["Ghost", "Water"] } @@ -5325,7 +5325,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["Close Combat", "Knock Off", "Stealth Rock", "Stone Edge", "Sucker Punch", "Swords Dance"], + "movepool": ["Close Combat", "Knock Off", "Play Rough", "Stealth Rock", "Stone Edge", "Sucker Punch", "Swords Dance"], "abilities": ["No Guard"], "teraTypes": ["Fighting"] } @@ -5502,12 +5502,6 @@ "komala": { "level": 89, "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Double-Edge", "Earthquake", "Knock Off", "Superpower", "U-turn", "Wood Hammer"], - "abilities": ["Comatose"], - "teraTypes": ["Fighting", "Grass", "Ground"] - }, { "role": "Bulky Support", "movepool": ["Body Slam", "Earthquake", "Knock Off", "Rapid Spin", "U-turn"], @@ -5604,6 +5598,12 @@ "abilities": ["Prism Armor"], "teraTypes": ["Dark", "Ground", "Steel"] }, + { + "role": "Bulky Setup", + "movepool": ["Dragon Dance", "Earthquake", "Knock Off", "Photon Geyser"], + "abilities": ["Prism Armor"], + "teraTypes": ["Dark", "Ground", "Steel"] + }, { "role": "Bulky Setup", "movepool": ["Calm Mind", "Earth Power", "Heat Wave", "Moonlight", "Photon Geyser"], @@ -5622,7 +5622,7 @@ "teraTypes": ["Ground", "Steel", "Water"] }, { - "role": "Setup Sweeper", + "role": "Bulky Setup", "movepool": ["Dragon Dance", "Earthquake", "Photon Geyser", "Sunsteel Strike"], "abilities": ["Prism Armor"], "teraTypes": ["Ground", "Steel", "Water"] @@ -5659,7 +5659,7 @@ "role": "Bulky Setup", "movepool": ["Calm Mind", "Flash Cannon", "Fleur Cannon", "Shift Gear"], "abilities": ["Soul-Heart"], - "teraTypes": ["Fairy", "Flying", "Steel", "Water"] + "teraTypes": ["Fairy", "Flying", "Water"] }, { "role": "Tera Blast user", @@ -6449,16 +6449,22 @@ "level": 79, "sets": [ { - "role": "Fast Support", - "movepool": ["Aqua Step", "Close Combat", "Knock Off", "Rapid Spin", "Roost", "Triple Axel", "U-turn"], + "role": "Wallbreaker", + "movepool": ["Aqua Step", "Close Combat", "Knock Off", "Triple Axel", "U-turn"], "abilities": ["Moxie"], "teraTypes": ["Fighting", "Water"] }, { "role": "Setup Sweeper", - "movepool": ["Aqua Step", "Close Combat", "Encore", "Knock Off", "Roost", "Swords Dance", "Triple Axel"], + "movepool": ["Aqua Step", "Close Combat", "Encore", "Knock Off", "Swords Dance", "Triple Axel"], "abilities": ["Moxie"], - "teraTypes": ["Fighting", "Water"] + "teraTypes": ["Fighting", "Steel", "Water"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Aqua Step", "Close Combat", "Rapid Spin", "Roost", "Swords Dance"], + "abilities": ["Moxie"], + "teraTypes": ["Steel"] } ] }, @@ -6831,7 +6837,7 @@ "teraTypes": ["Water"] }, { - "role": "Setup Sweeper", + "role": "Bulky Setup", "movepool": ["Gigaton Hammer", "Knock Off", "Play Rough", "Protect", "Swords Dance"], "abilities": ["Mold Breaker"], "teraTypes": ["Steel"] diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index 061db8297b..2ae569c3cd 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -816,6 +816,12 @@ export class RandomTeams { } } + // Enforce Encore on Whimsicott + if (movePool.includes('encore') && species.id === 'whimsicott') { + counter = this.addMove('encore', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + // Enforce moves in doubles if (isDoubles) { const doublesEnforcedMoves = ['mortalspin', 'spore']; @@ -1176,7 +1182,7 @@ export class RandomTeams { if (moves.has('clangoroussoul') || (species.id === 'toxtricity' && moves.has('shiftgear'))) return 'Throat Spray'; if ( (species.baseSpecies === 'Magearna' && role === 'Tera Blast user') || - species.id === 'necrozmaduskmane' || (species.id === 'calyrexice' && isDoubles) + ((species.id === 'calyrexice' || species.id === 'necrozmaduskmane') && isDoubles) ) return 'Weakness Policy'; if (['dragonenergy', 'lastrespects', 'waterspout'].some(m => moves.has(m))) return 'Choice Scarf'; if ( @@ -1330,17 +1336,17 @@ export class RandomTeams { teraType: string, role: RandomTeamsTypes.Role, ): string { - const lifeOrbReqs = ['flamecharge', 'nuzzle', 'rapidspin', 'trailblaze'].every(m => !moves.has(m)); + const lifeOrbReqs = ['flamecharge', 'nuzzle', 'rapidspin'].every(m => !moves.has(m)); if ( species.id !== 'jirachi' && (counter.get('Physical') >= moves.size) && - ['dragontail', 'fakeout', 'firstimpression', 'flamecharge', 'rapidspin'].every(m => !moves.has(m)) + ['dragontail', 'fakeout', 'firstimpression', 'flamecharge', 'rapidspin', 'trailblaze'].every(m => !moves.has(m)) ) { const scarfReqs = ( role !== 'Wallbreaker' && (species.baseStats.atk >= 100 || ability === 'Huge Power' || ability === 'Pure Power') && species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && - ability !== 'Speed Boost' && !counter.get('priority') && !moves.has('aquastep') + ability !== 'Speed Boost' && !counter.get('priority') ); return (scarfReqs && this.randomChance(1, 2)) ? 'Choice Scarf' : 'Choice Band'; } @@ -1379,6 +1385,7 @@ export class RandomTeams { ) return 'Heavy-Duty Boots'; // Low Priority + if (moves.has('dragondance') && role === 'Bulky Setup') return 'Weakness Policy'; if ( ability === 'Rough Skin' || ( ability === 'Regenerator' && (role === 'Bulky Support' || role === 'Bulky Attacker') && diff --git a/data/random-battles/gen9ffa/sets.json b/data/random-battles/gen9ffa/sets.json index 4141e0d608..171ca3d0ab 100644 --- a/data/random-battles/gen9ffa/sets.json +++ b/data/random-battles/gen9ffa/sets.json @@ -4782,7 +4782,7 @@ "teraTypes": ["Fairy"] }, { - "role": "Fast Attacker", + "role": "Wallbreaker", "movepool": ["Alluring Voice", "Dark Pulse", "Protect", "Psychic", "Thunderbolt"], "abilities": ["Competitive"], "teraTypes": ["Dark", "Electric", "Fairy"] From 156ef647003b141c913206484c3a9325c88253f3 Mon Sep 17 00:00:00 2001 From: Runo <105902454+Runoisch@users.noreply.github.com> Date: Thu, 1 Jan 2026 04:16:38 -0500 Subject: [PATCH 006/139] ZA OU: Fix Greninja-Bond Movepool (#11649) --- data/mods/gen9legendsou/learnsets.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/data/mods/gen9legendsou/learnsets.ts b/data/mods/gen9legendsou/learnsets.ts index 029d87db17..65a294a3e1 100644 --- a/data/mods/gen9legendsou/learnsets.ts +++ b/data/mods/gen9legendsou/learnsets.ts @@ -68392,6 +68392,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab trailblaze: ["9M"], upperhand: ["9M"], uturn: ["9M", "7M"], + vacuumwave: ["9M"], waterfall: ["9M", "7M"], watergun: ["9M"], waterpledge: ["9M", "7T"], From 021acd4c4c0e7fd94da8a26ea38f3e67c7beaf2a Mon Sep 17 00:00:00 2001 From: livid washed <115855253+livid-washed@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:17:09 +1100 Subject: [PATCH 007/139] Add banners advertising RBTT player signups to Random Battles formats (#11658) --- config/formats.ts | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/config/formats.ts b/config/formats.ts index a5b70f4c73..df5743952d 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -54,6 +54,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['PotD', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 9] Unrated Random Battle", @@ -196,6 +199,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['PotD', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod', 'Sleep Clause Mod'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 9] Doubles OU", @@ -3076,6 +3082,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'randomroulette', team: 'random', bestOfDefault: true, + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 9] Monkey's Paw Random Battle", @@ -3245,6 +3254,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'randomBSSFactory', bestOfDefault: true, ruleset: ['Flat Rules', 'VGC Timer'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 9] Draft Factory", @@ -3294,6 +3306,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ bestOfDefault: true, ruleset: ['HP Percentage Mod', 'Cancel Mod'], banlist: ['CAP', 'Custom', 'Future', 'LGPE', 'MissingNo.', 'Pikachu-Cosplay', 'Pichu-Spiky-eared', 'Xerneas-Neutral'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 9] Doubles Hackmons Cup", @@ -3491,6 +3506,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['PotD', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 8] Random Doubles Battle", @@ -3584,6 +3602,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 7] Battle Factory", @@ -3630,6 +3651,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 6] Battle Factory", @@ -3649,6 +3673,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 4] Random Battle", @@ -3656,6 +3683,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 3] Random Battle", @@ -3663,6 +3693,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Standard'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 2] Random Battle", @@ -3670,6 +3703,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Standard'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 1] Random Battle", @@ -3677,6 +3713,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Standard'], + onBegin() { + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); + }, }, { name: "[Gen 1] Challenge Cup", From af4110abee24fedb68ceb2a3d24ab7953fcc76d0 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:19:26 -0700 Subject: [PATCH 008/139] Fix build again --- test/random-battles/all-gens.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js index f342c13867..4e7abdd912 100644 --- a/test/random-battles/all-gens.js +++ b/test/random-battles/all-gens.js @@ -512,6 +512,7 @@ describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { // Check that no moves appear more than once in a set assert.equal(set.moves.flat(1).length, new Set(set.moves.flat(1)).size, `${species} has repeat moves`); + if (species === 'Carbink') continue; assert(!!set.evs, `Set of ${species} has no EVs specified`); const keys = Object.keys(set.evs); let totalEVs = 0; From b6368142790e3c60636650f3cd5906679021fcec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Thu, 1 Jan 2026 09:21:48 +0000 Subject: [PATCH 009/139] RBY: Tier Shifts (#11652) https://www.smogon.com/forums/threads/rby-uu-hub.3647713/post-10816029 https://www.smogon.com/forums/threads/rby-pu-hub.3700527/post-10816027 --- data/mods/gen1/formats-data.ts | 40 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/data/mods/gen1/formats-data.ts b/data/mods/gen1/formats-data.ts index 3c719d5805..085d8ac70c 100644 --- a/data/mods/gen1/formats-data.ts +++ b/data/mods/gen1/formats-data.ts @@ -51,7 +51,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, pidgeot: { - tier: "ZU", + tier: "PU", }, rattata: { tier: "LC", @@ -90,7 +90,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, nidoqueen: { - tier: "PU", + tier: "ZU", }, nidoranm: { tier: "LC", @@ -117,7 +117,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, wigglytuff: { - tier: "PU", + tier: "ZU", }, zubat: { tier: "LC", @@ -132,7 +132,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, vileplume: { - tier: "PU", + tier: "ZU", }, paras: { tier: "LC", @@ -168,7 +168,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, primeape: { - tier: "ZU", + tier: "PU", }, growlithe: { tier: "LC", @@ -189,7 +189,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "PU", }, kadabra: { - tier: "UU", + tier: "NU", }, alakazam: { tier: "OU", @@ -201,7 +201,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, machamp: { - tier: "PU", + tier: "ZU", }, bellsprout: { tier: "LC", @@ -216,7 +216,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "ZU", }, tentacruel: { - tier: "UU", + tier: "NU", }, geodude: { tier: "LC", @@ -225,13 +225,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "PU", }, golem: { - tier: "UU", + tier: "NU", }, ponyta: { tier: "LC", }, rapidash: { - tier: "PUBL", + tier: "UU", }, slowpoke: { tier: "ZU", @@ -258,7 +258,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, dewgong: { - tier: "UU", + tier: "NU", }, grimer: { tier: "LC", @@ -294,13 +294,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, kingler: { - tier: "PU", + tier: "ZU", }, voltorb: { tier: "LC", }, electrode: { - tier: "UU", + tier: "NU", }, exeggcute: { tier: "PU", @@ -339,7 +339,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, tangela: { - tier: "UU", + tier: "NU", }, kangaskhan: { tier: "UU", @@ -366,7 +366,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NU", }, scyther: { - tier: "ZU", + tier: "PU", }, jynx: { tier: "OU", @@ -375,10 +375,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, magmar: { - tier: "ZU", + tier: "PU", }, pinsir: { - tier: "PU", + tier: "ZU", }, tauros: { tier: "OU", @@ -399,7 +399,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, vaporeon: { - tier: "UU", + tier: "NU", }, jolteon: { tier: "OU", @@ -414,7 +414,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "ZU", }, omastar: { - tier: "UU", + tier: "NU", }, kabuto: { tier: "LC", @@ -435,7 +435,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, moltres: { - tier: "NU", + tier: "UU", }, dratini: { tier: "LC", From ee8568588a96d99c4969ee43c84bef9981a70641 Mon Sep 17 00:00:00 2001 From: surfnWOB Date: Thu, 1 Jan 2026 03:22:09 -0600 Subject: [PATCH 010/139] Gen 3: Add ADV 200 Doubles format (#11657) --- config/formats.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config/formats.ts b/config/formats.ts index df5743952d..87dccf2fe5 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -4946,6 +4946,15 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard', 'One Boost Passer Clause'], banlist: ['Uber', 'Swagger'], }, + { + name: "[Gen 3] ADV 200 Doubles", + mod: 'gen3rs', + gameType: 'doubles', + searchShow: false, + ruleset: ['Standard', '!Switch Priority Clause Mod'], + banlist: ['Uber', 'Quick Claw', 'Soul Dew', 'Swagger'], + unbanlist: ['Wobbuffet', 'Wynaut'], + }, { name: "[Gen 3] Custom Game", mod: 'gen3', From cacd9a80bbff037d1806023447b6c22fc1dbb20f Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:24:58 -0700 Subject: [PATCH 011/139] Fix block scoped variable duping --- test/random-battles/all-gens.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js index 4e7abdd912..b40edd85b9 100644 --- a/test/random-battles/all-gens.js +++ b/test/random-battles/all-gens.js @@ -469,8 +469,8 @@ describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { const setsJSON = require(`../../dist/data/random-battles/gen9/1v1-factory-sets.json`); const mod = 'gen9'; - for (const species in setsJSON) { - const speciesData = setsJSON[species]; + for (const speciesName in setsJSON) { + const speciesData = setsJSON[speciesName]; for (const set of speciesData.sets) { const species = Dex.species.get(set.species); assert(species.exists, `invalid species "${set.species}" of ${species}`); @@ -512,7 +512,7 @@ describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { // Check that no moves appear more than once in a set assert.equal(set.moves.flat(1).length, new Set(set.moves.flat(1)).size, `${species} has repeat moves`); - if (species === 'Carbink') continue; + if (species.name === 'Carbink') continue; assert(!!set.evs, `Set of ${species} has no EVs specified`); const keys = Object.keys(set.evs); let totalEVs = 0; From 63bdcb392b83cb71f36c5130e24404ded0d98292 Mon Sep 17 00:00:00 2001 From: livid washed <115855253+livid-washed@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:25:37 +1100 Subject: [PATCH 012/139] Add January 2026 Randomized Format Spotlight (#11659) * Add January 2026 Randomzied Format Spotlight * didn't mean to remove that line * lint --- config/formats.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 87dccf2fe5..4a83331b07 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3058,14 +3058,13 @@ export const Formats: import('../sim/dex-formats').FormatList = [ column: 3, }, { - name: "[Gen 9] Force of the Fallen Random Roulette", - desc: `Random Battles in a random generation! [Gen 1] Random Battle - [Gen 9] Random Battle. Once a pokemon is defeated, the last move in its moveset will be inherited by all its teammates.`, - mod: 'randomroulette', - team: 'random', - ruleset: ['Force of the Fallen Mod'], - bestOfDefault: true, + name: "[Gen 9] BSS Factory (Bo3)", + desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`, + mod: 'gen9', + team: 'randomBSSFactory', + ruleset: ['Flat Rules', 'VGC Timer', 'Best of = 3'], onBegin() { - this.add(`raw|
The Ladder Achievements Project for Force of the Fallen Random Roulette has officially started! Check this thread to see what the project is all about and the challenges for this cycle!
`); + this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); }, }, From 305fff4049fc2ba8b372494facbb51a7c4be38aa Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:28:28 -0700 Subject: [PATCH 013/139] Fix failed tests --- data/random-battles/gen9/1v1-factory-sets.json | 2 +- test/random-battles/all-gens.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index bf0b658e82..e0873bec3c 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -1461,7 +1461,7 @@ "ability": "Solid Rock", "nature": "Adamant", "evs": {"hp": 248, "atk": 252, "def": 8}, - "moves": [["Earthquake"], ["Rock Wrecker"], ["Rock Blast"], ["Avalanch"]], + "moves": [["Earthquake"], ["Rock Wrecker"], ["Rock Blast"], ["Avalanche"]], "weight": 40 } ] diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js index b40edd85b9..b42d9a678b 100644 --- a/test/random-battles/all-gens.js +++ b/test/random-battles/all-gens.js @@ -529,7 +529,7 @@ describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { for (const set of speciesData.sets) { totalWeight += set.weight; } - assert.equal(totalWeight, 100, `Total set weight for ${species} is ${totalWeight < 100 ? 'less' : 'greater'} than 100%`); + assert.equal(totalWeight, 100, `Total set weight for ${speciesName} is ${totalWeight < 100 ? 'less' : 'greater'} than 100%`); } }); }); From 6a2b1ad82ef3270275532c5fc6eba78910e85afb Mon Sep 17 00:00:00 2001 From: Caznovia <104919647+Caznovia@users.noreply.github.com> Date: Thu, 1 Jan 2026 04:29:12 -0500 Subject: [PATCH 014/139] Update /intro command links (#11654) --- server/chat-commands/info.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/chat-commands/info.ts b/server/chat-commands/info.ts index 765851c41f..ca1eb36bf0 100644 --- a/server/chat-commands/info.ts +++ b/server/chat-commands/info.ts @@ -1788,8 +1788,8 @@ export const commands: Chat.ChatCommands = { `- Beginner's Guide to Pokémon Showdown
` + `- An introduction to competitive Pokémon
` + `- What do 'OU', 'UU', etc mean?
` + - `- What are the rules for each format?
` + - `- What is 'Sleep Clause' and other clauses?
` + + `- What are the rules for each format?
` + + `- What is 'Sleep Clause' and other clauses?
` + `- Next Steps for Competitive Battling` ); }, From 61a7a3a67511f30a8870367c23b0df1990357ca3 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:47:40 -0700 Subject: [PATCH 015/139] Add January 2026 rotational formats --- config/formats.ts | 182 ++++++++++-------- .../random-battles/gen9/1v1-factory-sets.json | 2 +- test/random-battles/all-gens.js | 42 ++-- 3 files changed, 125 insertions(+), 101 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 4a83331b07..d36c2346ff 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -534,35 +534,39 @@ export const Formats: import('../sim/dex-formats').FormatList = [ column: 2, }, { - name: "[Gen 9] Convergence", - desc: `Allows all Pokémon that have identical types to share moves and abilities.`, + name: "[Gen 9] Tier Shift", + desc: `Pokémon below OU get their stats, excluding HP, boosted. UU/RUBL get +15, RU/NUBL get +20, NU/PUBL get +25, and PU or lower get +30.`, mod: 'gen9', // searchShow: false, - ruleset: ['Standard OMs', 'Ability Clause = 1', 'Sleep Moves Clause', 'Convergence Legality', 'Terastal Clause', '!Obtainable Abilities'], + ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Terastal Clause', 'Evasion Clause', 'Tier Shift Mod'], banlist: [ - 'Arceus', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Comfey', 'Darkrai', 'Deoxys-Normal', 'Deoxys-Attack', 'Deoxys-Speed', - 'Dialga', 'Dialga-Origin', 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Groudon', 'Haxorus', 'Ho-oh', 'Inteleon', - 'Iron Bundle', 'Iron Hands', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', 'Lilligant-Hisui', 'Lugia', 'Lunala', - 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin', - 'Porygon-Z', 'Primarina', 'Rayquaza', 'Regieleki', 'Regigigas', 'Reshiram', 'Roaring Moon', 'Shaymin-Sky', 'Solgaleo', 'Slaking', 'Smeargle', 'Sneasler', - 'Spectrier', 'Umbreon', 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Walking Wake', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', - 'Zekrom', 'Arena Trap', 'Comatose', 'Contrary', 'Drizzle', 'Drought', 'Imposter', 'Moody', 'Pure Power', 'Shadow Tag', 'Speed Boost', 'Unburden', - 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', 'Belly Drum', 'Boomburst', 'Extreme Speed', 'Final Gambit', 'Last Respects', 'Population Bomb', - 'Quiver Dance', 'Rage Fist', 'Shed Tail', 'Shell Smash', 'Spore', 'Transform', + 'Arceus', 'Calyrex-Shadow', 'Koraidon', 'Kyogre', 'Medicham', 'Miraidon', 'Necrozma-Dusk-Mane', 'Zacian-Crowned', 'Drizzle', 'Moody', 'Arena Trap', 'Shadow Tag', + 'Baton Pass', 'Last Respects', 'Shed Tail', 'Heat Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', ], + unbanlist: ['Arceus-Bug', 'Arceus-Grass', 'Arceus-Ice'], }, { - name: "[Gen 9] VoltTurn Mayhem", - desc: `Every move that targets a foe causes the user to switch out after use.`, + name: "[Gen 9] NatDex Camove Chaos", + desc: `National Dex-based format where Pokemon can use almost any move in the game, and their first two move types determine their type.`, mod: 'gen9', - ruleset: ['Standard OMs', 'Sleep Moves Clause', 'VoltTurn Mayhem Mod'], + ruleset: ['Standard NatDex', 'Terastal Clause', '!Obtainable Moves', '!Team Preview', 'Camomons Mod', 'CFZ Clause', 'Sleep Moves Clause', 'Team Type Preview'], banlist: [ - 'Arceus', 'Chi-Yu', 'Chien-Pao', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dialga-Origin', 'Dragonite', - 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', - 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palafin', 'Palkia', 'Palkia-Origin', 'Raging Bolt', 'Rayquaza', 'Regieleki', - 'Reshiram', 'Shaymin-Sky', 'Solgaleo', 'Terapagos', 'Urshifu-Single-Strike', 'Zacian', 'Zacian-Crowned', 'Zekrom', 'King\'s Rock', 'Razor Fang', 'Fake Out', - 'Last Respects', 'Revival Blessing', + 'Aerodactyl-Mega', 'Alakazam', 'Arceus', 'Beedrill-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Charizard-Mega-Y', 'Chi-Yu', + 'Chien-Pao', 'Comfey', 'Darmanitan', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen', 'Deoxys', 'Deoxys-Attack', 'Dialga', 'Dondozo', 'Enamorus', + 'Eternatus', 'Flutter Mane', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Komala', + 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Mawile-Mega', + 'Medicham-Mega', 'Melmetal', 'Metagross-Mega', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palafin', + 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Regieleki', 'Reshiram', 'Salamence-Mega', 'Sceptile-Mega', 'Serperior', 'Shedinja', 'Sneasler', + 'Solgaleo', 'Spectrier', 'Tapu Koko', 'Ting-Lu', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Xerneas', 'Xurkitree', 'Yveltal', 'Zacian', 'Zacian-Crowned', + 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zoroark', 'Arena Trap', 'Moody', 'Magnet Pull', 'Regenerator > 2', 'Power Construct', 'Shadow Tag', + 'Damp Rock', 'Heat Rock', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Smooth Rock', 'Assist', 'Astral Barrage', 'Baneful Bunker', 'Baton Pass', + 'Belly Drum', 'Bolt Beak', 'Boomburst', 'Burning Bulwark', 'Ceaseless Edge', 'Chatter', 'Clangorous Soul', 'Dire Claw', 'Double Iron Bash', + 'Dragon Energy', 'Eruption', 'Extreme Speed', 'Electrify', 'Electro Shot', 'Final Gambit', 'Fillet Away', 'Fishious Rend', 'Geomancy', 'Heal Order', + 'Jet Punch', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Octolock', 'Population Bomb', 'Power Trip', 'Quiver Dance', 'Rage Fist', 'Revival Blessing', + 'Rising Voltage', 'Salt Cure', 'Shed Tail', 'Shell Smash', 'Shift Gear', 'Stored Power', 'Substitute', 'Surging Strikes', 'Tail Glow', 'Take Heart', + 'Thousand Arrows', 'Transform', 'Triple Arrows', 'V-create', 'Victory Dance', 'Water Spout', 'Wicked Blow', ], + unbanlist: ['Blazing Torque', 'Combat Torque', 'Light of Ruin', 'Magical Torque', 'Noxious Torque', 'Wicked Torque'], }, // Other Metagames @@ -912,6 +916,24 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Razor Fang', 'Baton Pass', 'Draco Meteor', 'Last Respects', 'Overheat', 'Shed Tail', ], }, + { + name: "[Gen 9] Convergence", + desc: `Allows all Pokémon that have identical types to share moves and abilities.`, + mod: 'gen9', + searchShow: false, + ruleset: ['Standard OMs', 'Ability Clause = 1', 'Sleep Moves Clause', 'Convergence Legality', 'Terastal Clause', '!Obtainable Abilities'], + banlist: [ + 'Arceus', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Comfey', 'Darkrai', 'Deoxys-Normal', 'Deoxys-Attack', 'Deoxys-Speed', + 'Dialga', 'Dialga-Origin', 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Groudon', 'Haxorus', 'Ho-oh', 'Inteleon', + 'Iron Bundle', 'Iron Hands', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', 'Lilligant-Hisui', 'Lugia', 'Lunala', + 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin', + 'Porygon-Z', 'Primarina', 'Rayquaza', 'Regieleki', 'Regigigas', 'Reshiram', 'Roaring Moon', 'Shaymin-Sky', 'Solgaleo', 'Slaking', 'Smeargle', 'Sneasler', + 'Spectrier', 'Umbreon', 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Walking Wake', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', + 'Zekrom', 'Arena Trap', 'Comatose', 'Contrary', 'Drizzle', 'Drought', 'Imposter', 'Moody', 'Pure Power', 'Shadow Tag', 'Speed Boost', 'Unburden', + 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', 'Belly Drum', 'Boomburst', 'Extreme Speed', 'Final Gambit', 'Last Respects', 'Population Bomb', + 'Quiver Dance', 'Rage Fist', 'Shed Tail', 'Shell Smash', 'Spore', 'Transform', + ], + }, { name: "[Gen 9] Cross Evolution", desc: `Give a Pokémon a Pokémon name of the next evolution stage as a nickname to inherit stat changes, typing, abilities, and moves from the next stage Pokémon.`, @@ -2395,18 +2417,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, }, }, - { - name: "[Gen 9] Tier Shift", - desc: `Pokémon below OU get their stats, excluding HP, boosted. UU/RUBL get +15, RU/NUBL get +20, NU/PUBL get +25, and PU or lower get +30.`, - mod: 'gen9', - searchShow: false, - ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Terastal Clause', 'Evasion Clause', 'Tier Shift Mod'], - banlist: [ - 'Arceus', 'Calyrex-Shadow', 'Koraidon', 'Kyogre', 'Medicham', 'Miraidon', 'Necrozma-Dusk-Mane', 'Zacian-Crowned', 'Drizzle', 'Moody', 'Arena Trap', 'Shadow Tag', - 'Baton Pass', 'Last Respects', 'Shed Tail', 'Heat Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', - ], - unbanlist: ['Arceus-Bug', 'Arceus-Grass', 'Arceus-Ice'], - }, { name: "[Gen 9] Trademarked", desc: `Sacrifice your Pokémon's ability for a status move that activates on switch-in.`, @@ -2515,6 +2525,20 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } }, }, + { + name: "[Gen 9] VoltTurn Mayhem", + desc: `Every move that targets a foe causes the user to switch out after use.`, + mod: 'gen9', + searchShow: false, + ruleset: ['Standard OMs', 'Sleep Moves Clause', 'VoltTurn Mayhem Mod'], + banlist: [ + 'Arceus', 'Chi-Yu', 'Chien-Pao', 'Calyrex-Ice', 'Calyrex-Shadow', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dialga-Origin', 'Dragonite', + 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', + 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palafin', 'Palkia', 'Palkia-Origin', 'Raging Bolt', 'Rayquaza', 'Regieleki', + 'Reshiram', 'Shaymin-Sky', 'Solgaleo', 'Terapagos', 'Urshifu-Single-Strike', 'Zacian', 'Zacian-Crowned', 'Zekrom', 'King\'s Rock', 'Razor Fang', 'Fake Out', + 'Last Respects', 'Revival Blessing', + ], + }, { name: "[Gen 6] Pure Hackmons", desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`, @@ -2747,7 +2771,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ name: "[Gen 9] National Dex Doubles Ubers", mod: 'gen9', gameType: 'doubles', - // searchShow: false, + searchShow: false, ruleset: ['Standard Doubles', 'NatDex Mod', '!Gravity Sleep Clause'], banlist: ['Shedinja', 'Assist'], }, @@ -2894,7 +2918,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { name: "[Gen 8] National Dex Doubles", mod: 'gen8', - searchShow: false, + // searchShow: false, gameType: 'doubles', ruleset: ['Standard Doubles', 'NatDex Mod', 'Evasion Abilities Clause'], banlist: [ @@ -3755,34 +3779,32 @@ export const Formats: import('../sim/dex-formats').FormatList = [ column: 4, }, { - name: "[Gen 1] Ubers", - mod: 'gen1', + name: "[Gen 2] Ubers", + mod: 'gen2', // searchShow: false, ruleset: ['Standard'], }, { - name: "[Gen 3] Orre Colosseum", - mod: 'gen3colosseum', + name: "[Gen 5] LC", + mod: 'gen5', // searchShow: false, - gameType: 'doubles', - ruleset: [ - 'Obtainable', 'Team Preview', 'Species Clause', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Max Team Size = 6', 'VGC Timer', - 'Nickname Clause', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Exact HP Mod', 'Item Clause = 1', 'Open Team Sheets', + ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'], + banlist: [ + 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', + 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger', ], - banlist: ['Soul Dew', 'Deoxys-Defense', 'Deoxys-Attack', 'Deoxys-Speed', 'Restricted Legendary', 'Mythical'], - unbanlist: ['Latios', 'Latias', 'Wobbuffet', 'Wynaut'], - bestOfDefault: true, - onBegin() { - this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect, you will lose the battle'); - }, }, { - name: "[Gen 6] VGC 2014", - mod: 'gen6xy', + name: "[Gen 7] VGC 2017", + mod: 'gen7sm', gameType: 'doubles', // searchShow: false, bestOfDefault: true, - ruleset: ['Flat Rules', 'Kalos Pokedex', 'Min Source Gen = 6'], + ruleset: [ + 'Flat Rules', 'Old Alola Pokedex', '!! Adjust Level = 50', 'Min Source Gen = 7', + 'VGC Timer', '!! Timer Starting = 900', + ], + banlist: ['Mega', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'], }, // Past Gens OU @@ -4271,18 +4293,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', '!! Timer Starting = 300'], banlist: ['Oranguru + Symbiosis', 'Passimian + Defiant', 'Unown', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry', 'Battle Bond'], }, - { - name: "[Gen 7] VGC 2017", - mod: 'gen7sm', - gameType: 'doubles', - searchShow: false, - bestOfDefault: true, - ruleset: [ - 'Flat Rules', 'Old Alola Pokedex', '!! Adjust Level = 50', 'Min Source Gen = 7', - 'VGC Timer', '!! Timer Starting = 900', - ], - banlist: ['Mega', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'], - }, { name: "[Gen 7] Battle Spot Doubles", mod: 'gen7', @@ -4457,6 +4467,14 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Flat Rules', 'Min Source Gen = 6'], banlist: ['Soul Dew', 'Articuno + Snow Cloak', 'Zapdos + Static', 'Moltres + Flame Body', 'Dragonite + Barrier'], }, + { + name: "[Gen 6] VGC 2014", + mod: 'gen6xy', + gameType: 'doubles', + searchShow: false, + bestOfDefault: true, + ruleset: ['Flat Rules', 'Kalos Pokedex', 'Min Source Gen = 6'], + }, { name: "[Gen 6] Battle Spot Doubles", mod: 'gen6', @@ -4536,16 +4554,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['[Gen 5] NU', 'Sleep Moves Clause'], banlist: ['NU', 'PUBL', 'Damp Rock'], }, - { - name: "[Gen 5] LC", - mod: 'gen5', - searchShow: false, - ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'], - banlist: [ - 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', - 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger', - ], - }, { name: "[Gen 5] Monotype", desc: `All the Pokémon on a team must share a type.`, @@ -4954,6 +4962,22 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: ['Uber', 'Quick Claw', 'Soul Dew', 'Swagger'], unbanlist: ['Wobbuffet', 'Wynaut'], }, + { + name: "[Gen 3] Orre Colosseum", + mod: 'gen3colosseum', + searchShow: false, + gameType: 'doubles', + ruleset: [ + 'Obtainable', 'Team Preview', 'Species Clause', 'Stadium Sleep Clause', 'Freeze Clause Mod', 'Max Team Size = 6', 'VGC Timer', + 'Nickname Clause', 'Endless Battle Clause', 'Cancel Mod', 'Picked Team Size = 4', 'Exact HP Mod', 'Item Clause = 1', 'Open Team Sheets', + ], + banlist: ['Soul Dew', 'Deoxys-Defense', 'Deoxys-Attack', 'Deoxys-Speed', 'Restricted Legendary', 'Mythical'], + unbanlist: ['Latios', 'Latias', 'Wobbuffet', 'Wynaut'], + bestOfDefault: true, + onBegin() { + this.add('rule', 'Self-KO Clause: If your last Pok\u00e9mon faints to a self-KO move or effect, you will lose the battle'); + }, + }, { name: "[Gen 3] Custom Game", mod: 'gen3', @@ -4970,12 +4994,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ debug: true, ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], }, - { - name: "[Gen 2] Ubers", - mod: 'gen2', - searchShow: false, - ruleset: ['Standard'], - }, { name: "[Gen 2] UU", mod: 'gen2', @@ -5048,6 +5066,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [ battle: { trunc: Math.trunc }, ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], }, + { + name: "[Gen 1] Ubers", + mod: 'gen1', + searchShow: false, + ruleset: ['Standard'], + }, { name: "[Gen 1] UU", mod: 'gen1', diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index e0873bec3c..dac86052bf 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -1999,7 +1999,7 @@ "ability": "Unseen Fist", "nature": "Adamant", "evs": {"hp": 160, "atk": 92, "def": 16, "spd": 160, "spe": 80}, - "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-Turn"]], + "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-turn"]], "weight": 20 } ] diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js index b42d9a678b..f2a5737598 100644 --- a/test/random-battles/all-gens.js +++ b/test/random-battles/all-gens.js @@ -465,7 +465,7 @@ describe('[Gen 9] BSS Factory data should be valid (slow)', () => { describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { it(`gen9/1v1-factory-sets.json should contain valid sets`, function () { - this.timeout(0); + // this.timeout(0); const setsJSON = require(`../../dist/data/random-battles/gen9/1v1-factory-sets.json`); const mod = 'gen9'; @@ -473,57 +473,57 @@ describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { const speciesData = setsJSON[speciesName]; for (const set of speciesData.sets) { const species = Dex.species.get(set.species); - assert(species.exists, `invalid species "${set.species}" of ${species}`); - assert.equal(species.name, set.species, `miscapitalized species "${set.species}" of ${species}`); + assert(species.exists, `invalid species "${set.species}" of ${speciesName}`); + assert.equal(species.name, set.species, `miscapitalized species "${set.species}" of ${speciesName}`); - assert(species.id.startsWith(toID(species.baseSpecies)), `non-matching species "${set.species}" of ${species}`); + assert(species.id.startsWith(toID(species.baseSpecies)), `non-matching species "${set.species}" of ${speciesName}`); for (const itemName of [].concat(set.item)) { if (!itemName) continue; const item = Dex.items.get(itemName); - assert(item.exists, `invalid item "${itemName}" of ${species}`); - assert.equal(item.name, itemName, `miscapitalized item "${itemName}" of ${species}`); + assert(item.exists, `invalid item "${itemName}" of ${speciesName}`); + assert.equal(item.name, itemName, `miscapitalized item "${itemName}" of ${speciesName}`); } for (const abilityName of [].concat(set.ability)) { const ability = Dex.abilities.get(abilityName); - assert(ability.exists, `invalid ability "${abilityName}" of ${species}`); - assert.equal(ability.name, abilityName, `miscapitalized ability "${abilityName}" of ${species}`); + assert(ability.exists, `invalid ability "${abilityName}" of ${speciesName}`); + assert.equal(ability.name, abilityName, `miscapitalized ability "${abilityName}" of ${speciesName}`); const allowedAbilities = new Set(Object.values((species.battleOnly && !species.requiredAbility) ? Dex.species.get(species.battleOnly).abilities : species.abilities)); if (species.unreleasedHidden) allowedAbilities.delete(species.abilities.H); - assert(allowedAbilities.has(abilityName), `${species.name} can't have ${abilityName}`); + assert(allowedAbilities.has(abilityName), `${speciesName} can't have ${abilityName}`); } for (const natureName of [].concat(set.nature)) { const nature = Dex.natures.get(natureName); - assert(nature.exists, `invalid nature "${natureName}" of ${species}`); - assert.equal(nature.name, natureName, `miscapitalized nature "${natureName}" of ${species}`); + assert(nature.exists, `invalid nature "${natureName}" of ${speciesName}`); + assert.equal(nature.name, natureName, `miscapitalized nature "${natureName}" of ${speciesName}`); } for (const moveSpec of set.moves) { for (const moveName of [].concat(moveSpec)) { const move = Dex.moves.get(moveName); - assert(move.exists, `invalid move "${moveName}" of ${species}`); - assert.equal(move.name, moveName, `miscapitalized move "${moveName}" ≠ "${move.name}" of ${species}`); - assert(validateLearnset(move, set, '1v1', mod), `illegal move "${moveName}" of ${species}`); + assert(move.exists, `invalid move "${moveName}" of ${speciesName}`); + assert.equal(move.name, moveName, `miscapitalized move "${moveName}" ≠ "${move.name}" of ${speciesName}`); + assert(validateLearnset(move, set, '1v1', mod), `illegal move "${moveName}" of ${speciesName}`); } } // Check that no moves appear more than once in a set - assert.equal(set.moves.flat(1).length, new Set(set.moves.flat(1)).size, `${species} has repeat moves`); + assert.equal(set.moves.flat(1).length, new Set(set.moves.flat(1)).size, `${speciesName} has repeat moves`); - if (species.name === 'Carbink') continue; - assert(!!set.evs, `Set of ${species} has no EVs specified`); + if (speciesName === 'Carbink') continue; + assert(!!set.evs, `Set of ${speciesName} has no EVs specified`); const keys = Object.keys(set.evs); let totalEVs = 0; for (const ev of keys) { - assert(Dex.stats.ids().includes(ev), `Invalid EV key (${ev}) on set of ${species}`); + assert(Dex.stats.ids().includes(ev), `Invalid EV key (${ev}) on set of ${speciesName}`); totalEVs += set.evs[ev]; - assert.equal(set.evs[ev] % 4, 0, `EVs of ${ev} not divisible by 4 on ${species}`); + assert.equal(set.evs[ev] % 4, 0, `EVs of ${ev} not divisible by 4 on ${speciesName}`); } const sortedKeys = Utils.sortBy([...keys], ev => Dex.stats.ids().indexOf(ev)); - assert.deepEqual(keys, sortedKeys, `EVs out of order on set of ${species}, possibly because one of them is for the wrong stat`); - assert(totalEVs <= 510, `more than 510 EVs on set of ${species}`); + assert.deepEqual(keys, sortedKeys, `EVs out of order on set of ${speciesName}, possibly because one of them is for the wrong stat`); + assert(totalEVs <= 510, `more than 510 EVs on set of ${speciesName}`); } let totalWeight = 0; for (const set of speciesData.sets) { From ad9d7add4b9b643b4a2b2162cf643240c9d22151 Mon Sep 17 00:00:00 2001 From: adrivrie Date: Thu, 1 Jan 2026 10:48:23 +0100 Subject: [PATCH 016/139] Random Battles: December 2025 balance patch (#11653) Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- data/random-battles/gen1/data.json | 26 ++++---- data/random-battles/gen3/sets.json | 12 ++-- data/random-battles/gen4/sets.json | 41 ++++++------ data/random-battles/gen5/sets.json | 52 +++++++-------- data/random-battles/gen6/sets.json | 28 ++++---- data/random-battles/gen7/sets.json | 46 +++++++------- data/random-battles/gen8/data.json | 74 +++++++++++----------- data/random-battles/gen9/doubles-sets.json | 28 ++++---- data/random-battles/gen9/sets.json | 10 +-- 9 files changed, 158 insertions(+), 159 deletions(-) diff --git a/data/random-battles/gen1/data.json b/data/random-battles/gen1/data.json index a7c96bbf24..7c3ff071dd 100644 --- a/data/random-battles/gen1/data.json +++ b/data/random-battles/gen1/data.json @@ -1,14 +1,14 @@ { "bulbasaur": { - "level": 89, + "level": 91, "moves": ["bodyslam", "razorleaf", "sleeppowder", "swordsdance"] }, "ivysaur": { - "level": 80, + "level": 82, "moves": ["bodyslam", "razorleaf", "sleeppowder", "swordsdance"] }, "venusaur": { - "level": 74, + "level": 73, "moves": ["bodyslam", "razorleaf", "sleeppowder"], "exclusiveMoves": ["hyperbeam", "swordsdance", "swordsdance"] }, @@ -58,7 +58,7 @@ "exclusiveMoves": ["agility", "agility", "megadrain"] }, "pidgey": { - "level": 93, + "level": 95, "moves": ["agility", "agility", "quickattack", "quickattack", "skyattack"], "essentialMoves": ["doubleedge"], "exclusiveMoves": ["mirrormove", "sandattack", "substitute"], @@ -164,7 +164,7 @@ "exclusiveMoves": ["blizzard", "counter", "hyperbeam", "hyperbeam", "psychic", "sing", "sing"] }, "vulpix": { - "level": 88, + "level": 89, "moves": ["bodyslam", "confuseray", "fireblast"], "exclusiveMoves": ["flamethrower", "flamethrower", "quickattack", "reflect", "substitute", "substitute"] }, @@ -199,7 +199,7 @@ "exclusiveMoves": ["stunspore", "stunspore", "swordsdance"] }, "gloom": { - "level": 82, + "level": 83, "moves": ["doubleedge", "megadrain", "sleeppowder"], "exclusiveMoves": ["stunspore", "stunspore", "swordsdance"] }, @@ -269,7 +269,7 @@ "exclusiveMoves": ["counter", "lowkick", "hyperbeam", "hyperbeam"] }, "growlithe": { - "level": 89, + "level": 91, "moves": ["agility", "bodyslam", "fireblast"], "exclusiveMoves": ["flamethrower", "reflect"] }, @@ -308,12 +308,12 @@ "exclusiveMoves": ["counter", "reflect", "reflect", "seismictoss", "seismictoss"] }, "machop": { - "level": 89, + "level": 92, "moves": ["bodyslam", "earthquake", "submission"], "exclusiveMoves": ["counter", "rockslide", "rockslide"] }, "machoke": { - "level": 81, + "level": 84, "moves": ["bodyslam", "earthquake", "submission"], "exclusiveMoves": ["counter", "rockslide", "rockslide"] }, @@ -369,13 +369,13 @@ "moves": ["agility", "bodyslam", "fireblast", "hyperbeam"] }, "slowpoke": { - "level": 84, + "level": 83, "moves": ["blizzard", "psychic", "surf"], "essentialMoves": ["amnesia", "thunderwave"], "comboMoves": ["amnesia", "rest", "surf", "thunderwave"] }, "slowbro": { - "level": 68, + "level": 69, "moves": ["blizzard", "psychic", "surf"], "essentialMoves": ["amnesia", "thunderwave"], "comboMoves": ["amnesia", "rest", "surf", "thunderwave"] @@ -523,7 +523,7 @@ "moves": ["bodyslam", "earthquake", "rockslide", "substitute"] }, "rhydon": { - "level": 68, + "level": 71, "moves": ["bodyslam", "earthquake", "rockslide", "substitute"] }, "chansey": { @@ -693,7 +693,7 @@ "exclusiveMoves": ["doubleedge", "doubleedge", "doubleedge", "reflect"] }, "dratini": { - "level": 89, + "level": 91, "moves": ["bodyslam", "hyperbeam", "thunderbolt", "thunderbolt"], "essentialMoves": ["blizzard", "thunderwave"] }, diff --git a/data/random-battles/gen3/sets.json b/data/random-battles/gen3/sets.json index f6a57826fe..7dd8706e39 100644 --- a/data/random-battles/gen3/sets.json +++ b/data/random-battles/gen3/sets.json @@ -342,7 +342,7 @@ ] }, "arcanine": { - "level": 79, + "level": 78, "sets": [ { "role": "Bulky Support", @@ -510,7 +510,7 @@ ] }, "dodrio": { - "level": 77, + "level": 78, "sets": [ { "role": "Wallbreaker", @@ -1176,7 +1176,7 @@ ] }, "noctowl": { - "level": 92, + "level": 93, "sets": [ { "role": "Staller", @@ -2613,7 +2613,7 @@ ] }, "cacturne": { - "level": 95, + "level": 96, "sets": [ { "role": "Staller", @@ -2781,7 +2781,7 @@ ] }, "kecleon": { - "level": 91, + "level": 92, "sets": [ { "role": "Wallbreaker", @@ -3024,7 +3024,7 @@ ] }, "latios": { - "level": 67, + "level": 66, "sets": [ { "role": "Bulky Setup", diff --git a/data/random-battles/gen4/sets.json b/data/random-battles/gen4/sets.json index bd8e541b86..672865b259 100644 --- a/data/random-battles/gen4/sets.json +++ b/data/random-battles/gen4/sets.json @@ -137,7 +137,7 @@ ] }, "sandslash": { - "level": 89, + "level": 88, "sets": [ { "role": "Spinner", @@ -173,7 +173,7 @@ ] }, "clefable": { - "level": 84, + "level": 83, "sets": [ { "role": "Bulky Support", @@ -234,7 +234,7 @@ ] }, "parasect": { - "level": 98, + "level": 99, "sets": [ { "role": "Bulky Support", @@ -856,7 +856,7 @@ ] }, "snorlax": { - "level": 77, + "level": 78, "sets": [ { "role": "Bulky Attacker", @@ -877,7 +877,7 @@ ] }, "articuno": { - "level": 81, + "level": 82, "sets": [ { "role": "Staller", @@ -902,7 +902,7 @@ ] }, "moltres": { - "level": 81, + "level": 82, "sets": [ { "role": "Bulky Attacker", @@ -1181,7 +1181,6 @@ "abilities": ["Water Absorb"] }, { - "role": "Bulky Attacker", "movepool": ["earthquake", "recover", "toxic", "waterfall"], "abilities": ["Water Absorb"] @@ -1246,7 +1245,7 @@ ] }, "wobbuffet": { - "level": 86, + "level": 87, "sets": [ { "role": "Bulky Support", @@ -1357,7 +1356,7 @@ ] }, "heracross": { - "level": 80, + "level": 79, "sets": [ { "role": "Wallbreaker", @@ -1641,7 +1640,7 @@ ] }, "hooh": { - "level": 72, + "level": 73, "sets": [ { "role": "Bulky Attacker", @@ -2146,7 +2145,7 @@ ] }, "torkoal": { - "level": 88, + "level": 87, "sets": [ { "role": "Bulky Support", @@ -2365,7 +2364,7 @@ ] }, "kecleon": { - "level": 91, + "level": 92, "sets": [ { "role": "Bulky Support", @@ -2664,7 +2663,7 @@ ] }, "jirachi": { - "level": 75, + "level": 74, "sets": [ { "role": "Bulky Support", @@ -2695,7 +2694,7 @@ ] }, "deoxysattack": { - "level": 72, + "level": 71, "sets": [ { "role": "Wallbreaker", @@ -2720,7 +2719,7 @@ ] }, "deoxysspeed": { - "level": 79, + "level": 80, "sets": [ { "role": "Fast Support", @@ -2940,7 +2939,7 @@ ] }, "floatzel": { - "level": 84, + "level": 83, "sets": [ { "role": "Fast Attacker", @@ -2956,7 +2955,7 @@ ] }, "cherrim": { - "level": 96, + "level": 95, "sets": [ { "role": "Staller", @@ -3137,7 +3136,7 @@ ] }, "hippowdon": { - "level": 80, + "level": 79, "sets": [ { "role": "Bulky Support", @@ -3506,7 +3505,7 @@ ] }, "rotomfan": { - "level": 79, + "level": 78, "sets": [ { "role": "Bulky Attacker", @@ -3626,7 +3625,7 @@ ] }, "regigigas": { - "level": 82, + "level": 83, "sets": [ { "role": "Staller", @@ -3696,7 +3695,7 @@ ] }, "darkrai": { - "level": 69, + "level": 68, "sets": [ { "role": "Setup Sweeper", diff --git a/data/random-battles/gen5/sets.json b/data/random-battles/gen5/sets.json index 024077c526..23a754ef97 100644 --- a/data/random-battles/gen5/sets.json +++ b/data/random-battles/gen5/sets.json @@ -1,6 +1,6 @@ { "venusaur": { - "level": 84, + "level": 83, "sets": [ { "role": "Staller", @@ -522,7 +522,7 @@ ] }, "cloyster": { - "level": 78, + "level": 79, "sets": [ { "role": "Setup Sweeper", @@ -651,7 +651,7 @@ ] }, "rhydon": { - "level": 83, + "level": 82, "sets": [ { "role": "Bulky Attacker", @@ -920,7 +920,7 @@ ] }, "articuno": { - "level": 84, + "level": 83, "sets": [ { "role": "Staller", @@ -1196,7 +1196,7 @@ ] }, "jumpluff": { - "level": 82, + "level": 81, "sets": [ { "role": "Fast Support", @@ -1317,7 +1317,7 @@ ] }, "forretress": { - "level": 78, + "level": 79, "sets": [ { "role": "Bulky Support", @@ -1444,7 +1444,7 @@ ] }, "ursaring": { - "level": 85, + "level": 84, "sets": [ { "role": "Wallbreaker", @@ -1479,7 +1479,7 @@ ] }, "octillery": { - "level": 91, + "level": 92, "sets": [ { "role": "Bulky Attacker", @@ -1717,7 +1717,7 @@ ] }, "celebi": { - "level": 81, + "level": 80, "sets": [ { "role": "Fast Attacker", @@ -2193,7 +2193,7 @@ ] }, "grumpig": { - "level": 92, + "level": 91, "sets": [ { "role": "Bulky Attacker", @@ -2394,7 +2394,7 @@ ] }, "castform": { - "level": 97, + "level": 98, "sets": [ { "role": "Bulky Attacker", @@ -2404,7 +2404,7 @@ ] }, "kecleon": { - "level": 94, + "level": 95, "sets": [ { "role": "Bulky Support", @@ -2548,7 +2548,7 @@ ] }, "salamence": { - "level": 75, + "level": 74, "sets": [ { "role": "Setup Sweeper", @@ -2708,7 +2708,7 @@ ] }, "jirachi": { - "level": 75, + "level": 74, "sets": [ { "role": "Bulky Support", @@ -2783,7 +2783,7 @@ ] }, "infernape": { - "level": 79, + "level": 78, "sets": [ { "role": "Wallbreaker", @@ -2854,7 +2854,7 @@ ] }, "luxray": { - "level": 89, + "level": 88, "sets": [ { "role": "Wallbreaker", @@ -2940,7 +2940,7 @@ ] }, "wormadamtrash": { - "level": 88, + "level": 87, "sets": [ { "role": "Staller", @@ -3514,7 +3514,7 @@ ] }, "rotomwash": { - "level": 79, + "level": 80, "sets": [ { "role": "Bulky Attacker", @@ -3564,7 +3564,7 @@ ] }, "mesprit": { - "level": 82, + "level": 83, "sets": [ { "role": "Fast Attacker", @@ -3663,7 +3663,7 @@ ] }, "giratinaorigin": { - "level": 73, + "level": 72, "sets": [ { "role": "Fast Attacker", @@ -3977,7 +3977,7 @@ ] }, "serperior": { - "level": 85, + "level": 86, "sets": [ { "role": "Fast Attacker", @@ -4423,7 +4423,7 @@ ] }, "garbodor": { - "level": 89, + "level": 90, "sets": [ { "role": "Bulky Attacker", @@ -4621,7 +4621,7 @@ ] }, "beheeyem": { - "level": 90, + "level": 89, "sets": [ { "role": "Wallbreaker", @@ -4631,7 +4631,7 @@ ] }, "chandelure": { - "level": 80, + "level": 79, "sets": [ { "role": "Fast Attacker", @@ -4935,7 +4935,7 @@ ] }, "zekrom": { - "level": 75, + "level": 74, "sets": [ { "role": "Bulky Attacker", @@ -4950,7 +4950,7 @@ ] }, "landorus": { - "level": 75, + "level": 74, "sets": [ { "role": "Wallbreaker", diff --git a/data/random-battles/gen6/sets.json b/data/random-battles/gen6/sets.json index fc1997b862..479d44bed4 100644 --- a/data/random-battles/gen6/sets.json +++ b/data/random-battles/gen6/sets.json @@ -15,7 +15,7 @@ ] }, "venusaurmega": { - "level": 78, + "level": 77, "sets": [ { "role": "Bulky Attacker", @@ -105,7 +105,7 @@ ] }, "beedrillmega": { - "level": 78, + "level": 77, "sets": [ { "role": "Fast Attacker", @@ -828,7 +828,7 @@ ] }, "pinsir": { - "level": 84, + "level": 85, "sets": [ { "role": "Fast Attacker", @@ -865,7 +865,7 @@ ] }, "gyarados": { - "level": 77, + "level": 78, "sets": [ { "role": "Setup Sweeper", @@ -1182,7 +1182,7 @@ ] }, "crobat": { - "level": 81, + "level": 80, "sets": [ { "role": "Bulky Attacker", @@ -1394,7 +1394,7 @@ ] }, "wobbuffet": { - "level": 92, + "level": 93, "sets": [ { "role": "Bulky Support", @@ -1506,7 +1506,7 @@ ] }, "scizor": { - "level": 79, + "level": 78, "sets": [ { "role": "Setup Sweeper", @@ -1667,7 +1667,7 @@ ] }, "houndoom": { - "level": 85, + "level": 84, "sets": [ { "role": "Fast Attacker", @@ -1854,7 +1854,7 @@ ] }, "lugia": { - "level": 72, + "level": 71, "sets": [ { "role": "Staller", @@ -4728,7 +4728,7 @@ ] }, "scolipede": { - "level": 80, + "level": 79, "sets": [ { "role": "Fast Support", @@ -4783,7 +4783,7 @@ ] }, "krookodile": { - "level": 79, + "level": 78, "sets": [ { "role": "Fast Attacker", @@ -5196,7 +5196,7 @@ ] }, "druddigon": { - "level": 85, + "level": 86, "sets": [ { "role": "Wallbreaker", @@ -5695,7 +5695,7 @@ ] }, "pangoro": { - "level": 85, + "level": 84, "sets": [ { "role": "Wallbreaker", @@ -6011,7 +6011,7 @@ ] }, "gourgeistsuper": { - "level": 88, + "level": 87, "sets": [ { "role": "Bulky Support", diff --git a/data/random-battles/gen7/sets.json b/data/random-battles/gen7/sets.json index bae946f3c9..df1a2c853e 100644 --- a/data/random-battles/gen7/sets.json +++ b/data/random-battles/gen7/sets.json @@ -888,7 +888,7 @@ ] }, "rhydon": { - "level": 86, + "level": 85, "sets": [ { "role": "Bulky Attacker", @@ -939,7 +939,7 @@ ] }, "seaking": { - "level": 94, + "level": 95, "sets": [ { "role": "Fast Attacker", @@ -1443,7 +1443,7 @@ ] }, "ampharosmega": { - "level": 84, + "level": 85, "sets": [ { "role": "Bulky Attacker", @@ -1555,7 +1555,7 @@ ] }, "espeon": { - "level": 84, + "level": 83, "sets": [ { "role": "Fast Attacker", @@ -1692,7 +1692,7 @@ ] }, "steelixmega": { - "level": 81, + "level": 80, "sets": [ { "role": "Bulky Support", @@ -1869,7 +1869,7 @@ ] }, "skarmory": { - "level": 76, + "level": 75, "sets": [ { "role": "Bulky Support", @@ -1894,7 +1894,7 @@ ] }, "houndoommega": { - "level": 81, + "level": 80, "sets": [ { "role": "Setup Sweeper", @@ -2460,7 +2460,7 @@ ] }, "sableyemega": { - "level": 87, + "level": 86, "sets": [ { "role": "Bulky Setup", @@ -2568,7 +2568,7 @@ ] }, "minun": { - "level": 94, + "level": 95, "sets": [ { "role": "Bulky Setup", @@ -2737,7 +2737,7 @@ ] }, "cacturne": { - "level": 92, + "level": 93, "sets": [ { "role": "Wallbreaker", @@ -3053,7 +3053,7 @@ ] }, "gorebyss": { - "level": 84, + "level": 85, "sets": [ { "role": "Setup Sweeper", @@ -3379,7 +3379,7 @@ ] }, "deoxysattack": { - "level": 73, + "level": 72, "sets": [ { "role": "Wallbreaker", @@ -3760,7 +3760,7 @@ ] }, "honchkrow": { - "level": 84, + "level": 83, "sets": [ { "role": "Wallbreaker", @@ -4985,7 +4985,7 @@ ] }, "swoobat": { - "level": 87, + "level": 88, "sets": [ { "role": "Bulky Attacker", @@ -5566,7 +5566,7 @@ ] }, "stunfisk": { - "level": 89, + "level": 88, "sets": [ { "role": "Bulky Attacker", @@ -5817,7 +5817,7 @@ ] }, "thundurus": { - "level": 82, + "level": 81, "sets": [ { "role": "Setup Sweeper", @@ -5948,7 +5948,7 @@ ] }, "kyuremwhite": { - "level": 76, + "level": 75, "sets": [ { "role": "Fast Attacker", @@ -6066,7 +6066,7 @@ ] }, "diggersby": { - "level": 83, + "level": 82, "sets": [ { "role": "Setup Sweeper", @@ -6451,7 +6451,7 @@ ] }, "gourgeistsmall": { - "level": 90, + "level": 91, "sets": [ { "role": "Bulky Support", @@ -6461,7 +6461,7 @@ ] }, "gourgeistlarge": { - "level": 90, + "level": 91, "sets": [ { "role": "Bulky Support", @@ -6959,7 +6959,7 @@ ] }, "comfey": { - "level": 88, + "level": 87, "sets": [ { "role": "Bulky Support", @@ -7474,7 +7474,7 @@ ] }, "nihilego": { - "level": 80, + "level": 79, "sets": [ { "role": "Fast Support", @@ -7563,7 +7563,7 @@ ] }, "guzzlord": { - "level": 87, + "level": 86, "sets": [ { "role": "AV Pivot", diff --git a/data/random-battles/gen8/data.json b/data/random-battles/gen8/data.json index 102a5bd7bf..d0f0d2514e 100644 --- a/data/random-battles/gen8/data.json +++ b/data/random-battles/gen8/data.json @@ -118,7 +118,7 @@ "doublesMoves": ["dazzlinggleam", "healpulse", "helpinghand", "hypervoice", "thunderwave"] }, "vileplume": { - "level": 84, + "level": 83, "moves": ["aromatherapy", "gigadrain", "sleeppowder", "sludgebomb", "strengthsap"], "doublesLevel": 88, "doublesMoves": ["aromatherapy", "energyball", "pollenpuff", "sleeppowder", "sludgebomb", "strengthsap"] @@ -178,7 +178,7 @@ "doublesMoves": ["bulletpunch", "closecombat", "facade", "knockoff", "protect"] }, "tentacruel": { - "level": 82, + "level": 81, "moves": ["haze", "knockoff", "rapidspin", "scald", "sludgebomb", "toxicspikes"], "doublesLevel": 87, "doublesMoves": ["acidspray", "icywind", "knockoff", "muddywater", "rapidspin", "sludgebomb"] @@ -190,7 +190,7 @@ "doublesMoves": ["flareblitz", "highhorsepower", "morningsun", "protect", "swordsdance", "wildcharge"] }, "rapidashgalar": { - "level": 83, + "level": 84, "moves": ["highhorsepower", "morningsun", "playrough", "swordsdance", "zenheadbutt"], "doublesLevel": 88, "doublesMoves": ["highhorsepower", "playrough", "protect", "swordsdance", "zenheadbutt"] @@ -323,7 +323,7 @@ "moves": ["focusblast", "freezedry", "nastyplot", "psychic", "rapidspin"] }, "scyther": { - "level": 82, + "level": 81, "moves": ["brickbreak", "dualwingbeat", "knockoff", "roost", "swordsdance", "uturn"], "doublesLevel": 84, "doublesMoves": ["brickbreak", "bugbite", "dualwingbeat", "uturn"] @@ -424,7 +424,7 @@ "noDynamaxMoves": ["calmmind", "freezingglare", "hurricane", "recover"] }, "zapdos": { - "level": 78, + "level": 79, "moves": ["defog", "discharge", "heatwave", "hurricane", "roost", "uturn"], "doublesLevel": 79, "doublesMoves": ["heatwave", "hurricane", "roost", "tailwind", "thunderbolt", "voltswitch"] @@ -457,8 +457,8 @@ "noDynamaxMoves": ["dragondance", "dualwingbeat", "earthquake", "outrage", "roost"] }, "mewtwo": { - "level": 70, - "moves": ["aurasphere", "fireblast", "nastyplot", "psystrike", "recover"], + "level": 71, + "moves": ["fireblast", "nastyplot", "psystrike", "recover", "shadowball"], "doublesLevel": 74, "doublesMoves": ["aurasphere", "icebeam", "nastyplot", "psystrike", "recover"] }, @@ -495,7 +495,7 @@ "doublesMoves": ["airslash", "heatwave", "lightscreen", "psychic", "reflect", "roost", "tailwind"] }, "bellossom": { - "level": 82, + "level": 83, "moves": ["gigadrain", "moonblast", "quiverdance", "sleeppowder", "strengthsap"], "doublesLevel": 86, "doublesMoves": ["energyball", "moonblast", "quiverdance", "sleeppowder", "strengthsap"] @@ -507,7 +507,7 @@ "doublesMoves": ["aquajet", "knockoff", "liquidation", "playrough", "protect"] }, "sudowoodo": { - "level": 89, + "level": 90, "moves": ["earthquake", "headsmash", "stealthrock", "suckerpunch", "woodhammer"], "doublesLevel": 90, "doublesMoves": ["bodypress", "firepunch", "headsmash", "protect", "suckerpunch", "woodhammer"] @@ -569,7 +569,7 @@ "noDynamaxMoves": ["curse", "earthquake", "headsmash", "heavyslam", "stealthrock", "toxic"] }, "qwilfish": { - "level": 87, + "level": 86, "moves": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], "doublesLevel": 88, "doublesMoves": ["liquidation", "poisonjab", "protect", "taunt", "thunderwave", "toxicspikes"] @@ -641,7 +641,7 @@ "doublesMoves": ["icebeam", "recover", "thunderbolt", "toxic", "triattack", "trickroom"] }, "hitmontop": { - "level": 86, + "level": 87, "moves": ["closecombat", "earthquake", "rapidspin", "suckerpunch", "toxic", "tripleaxel"], "doublesLevel": 88, "doublesMoves": ["closecombat", "coaching", "fakeout", "helpinghand", "rapidspin", "suckerpunch", "tripleaxel"] @@ -708,7 +708,7 @@ "doublesMoves": ["breakingswipe", "energyball", "focusblast", "leafstorm"] }, "blaziken": { - "level": 74, + "level": 75, "moves": ["closecombat", "flareblitz", "knockoff", "stoneedge", "swordsdance"], "doublesLevel": 78, "doublesMoves": ["closecombat", "flareblitz", "knockoff", "protect", "swordsdance"] @@ -800,7 +800,7 @@ "doublesMoves": ["closecombat", "crunch", "flipturn", "icebeam", "protect", "waterfall"] }, "wailord": { - "level": 91, + "level": 92, "moves": ["hydropump", "hypervoice", "icebeam", "waterspout"], "doublesLevel": 88, "doublesMoves": ["hydropump", "heavyslam", "icebeam", "waterspout"] @@ -1065,7 +1065,7 @@ "doublesMoves": ["auroraveil", "blizzard", "iceshard", "protect", "woodhammer"] }, "weavile": { - "level": 79, + "level": 78, "moves": ["iceshard", "knockoff", "lowkick", "swordsdance", "tripleaxel"], "doublesLevel": 84, "doublesMoves": ["fakeout", "iceshard", "knockoff", "lowkick", "tripleaxel"] @@ -1119,7 +1119,7 @@ "doublesMoves": ["doubleedge", "knockoff", "leafblade", "protect", "swordsdance"] }, "glaceon": { - "level": 91, + "level": 90, "moves": ["freezedry", "protect", "toxic", "wish"], "doublesLevel": 88, "doublesMoves": ["blizzard", "freezedry", "helpinghand", "protect", "shadowball", "wish"] @@ -1186,7 +1186,7 @@ "doublesMoves": ["airslash", "nastyplot", "protect", "thunderbolt"] }, "rotommow": { - "level": 84, + "level": 85, "moves": ["leafstorm", "nastyplot", "thunderbolt", "trick", "voltswitch", "willowisp"], "doublesLevel": 88, "doublesMoves": ["electroweb", "leafstorm", "protect", "thunderbolt", "voltswitch", "willowisp"] @@ -1259,7 +1259,7 @@ "doublesMoves": ["boltstrike", "glaciate", "protect", "uturn", "vcreate", "zenheadbutt"] }, "stoutland": { - "level": 87, + "level": 88, "moves": ["crunch", "facade", "playrough", "superpower", "wildcharge"], "doublesLevel": 90, "doublesMoves": ["facade", "helpinghand", "superpower", "thunderwave"] @@ -1366,7 +1366,7 @@ "doublesMoves": ["closecombat", "highhorsepower", "knockoff", "protect", "rockslide", "taunt"] }, "darmanitan": { - "level": 79, + "level": 78, "moves": ["earthquake", "flareblitz", "rockslide", "superpower", "uturn"], "doublesLevel": 82, "doublesMoves": ["earthquake", "flareblitz", "protect", "rockslide", "superpower", "uturn"] @@ -1502,7 +1502,7 @@ "doublesMoves": ["geargrind", "protect", "shiftgear", "wildcharge"] }, "beheeyem": { - "level": 89, + "level": 90, "moves": ["darkpulse", "psychic", "thunderbolt", "trick", "trickroom"], "doublesLevel": 88, "doublesMoves": ["protect", "psychic", "shadowball", "thunderbolt", "trickroom"] @@ -1532,7 +1532,7 @@ "doublesMoves": ["freezedry", "haze", "icebeam", "icywind", "rapidspin", "recover", "toxic"] }, "accelgor": { - "level": 91, + "level": 90, "moves": ["bugbuzz", "energyball", "focusblast", "sludgebomb", "spikes", "toxicspikes", "yawn"], "doublesLevel": 88, "doublesMoves": ["acidspray", "bugbuzz", "encore", "energyball", "focusblast"], @@ -1599,7 +1599,7 @@ "doublesMoves": ["firelash", "gigadrain", "incinerate", "protect", "suckerpunch", "superpower"] }, "durant": { - "level": 78, + "level": 77, "moves": ["firstimpression", "honeclaws", "ironhead", "rockslide", "superpower"], "doublesLevel": 82, "doublesMoves": ["firstimpression", "ironhead", "protect", "stompingtantrum", "superpower", "xscissor"] @@ -1636,7 +1636,7 @@ "noDynamaxMoves": ["closecombat", "leafblade", "stoneedge", "swordsdance"] }, "tornadus": { - "level": 81, + "level": 80, "moves": ["defog", "grassknot", "heatwave", "hurricane", "nastyplot"], "doublesLevel": 80, "doublesMoves": ["heatwave", "hurricane", "nastyplot", "superpower", "tailwind", "taunt"] @@ -1725,7 +1725,7 @@ "doublesMoves": ["bodyslam", "highhorsepower", "knockoff", "quickattack", "swordsdance", "uturn"] }, "talonflame": { - "level": 81, + "level": 80, "moves": ["bravebird", "defog", "flareblitz", "roost", "swordsdance", "uturn"], "doublesLevel": 86, "doublesMoves": ["bravebird", "defog", "incinerate", "overheat", "tailwind", "uturn", "willowisp"] @@ -1771,7 +1771,7 @@ "doublesMoves": ["healpulse", "moonblast", "protect", "trickroom", "wish"] }, "slurpuff": { - "level": 79, + "level": 80, "moves": ["bellydrum", "drainpunch", "facade", "playrough"], "doublesLevel": 86, "doublesMoves": ["faketears", "flamethrower", "helpinghand", "playrough", "stickyweb"] @@ -1903,7 +1903,7 @@ "doublesMoves": ["dazzlinggleam", "focusblast", "geomancy", "moonblast", "thunderbolt"] }, "yveltal": { - "level": 68, + "level": 67, "moves": ["defog", "heatwave", "knockoff", "oblivionwing", "roost", "suckerpunch", "taunt"], "doublesLevel": 71, "doublesMoves": ["darkpulse", "heatwave", "knockoff", "oblivionwing", "roost", "suckerpunch", "tailwind"] @@ -2214,13 +2214,13 @@ "doublesMoves": ["anchorshot", "knockoff", "powerwhip", "protect"] }, "kommoo": { - "level": 81, + "level": 80, "moves": ["clangingscales", "clangoroussoul", "closecombat", "poisonjab", "stealthrock"], "doublesLevel": 80, "doublesMoves": ["bodypress", "dracometeor", "irondefense", "protect"] }, "tapukoko": { - "level": 76, + "level": 77, "moves": ["calmmind", "dazzlinggleam", "grassknot", "substitute", "thunderbolt", "voltswitch"], "doublesLevel": 80, "doublesMoves": ["bravebird", "dazzlinggleam", "grassknot", "taunt", "thunderbolt", "uturn"] @@ -2269,13 +2269,13 @@ "noDynamaxMoves": ["bulkup", "closecombat", "darkestlariat", "leechlife", "poisonjab", "roost", "stoneedge"] }, "pheromosa": { - "level": 74, + "level": 73, "moves": ["closecombat", "icebeam", "poisonjab", "throatchop", "uturn"], "doublesLevel": 78, "doublesMoves": ["closecombat", "icebeam", "poisonjab", "protect", "throatchop", "uturn"] }, "xurkitree": { - "level": 76, + "level": 77, "moves": ["dazzlinggleam", "energyball", "hypnosis", "thunderbolt", "voltswitch"], "doublesLevel": 79, "doublesMoves": ["dazzlinggleam", "energyball", "thunderbolt", "voltswitch"] @@ -2288,7 +2288,7 @@ "noDynamaxMoves": ["airslash", "earthquake", "fireblast", "heavyslam", "leechseed", "protect"] }, "kartana": { - "level": 72, + "level": 73, "moves": ["knockoff", "leafblade", "sacredsword", "smartstrike", "swordsdance"], "doublesLevel": 78, "doublesMoves": ["knockoff", "leafblade", "sacredsword", "smartstrike", "swordsdance"] @@ -2456,17 +2456,17 @@ "doublesMoves": ["acrobatics", "dragondance", "dragonrush", "gravapple", "protect"] }, "appletun": { - "level": 91, + "level": 92, "moves": ["appleacid", "dragonpulse", "leechseed", "recover"], "doublesLevel": 90, "doublesMoves": ["appleacid", "dragonpulse", "leechseed", "protect", "recover"] }, "appletungmax": { - "level": 91, + "level": 92, "moves": ["appleacid", "dracometeor", "leechseed", "recover"] }, "sandaconda": { - "level": 83, + "level": 84, "moves": ["coil", "earthquake", "glare", "rest", "stealthrock", "stoneedge"] }, "sandacondagmax": { @@ -2565,7 +2565,7 @@ "noDynamaxMoves": ["bravebird", "closecombat", "firstimpression", "knockoff", "poisonjab", "swordsdance"] }, "mrrime": { - "level": 87, + "level": 88, "moves": ["focusblast", "freezedry", "psychic", "rapidspin", "slackoff", "trick"], "doublesLevel": 88, "doublesMoves": ["fakeout", "focusblast", "freezedry", "icywind", "protect", "psychic", "rapidspin"] @@ -2613,7 +2613,7 @@ "doublesMoves": ["bellydrum", "iciclecrash", "liquidation", "protect"] }, "indeedee": { - "level": 85, + "level": 84, "moves": ["calmmind", "expandingforce", "hypervoice", "mysticalfire", "trick"], "doublesLevel": 80, "doublesMoves": ["encore", "expandingforce", "hypervoice", "mysticalfire", "protect", "trick"] @@ -2625,7 +2625,7 @@ "doublesMoves": ["expandingforce", "followme", "healpulse", "helpinghand", "protect"] }, "morpeko": { - "level": 86, + "level": 85, "moves": ["aurawheel", "foulplay", "partingshot", "protect", "psychicfangs", "rapidspin"], "doublesLevel": 88, "doublesMoves": ["aurawheel", "fakeout", "partingshot", "protect", "rapidspin", "superfang"] @@ -2690,7 +2690,7 @@ "doublesMoves": ["behemothblade", "closecombat", "playrough", "protect", "psychicfangs", "swordsdance"] }, "zamazenta": { - "level": 70, + "level": 69, "moves": ["closecombat", "crunch", "psychicfangs", "wildcharge"], "doublesLevel": 74, "doublesMoves": ["closecombat", "crunch", "playrough", "protect", "psychicfangs"] diff --git a/data/random-battles/gen9/doubles-sets.json b/data/random-battles/gen9/doubles-sets.json index ba098fa4ab..4e41b7b691 100644 --- a/data/random-battles/gen9/doubles-sets.json +++ b/data/random-battles/gen9/doubles-sets.json @@ -408,7 +408,7 @@ ] }, "slowbrogalar": { - "level": 86, + "level": 87, "sets": [ { "role": "Doubles Wallbreaker", @@ -586,7 +586,7 @@ ] }, "weezing": { - "level": 90, + "level": 91, "sets": [ { "role": "Doubles Support", @@ -1096,7 +1096,7 @@ ] }, "azumarill": { - "level": 82, + "level": 83, "sets": [ { "role": "Doubles Wallbreaker", @@ -1414,7 +1414,7 @@ ] }, "donphan": { - "level": 86, + "level": 87, "sets": [ { "role": "Doubles Support", @@ -1847,7 +1847,7 @@ "role": "Doubles Support", "movepool": ["Encore", "Struggle Bug", "Tailwind", "Thunder Wave"], "abilities": ["Prankster"], - "teraTypes": ["Steel", "Water"] + "teraTypes": ["Steel", "Water"] } ] }, @@ -2030,7 +2030,7 @@ ] }, "chimecho": { - "level": 95, + "level": 94, "sets": [ { "role": "Doubles Support", @@ -2091,7 +2091,7 @@ ] }, "regirock": { - "level": 83, + "level": 82, "sets": [ { "role": "Doubles Bulky Setup", @@ -2901,7 +2901,7 @@ ] }, "uxie": { - "level": 86, + "level": 85, "sets": [ { "role": "Doubles Support", @@ -4366,7 +4366,7 @@ ] }, "goodrahisui": { - "level": 82, + "level": 81, "sets": [ { "role": "Doubles Bulky Attacker", @@ -4405,7 +4405,7 @@ ] }, "avalugg": { - "level": 91, + "level": 92, "sets": [ { "role": "Bulky Protect", @@ -5410,7 +5410,7 @@ ] }, "indeedeef": { - "level": 90, + "level": 91, "sets": [ { "role": "Doubles Support", @@ -5673,7 +5673,7 @@ ] }, "calyrexshadow": { - "level": 62, + "level": 63, "sets": [ { "role": "Offensive Protect", @@ -5712,7 +5712,7 @@ ] }, "ursaluna": { - "level": 78, + "level": 77, "sets": [ { "role": "Doubles Wallbreaker", @@ -6745,7 +6745,7 @@ ] }, "walkingwake": { - "level": 77, + "level": 78, "sets": [ { "role": "Doubles Wallbreaker", diff --git a/data/random-battles/gen9/sets.json b/data/random-battles/gen9/sets.json index 03b9266bba..bf8b2e3984 100644 --- a/data/random-battles/gen9/sets.json +++ b/data/random-battles/gen9/sets.json @@ -3226,7 +3226,7 @@ ] }, "probopass": { - "level": 92, + "level": 91, "sets": [ { "role": "Bulky Setup", @@ -3754,7 +3754,7 @@ ] }, "arceusgrass": { - "level": 72, + "level": 73, "sets": [ { "role": "Setup Sweeper", @@ -3794,7 +3794,7 @@ ] }, "arceusice": { - "level": 72, + "level": 73, "sets": [ { "role": "Bulky Setup", @@ -7286,7 +7286,7 @@ ] }, "ironjugulis": { - "level": 78, + "level": 77, "sets": [ { "role": "Wallbreaker", @@ -7320,7 +7320,7 @@ ] }, "ironbundle": { - "level": 77, + "level": 78, "sets": [ { "role": "Fast Attacker", From 48727c319d63b1c7278c11a76e48277ab35c5db5 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 02:52:08 -0700 Subject: [PATCH 017/139] Fix typo! --- test/random-battles/all-gens.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js index f2a5737598..42ab456559 100644 --- a/test/random-battles/all-gens.js +++ b/test/random-battles/all-gens.js @@ -465,7 +465,7 @@ describe('[Gen 9] BSS Factory data should be valid (slow)', () => { describe('[Gen 9] 1v1 Factory data should be valid (slow)', () => { it(`gen9/1v1-factory-sets.json should contain valid sets`, function () { - // this.timeout(0); + this.timeout(0); const setsJSON = require(`../../dist/data/random-battles/gen9/1v1-factory-sets.json`); const mod = 'gen9'; From 50621016225f5de586c321b6d4a87c067e35630a Mon Sep 17 00:00:00 2001 From: Atlas <109841009+EyeOfAtlas@users.noreply.github.com> Date: Fri, 2 Jan 2026 02:11:15 +1000 Subject: [PATCH 018/139] Fix 1v1 factory Volcanion typo (#11661) Co-authored-by: KingNeodude <109841009+KingNeodude@users.noreply.github.com> --- data/random-battles/gen9/1v1-factory-sets.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index dac86052bf..ccc9e65beb 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -2068,7 +2068,7 @@ "ability": "Water Absorb", "nature": "Modest", "evs": {"hp": 244, "spa": 184, "spd": 80}, - "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Wave"], ["Earth Power", "Flame Charge", "Focus Bla"]], + "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Wave"], ["Earth Power", "Flame Charge", "Focus Blast"]], "weight": 25 }, { @@ -2220,4 +2220,4 @@ } ] } -} \ No newline at end of file +} From b7e25e9a09c7178a09b5502bba0e7f3fe8ca14fc Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 10:04:07 -0700 Subject: [PATCH 019/139] 1v1 Factory: Fix natures --- data/random-battles/gen9/teams.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index 2ae569c3cd..ceb9b1d576 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -3100,7 +3100,7 @@ export class RandomTeams { return { name: species.baseSpecies, species: (typeof species.battleOnly === 'string') ? species.battleOnly : species.name, - gender: setData.set.gender || species.gender || this.sample(['M', 'F']), // F for Cute Charm Enamorus + gender: setData.set.gender || species.gender || this.sample(['M', 'F']), item, ability: this.sampleIfArray(setData.set.ability), shiny: setData.set.shiny || this.randomChance(1, 1024), @@ -3108,7 +3108,7 @@ export class RandomTeams { happiness: 255, evs: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0, ...setData.set.evs }, ivs: { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31, ...setData.set.ivs }, - nature: this.sample(setData.set.nature) || "Serious", + nature: this.sampleIfArray(setData.set.nature) || "Serious", moves, }; } From b7d8dee1139a31401130e233ea581a6693d25ffe Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Thu, 1 Jan 2026 12:05:51 -0500 Subject: [PATCH 020/139] Add Bio Mech Mons (#11656) * reattempt * Create scripts.ts * Update scripts.ts * boiler plate idk * more work * now we doin it * more stuff to push * yea sure * tomorrow me's problem * refactor setAbility * fix line length * Fix this edgecase * ok general bs done woooo * lint * Import code dhelmise worked on * AAAA I FORGOT ABOUT THIS * Add useItem and eatItem * Ensure items dont get procced again * add more stuff to mod later * fix issue from merging conflicts * lint * allow ability-less pokemon * fix crash * fix crash with knock off * refactor for knock off crash * fix issue with required items in validation * account for this too * add choiceLock code from SiC * add transformInto * remove old comments * start work on edgecases mostly just the stuff from SP/SiC * a * dhelmise pls dont steal my kneecaps * bug fixes pt. 1 * more bugfix * AAAAAAAAAAAAAAAAA * one day ill be done * fix gastro acid * i hate it here * >_> * a * Update config/formats.ts * Update data/mods/biomechmons/items.ts * Update data/mods/biomechmons/items.ts * Update data/mods/biomechmons/scripts.ts * bugfix 1 * fix move dupe bug * move this to the omotm section, add banlist * woops * Update formats.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 187 ++++++++++ data/mods/biomechmons/abilities.ts | 131 +++++++ data/mods/biomechmons/conditions.ts | 44 +++ data/mods/biomechmons/items.ts | 41 +++ data/mods/biomechmons/moves.ts | 401 +++++++++++++++++++++ data/mods/biomechmons/scripts.ts | 532 ++++++++++++++++++++++++++++ 6 files changed, 1336 insertions(+) create mode 100644 data/mods/biomechmons/abilities.ts create mode 100644 data/mods/biomechmons/conditions.ts create mode 100644 data/mods/biomechmons/items.ts create mode 100644 data/mods/biomechmons/moves.ts create mode 100644 data/mods/biomechmons/scripts.ts diff --git a/config/formats.ts b/config/formats.ts index d36c2346ff..ca438f838f 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -545,6 +545,193 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], unbanlist: ['Arceus-Bug', 'Arceus-Grass', 'Arceus-Ice'], }, + { + name: "[Gen 9] Bio Mech Mons", + desc: `Items, abilites, and moves a Pokémon has access to can be put in any item/move/ability slot.`, + mod: 'biomechmons', + // searchShow: false, + ruleset: ['Standard OMs', 'Sleep Moves Clause'], + banlist: [ + 'Annihilape​', 'Arceus​', 'Archaludon​', 'Baxcalibur​', 'Calyrex-Ice​', 'Calyrex-Shadow​', 'Chien-Pao​', 'Chi-Yu​', 'Deoxys​', 'Deoxys-Attack​', 'Dialga​', 'Dialga-Origin​', + 'Espathra​', 'Eternatus​', 'Flutter Mane​', 'Giratina​', 'Giratina-Origin​', 'Gouging Fire​', 'Groudon​', 'Ho-Oh​', 'Iron Bundle​', 'Koraidon​', 'Kyogre​', 'Kyurem-Black​', 'Kyurem-White​', + 'Landorus-Incarnate', 'Lugia​', 'Lunala​', 'Magearna​', 'Mewtwo​', 'Miraidon​', 'Necrozma-Dawn-Wings​', 'Necrozma-Dusk-Mane​', 'Ogerpon-Hearthflame​', 'Palafin​', 'Palkia​', 'Palkia-Origin​', + 'Rayquaza​', 'Regieleki​', 'Regigigas​', 'Reshiram​', 'Roaring Moon​', 'Slaking​', 'Shaymin-Sky​', 'Sneasler​', 'Solgaleo​', 'Spectrier​', 'Terapagos​', 'Ursaluna-Bloodmoon​', 'Urshifu', + 'Urshifu-Rapid-Strike​', 'Volcarona​', 'Zacian​', 'Zacian-Crowned​', 'Zamazenta-Crowned', 'Zekrom​', 'Arena Trap​', 'Moody​', 'Sand Veil​', 'Shadow Tag​', 'Snow Cloak​', '​Bright Powder​', + 'Choice Band​', 'Choice Specs​', 'King\'s Rock​', 'Razor Fang​', 'Baton Pass​', 'Last Respects​', 'Shed Tail​', + ], + validateSet(set, teamHas) { + const dex = this.dex; + let species = dex.species.get(set.species); + let requiredItems: string[] = []; + let requiredMove = ''; + let requiredAbility = ''; + if (species.battleOnly) { + if (species.requiredItems) requiredItems = species.requiredItems; + if (species.requiredMove) requiredMove = species.requiredMove; + if (species.requiredAbility) requiredAbility = species.requiredAbility; + species = dex.species.get(species.battleOnly as string); + } + const effectFunctions = [dex.abilities, dex.items, dex.moves]; + if ( + !effectFunctions.some(f => f.get(set.ability).exists) && + !(set.item && effectFunctions.some(f => f.get(set.item).exists)) && + !set.moves.every(move => effectFunctions.some(f => f.get(move).exists)) + ) { + return this.validateSet(set, teamHas); + } + const allThings = [set.ability, set.item, ...set.moves]; + if ( + allThings.some(y => effectFunctions.some(x => x.get(y).isNonstandard && + !this.ruleTable.has(`+pokemontag:${this.toID(x.get(y).isNonstandard)}`))) + ) { + return this.validateSet(set, teamHas); + } + const moves = allThings.filter(thing => thing !== 'metronome' && dex.moves.get(thing).exists); + const abilities = allThings.filter(thing => dex.abilities.get(thing).exists); + const items = allThings.filter(thing => dex.items.get(thing).exists); + const normalAbility = set.ability; + if (!abilities.length) { + set.ability = 'noability'; + } else { + set.ability = this.toID(abilities[0]); + } + if ( + !Object.values(species.abilities).map(this.toID).includes(this.toID(set.ability)) && + this.ruleTable.has('obtainableabilities') + ) { + if (set.ability !== 'noability') return [`${set.ability} is not a valid ability for ${set.species}.`]; + } + if (requiredAbility && !abilities.map(this.toID).includes(this.toID(requiredAbility))) { + return [`${set.species} requires ${requiredAbility} on its set.`]; + } + if (!moves.length) { + return [`${set.species} requires at least one move.`]; + } + const normalMoves = set.moves; + set.moves = [moves[0]]; + if ( + moves.some(move => this.checkCanLearn(dex.moves.get(move), species)) && + this.ruleTable.has('obtainablemoves') + ) { + return [`${set.species} has illegal moves.`]; + } + if (requiredMove && !moves.map(this.toID).includes(this.toID(requiredMove))) { + return [`${set.species} requires ${requiredMove} on its set.`]; + } + if (!items.length && requiredItems.length) { + return [`${set.species} requires ${requiredItems.join(', ')} on its set.`]; + } + const normalItem = set.item; + if (items.length) { + set.item = items.find(i => dex.items.get(i).forcedForme || dex.items.get(i).itemUser) || items[0]; + } else { + set.item = ''; + } + if (!this.ruleTable.has('+ability:noability')) { + this.ruleTable.set('+ability:noability', ''); + } + let problems = this.validateSet(set, teamHas); + if (problems) problems = problems.filter(p => !p.endsWith('needs to have an ability.')); + if (problems?.length) return problems; + set.ability = normalAbility; + set.item = normalItem; + set.moves = normalMoves; + return null; + }, + onBeforeSwitchIn(pokemon) { + let ngas = false; + for (const poke of this.getAllActive()) { + if (this.toID(poke.ability) === ('neutralizinggas' as ID)) { + ngas = true; + break; + } + } + if (pokemon.hasItem('abilityshield') || + pokemon.m.scrambled.items.some((e: { thing: string }) => this.toID(e.thing) === 'abilityshield')) { + ngas = false; + } + for (const ability of pokemon.m.scrambled.abilities) { + if (this.field.getPseudoWeather('magicroom') && ability.inSlot === 'Item') continue; + const effect = 'ability:' + this.toID(ability.thing); + pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon }); + pokemon.volatiles[effect].inSlot = ability.inSlot; + } + for (const item of pokemon.m.scrambled.items) { + if (ngas && item.inSlot === 'Ability') continue; + const effect = 'item:' + this.toID(item.thing); + pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon }); + pokemon.volatiles[effect].inSlot = item.inSlot; + } + if (ngas) { + if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); + if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1); + } + } + if (this.field.getPseudoWeather('magicroom')) { + if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); + if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1); + } + } + }, + onBegin() { + for (const pokemon of this.getAllPokemon()) { + // for everything not in the correct slot + pokemon.m.scrambled = { + abilities: [] as object[], + items: [] as object[], + moves: [] as object[], + }; + + if (this.dex.items.get(pokemon.set.ability).exists) { + pokemon.m.scrambled.items.push({ thing: pokemon.set.ability, inSlot: 'Ability' }); + } else if (this.dex.moves.get(pokemon.set.ability).exists) { + pokemon.m.scrambled.moves.push({ thing: pokemon.set.ability, inSlot: 'Ability' }); + } + + if (this.dex.abilities.get(pokemon.set.item).exists) { + pokemon.m.scrambled.abilities.push({ thing: pokemon.set.item, inSlot: 'Item' }); + } else if (this.dex.moves.get(pokemon.set.item).exists) { + pokemon.m.scrambled.moves.push({ thing: pokemon.set.item, inSlot: 'Item' }); + } + + for (const move of pokemon.set.moves) { + if (this.dex.abilities.get(move).exists) { + pokemon.m.scrambled.abilities.push({ thing: move, inSlot: 'Move' }); + } else if (this.dex.items.get(move).exists) { + pokemon.m.scrambled.items.push({ thing: move, inSlot: 'Move' }); + } + } + + const newMoveSlots = []; + for (const moveSlot of pokemon.baseMoveSlots) { + if (!this.dex.moves.get(moveSlot.id).exists) continue; + newMoveSlots.push(moveSlot); + } + // Do not let these be pointed at the same thing. Causes bugs otherwise. + (pokemon as any).baseMoveSlots = newMoveSlots; + pokemon.moveSlots = this.dex.deepClone(newMoveSlots); + + for (const scrambledMove of pokemon.m.scrambled.moves) { + const move = this.dex.moves.get(scrambledMove.thing); + const newMove = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + used: false, + }; + pokemon.baseMoveSlots.push(newMove); + pokemon.moveSlots.push(newMove); + } + } + }, + }, { name: "[Gen 9] NatDex Camove Chaos", desc: `National Dex-based format where Pokemon can use almost any move in the game, and their first two move types determine their type.`, diff --git a/data/mods/biomechmons/abilities.ts b/data/mods/biomechmons/abilities.ts new file mode 100644 index 0000000000..09b55fd3c8 --- /dev/null +++ b/data/mods/biomechmons/abilities.ts @@ -0,0 +1,131 @@ +export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = { + magician: { + inherit: true, + onAfterMoveSecondarySelf(source, target, move) { + if (!move || source.switchFlag === true || !move.hitTargets || source.item || source.volatiles['gem'] || + move.id === 'fling' || move.category === 'Status') return; + const hitTargets = move.hitTargets; + this.speedSort(hitTargets); + for (const pokemon of hitTargets) { + if (pokemon !== source) { + const yourItem = pokemon.takeItem(source); + if (!yourItem) continue; + if (!source.setItem(yourItem)) { + if (!this.dex.items.get(yourItem.id).exists) { + pokemon.setItem(yourItem.id); + continue; + } + pokemon.item = yourItem.id; // bypass setItem so we don't break choicelock or anything + continue; + } + this.add('-item', source, yourItem, '[from] ability: Magician', `[of] ${pokemon}`); + return; + } + } + }, + }, + neutralizinggas: { + inherit: true, + onSwitchIn(pokemon) { + this.add('-ability', pokemon, 'Neutralizing Gas'); + pokemon.abilityState.ending = false; + const strongWeathers = ['desolateland', 'primordialsea', 'deltastream']; + for (const target of this.getAllActive()) { + if (target.hasItem('Ability Shield')) { + this.add('-block', target, 'item: Ability Shield'); + continue; + } + // Can't suppress a Tatsugiri inside of Dondozo already + if (target.volatiles['commanding']) { + continue; + } + if (target.illusion) { + this.singleEvent('End', this.dex.abilities.get('Illusion'), target.abilityState, target, pokemon, 'neutralizinggas'); + } + if (target.volatiles['slowstart']) { + delete target.volatiles['slowstart']; + this.add('-end', target, 'Slow Start', '[silent]'); + } + if (strongWeathers.includes(target.getAbility().id)) { + this.singleEvent('End', this.dex.abilities.get(target.getAbility().id), target.abilityState, target, pokemon, 'neutralizinggas'); + } + if (!this.dex.abilities.get(target.ability).exists) { + const isItem = (target.m.scrambled.items as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + if (isItem >= 0) { + target.removeVolatile('item:' + this.toID(pokemon.m.scrambled.items[isItem].thing)); + } else if ((target.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const isMove = (target.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + const indexOfMove = target.moveSlots.findIndex(m => this.toID(target.m.scrambled.moves[isMove].thing) === m.id); + if (indexOfMove >= 0) target.moveSlots.splice(indexOfMove, 1); + } + } + } + }, + onEnd(source) { + if (source.transformed) return; + for (const pokemon of this.getAllActive()) { + if (pokemon !== source && pokemon.hasAbility('Neutralizing Gas')) { + return; + } + } + this.add('-end', source, 'ability: Neutralizing Gas'); + + // FIXME this happens before the pokemon switches out, should be the opposite order. + // Not an easy fix since we cant use a supported event. Would need some kind of special event that + // gathers events to run after the switch and then runs them when the ability is no longer accessible. + // (If you're tackling this, do note extreme weathers have the same issue) + + // Mark this pokemon's ability as ending so Pokemon#ignoringAbility skips it + if (source.abilityState.ending) return; + source.abilityState.ending = true; + const sortedActive = this.getAllActive(); + this.speedSort(sortedActive); + for (const pokemon of sortedActive) { + if (pokemon !== source) { + if (pokemon.getAbility().flags['cantsuppress']) continue; // does not interact with e.g Ice Face, Zen Mode + if (pokemon.hasItem('abilityshield')) continue; // don't restart abilities that weren't suppressed + + // Will be suppressed by Pokemon#ignoringAbility if needed + this.singleEvent('Start', pokemon.getAbility(), pokemon.abilityState, pokemon); + if (pokemon.ability === "gluttony") { + pokemon.abilityState.gluttony = false; + } + } + if (!this.dex.abilities.get(pokemon.ability).exists) { + const isItem = (pokemon.m.scrambled.items as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + if (isItem >= 0) { + pokemon.addVolatile('item:' + this.toID(pokemon.m.scrambled.items[isItem].thing)); + } else if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const findMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + const findSlot = pokemon.baseMoveSlots.find(e => e.id === this.toID(pokemon.m.scrambled.moves[findMove].thing)); + pokemon.moveSlots.push(this.dex.deepClone(findSlot)); + } + } + } + }, + }, + pickpocket: { + inherit: true, + onAfterMoveSecondary(target, source, move) { + if (source && source !== target && move?.flags['contact']) { + if (target.item || target.switchFlag || target.forceSwitchFlag || source.switchFlag === true) { + return; + } + const yourItem = source.takeItem(target); + if (!yourItem) { + return; + } + if (!target.setItem(yourItem)) { + if (!this.dex.items.get(yourItem.id).exists) { + target.setItem(yourItem.id); + return; + } + source.item = yourItem.id; + return; + } + this.add('-enditem', source, yourItem, '[silent]', '[from] ability: Pickpocket', `[of] ${source}`); + this.add('-item', target, yourItem, '[from] ability: Pickpocket', `[of] ${source}`); + } + }, + }, +}; diff --git a/data/mods/biomechmons/conditions.ts b/data/mods/biomechmons/conditions.ts new file mode 100644 index 0000000000..1a5bef5f3c --- /dev/null +++ b/data/mods/biomechmons/conditions.ts @@ -0,0 +1,44 @@ +export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = { + choicelock: { + inherit: true, + onBeforeMove(pokemon, target, move) { + const choiceItem = pokemon.getItem().isChoice || + Object.keys(pokemon.volatiles).some(v => ( + v.startsWith('item:') && this.dex.items.get(v.split(':')[1]).isChoice + )); + if (!choiceItem) { + pokemon.removeVolatile('choicelock'); + return; + } + if ( + !pokemon.ignoringItem() && !pokemon.volatiles['dynamax'] && + move.id !== this.effectState.move && move.id !== 'struggle' + ) { + // Fails unless the Choice item is being ignored, and no PP is lost + this.addMove('move', pokemon, move.name); + this.attrLastMove('[still]'); + this.debug("Disabled by Choice item lock"); + this.add('-fail', pokemon); + return false; + } + }, + onDisableMove(pokemon) { + const choiceItem = pokemon.getItem().isChoice || + Object.keys(pokemon.volatiles).some(v => ( + v.startsWith('item:') && this.dex.items.get(v.split(':')[1]).isChoice + )); + if (!choiceItem || !pokemon.hasMove(this.effectState.move)) { + pokemon.removeVolatile('choicelock'); + return; + } + if (pokemon.ignoringItem() || pokemon.volatiles['dynamax']) { + return; + } + for (const moveSlot of pokemon.moveSlots) { + if (moveSlot.id !== this.effectState.move) { + pokemon.disableMove(moveSlot.id, false, this.effectState.sourceEffect); + } + } + }, + }, +}; diff --git a/data/mods/biomechmons/items.ts b/data/mods/biomechmons/items.ts new file mode 100644 index 0000000000..412160497c --- /dev/null +++ b/data/mods/biomechmons/items.ts @@ -0,0 +1,41 @@ +export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { + airballoon: { + inherit: true, + // airborneness implemented in sim/pokemon.js:Pokemon#isGrounded + onDamagingHit(damage, target, source, move) { + this.add('-enditem', target, 'Air Balloon'); + if (target.item === 'airballoon') { + target.item = ''; + this.clearEffectState(target.itemState); + } else { + const isBMM = target.volatiles['item:airballoon']?.inSlot; + if (isBMM) { + target.removeVolatile('item:airballoon'); + target.m.scrambled.items.splice((target.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => + e.thing === 'airballoon' && e.inSlot === isBMM), 1); + if (isBMM === 'Ability') target.setAbility('No Ability'); + } + } + this.runEvent('AfterUseItem', target, null, null, this.dex.items.get('airballoon')); + }, + onAfterSubDamage(damage, target, source, effect) { + this.debug('effect: ' + effect.id); + if (effect.effectType === 'Move') { + this.add('-enditem', target, 'Air Balloon'); + if (target.item === 'airballoon') { + target.item = ''; + this.clearEffectState(target.itemState); + } else { + const isBMM = target.volatiles['item:airballoon']?.inSlot; + if (isBMM) { + target.removeVolatile('item:airballoon'); + target.m.scrambled.items.splice((target.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => + e.thing === 'airballoon' && e.inSlot === isBMM), 1); + if (isBMM === 'Ability') target.setAbility('No Ability'); + } + } + this.runEvent('AfterUseItem', target, null, null, this.dex.items.get('airballoon')); + } + }, + }, +}; diff --git a/data/mods/biomechmons/moves.ts b/data/mods/biomechmons/moves.ts new file mode 100644 index 0000000000..8d1e2b7abb --- /dev/null +++ b/data/mods/biomechmons/moves.ts @@ -0,0 +1,401 @@ +export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { + // Remember, everything deals with SLOTS not with properties as they are! + covet: { + inherit: true, + onAfterHit(target, source, move) { + if (source.item || source.volatiles['gem']) { + return; + } + const yourItem = target.takeItem(source); + if (!yourItem) { + return; + } + if ( + !this.singleEvent('TakeItem', yourItem, target.itemState, source, target, move, yourItem) || + !source.setItem(yourItem) + ) { + if (!this.dex.items.get(yourItem.id).exists) { + target.setItem(yourItem.id); + return; + } + target.item = yourItem.id; // bypass setItem so we don't break choicelock or anything + return; + } + this.add('-item', source, yourItem, '[from] move: Covet', `[of] ${target}`); + }, + }, + embargo: { + inherit: true, + condition: { + duration: 5, + onStart(pokemon) { + this.add('-start', pokemon, 'Embargo'); + this.singleEvent('End', pokemon.getItem(), pokemon.itemState, pokemon); + if (!this.dex.items.get(pokemon.item).exists) { + const isAbil = (pokemon.m.scrambled.abilities as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + if (isAbil >= 0) { + pokemon.removeVolatile('ability:' + this.toID(pokemon.m.scrambled.abilities[isAbil].thing)); + } else if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + const slotNo = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); + if (slotNo >= 0) pokemon.moveSlots.splice(slotNo, 1); + } + } + }, + // Item suppression implemented in Pokemon.ignoringItem() within sim/pokemon.js + onResidualOrder: 21, + onEnd(pokemon) { + this.add('-end', pokemon, 'Embargo'); + if (!this.dex.items.get(pokemon.item).exists) { + const isAbil = (pokemon.m.scrambled.abilities as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + if (isAbil >= 0) { + pokemon.addVolatile('ability:' + this.toID(pokemon.m.scrambled.abilities[isAbil].thing)); + } else if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + const findMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + const findSlot = pokemon.baseMoveSlots.find(e => e.id === this.toID(pokemon.m.scrambled.moves[findMove].thing)); + pokemon.moveSlots.push(this.dex.deepClone(findSlot)); + } + } + }, + }, + }, + magicroom: { + inherit: true, + condition: { + duration: 5, + durationCallback(source, effect) { + if (source?.hasAbility('persistent')) { + this.add('-activate', source, 'ability: Persistent', '[move] Magic Room'); + return 7; + } + return 5; + }, + onFieldStart(target, source) { + if (source?.hasAbility('persistent')) { + this.add('-fieldstart', 'move: Magic Room', `[of] ${source}`, '[persistent]'); + } else { + this.add('-fieldstart', 'move: Magic Room', `[of] ${source}`); + } + for (const mon of this.getAllActive()) { + this.singleEvent('End', mon.getItem(), mon.itemState, mon); + if (!this.dex.items.get(mon.item).exists) { + const isAbil = (mon.m.scrambled.abilities as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + if (isAbil >= 0) { + mon.removeVolatile('ability:' + this.toID(mon.m.scrambled.abilities[isAbil].thing)); + } else if ((mon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + const isMove = (mon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + const slotNo = mon.moveSlots.findIndex(m => this.toID(mon.m.scrambled.moves[isMove].thing) === m.id); + if (slotNo >= 0) mon.moveSlots.splice(slotNo, 1); + } + } + } + }, + onFieldRestart(target, source) { + this.field.removePseudoWeather('magicroom'); + }, + // Item suppression implemented in Pokemon.ignoringItem() within sim/pokemon.js + onFieldResidualOrder: 27, + onFieldResidualSubOrder: 6, + onFieldEnd() { + this.add('-fieldend', 'move: Magic Room', '[of] ' + this.effectState.source); + for (const pokemon of this.getAllActive()) { + if (!this.dex.items.get(pokemon.item).exists) { + const isAbil = (pokemon.m.scrambled.abilities as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + if (isAbil >= 0) { + pokemon.addVolatile('ability:' + this.toID(pokemon.m.scrambled.abilities[isAbil].thing)); + } else if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + const findMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + const findSlot = pokemon.baseMoveSlots.find(e => e.id === this.toID(pokemon.m.scrambled.moves[findMove].thing)); + pokemon.moveSlots.push(this.dex.deepClone(findSlot)); + } + } + } + }, + }, + }, + gastroacid: { + inherit: true, + condition: { + // Ability suppression implemented in Pokemon.ignoringAbility() within sim/pokemon.js + onStart(pokemon) { + this.add('-endability', pokemon); + this.singleEvent('End', pokemon.getAbility(), pokemon.abilityState, pokemon, pokemon, 'gastroacid'); + if (!this.dex.abilities.get(pokemon.ability).exists) { + const isItem = (pokemon.m.scrambled.items as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + if (isItem >= 0) { + pokemon.removeVolatile('item:' + this.toID(pokemon.m.scrambled.items[isItem].thing)); + } else if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + const slotNo = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); + if (slotNo >= 0) pokemon.moveSlots.splice(slotNo, 1); + } + } + }, + }, + }, + trick: { + inherit: true, + onHit(target, source, move) { + const yourItem = target.takeItem(source); + const myItem = source.takeItem(); + if (target.item || source.item || (!yourItem && !myItem)) { + if (yourItem) { + if (!this.dex.items.get(yourItem.id).exists) { + target.setItem(yourItem.id); + } else { + target.item = yourItem.id; + } + } + if (myItem) { + if (!this.dex.items.get(myItem.id).exists) { + source.setItem(myItem.id); + } else { + source.item = myItem.id; + } + } + return false; + } + if ( + (myItem && !this.singleEvent('TakeItem', myItem, source.itemState, target, source, move, myItem)) || + (yourItem && !this.singleEvent('TakeItem', yourItem, target.itemState, source, target, move, yourItem)) + ) { + if (yourItem) { + if (!this.dex.items.get(yourItem.id).exists) { + target.setItem(yourItem.id); + } else { + target.item = yourItem.id; + } + } + if (myItem) { + if (!this.dex.items.get(myItem.id).exists) { + source.setItem(myItem.id); + } else { + source.item = myItem.id; + } + } + return false; + } + this.add('-activate', source, 'move: Trick', `[of] ${target}`); + if (myItem) { + target.setItem(myItem); + this.add('-item', target, myItem, '[from] move: Trick'); + } else { + this.add('-enditem', target, yourItem, '[silent]', '[from] move: Trick'); + } + if (yourItem) { + source.setItem(yourItem); + this.add('-item', source, yourItem, '[from] move: Trick'); + } else { + this.add('-enditem', source, myItem, '[silent]', '[from] move: Trick'); + } + }, + }, + sketch: { + inherit: true, + onHit(target, source) { + const move = target.lastMove; + if (source.transformed || !move || source.moves.includes(move.id)) return false; + if (move.flags['nosketch'] || move.isZ || move.isMax) return false; + const sketchIndex = source.moves.indexOf('sketch'); + if (sketchIndex < 0) return false; + if (toID(source.item) === 'sketch') { + source.setItem(move.name); + this.add('-activate', source, 'move: Sketch', move.name); + return; + } else if (toID(source.ability) === 'sketch') { + source.setAbility(move.name); + this.add('-activate', source, 'move: Sketch', move.name); + return; + } + const sketchedMove = { + move: move.name, + id: move.id, + pp: move.pp, + maxpp: move.pp, + target: move.target, + disabled: false, + used: false, + }; + source.moveSlots[sketchIndex] = sketchedMove; + source.baseMoveSlots[sketchIndex] = sketchedMove; + this.add('-activate', source, 'move: Sketch', move.name); + }, + }, + skillswap: { + inherit: true, + onHit(target, source, move) { + const targetAbility = target.getAbility(); + const sourceAbility = source.getAbility(); + const sourceIsBMM = !this.dex.abilities.get(sourceAbility).exists; + const targetIsBMM = !this.dex.abilities.get(targetAbility).exists; + if (target.isAlly(source)) { + this.add('-activate', source, 'move: Skill Swap', '', '', `[of] ${target}`); + } else { + this.add('-activate', source, 'move: Skill Swap', targetAbility, sourceAbility, `[of] ${target}`); + } + this.singleEvent('End', sourceAbility, source.abilityState, source); + if (sourceIsBMM) { + const isItem = (source.m.scrambled.items as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + if (isItem >= 0) { + source.removeVolatile('item:' + this.toID(source.m.scrambled.items[isItem].thing)); + source.m.scrambled.items.splice(isItem, 1); + } else if ((source.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const isMove = (source.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + source.baseMoveSlots.splice( + source.baseMoveSlots.findIndex(m => this.toID(source.m.scrambled.moves[isMove].thing) === m.id), 1); + source.moveSlots.splice(source.moveSlots.findIndex(m => this.toID(source.m.scrambled.moves[isMove].thing) === m.id), 1); + source.m.scrambled.moves.splice(isMove, 1); + } + } + this.singleEvent('End', targetAbility, target.abilityState, target); + if (targetIsBMM) { + const isItem = (target.m.scrambled.items as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + if (isItem >= 0) { + target.removeVolatile('item:' + this.toID(target.m.scrambled.items[isItem].thing)); + target.m.scrambled.items.splice(isItem, 1); + } else if ((target.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const isMove = (target.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + target.baseMoveSlots.splice( + target.baseMoveSlots.findIndex(m => this.toID(target.m.scrambled.moves[isMove].thing) === m.id), 1); + target.moveSlots.splice(target.moveSlots.findIndex(m => this.toID(target.m.scrambled.moves[isMove].thing) === m.id), 1); + target.m.scrambled.moves.splice(isMove, 1); + } + } + + source.ability = source.baseAbility = targetAbility.id; + target.ability = target.baseAbility = sourceAbility.id; + source.abilityState = this.initEffectState({ id: this.toID(source.ability), target: source }); + target.abilityState = this.initEffectState({ id: this.toID(target.ability), target }); + + source.volatileStaleness = undefined; + if (!target.isAlly(source)) target.volatileStaleness = 'external'; + + this.singleEvent('Start', targetAbility, source.abilityState, source); + if (targetIsBMM) { + if (this.dex.items.get(targetAbility.id).exists) { + source.m.scrambled.items.push({ thing: targetAbility.id, inSlot: 'Ability' }); + const effect = 'item:' + this.toID(targetAbility.id); + source.addVolatile(effect); + source.volatiles[effect].inSlot = 'Ability'; + } else { + source.m.scrambled.moves.push({ thing: targetAbility.id, inSlot: 'Ability' }); + const bmmMove = Dex.moves.get(targetAbility.id); + const newMove = { + move: bmmMove.name, + id: bmmMove.id, + pp: bmmMove.noPPBoosts ? bmmMove.pp : bmmMove.pp * 8 / 5, + maxpp: bmmMove.noPPBoosts ? bmmMove.pp : bmmMove.pp * 8 / 5, + target: bmmMove.target, + disabled: false, + used: false, + }; + source.baseMoveSlots.push(newMove); + source.moveSlots.push(newMove); + } + } + this.singleEvent('Start', sourceAbility, target.abilityState, target); + if (sourceIsBMM) { + if (this.dex.items.get(sourceAbility.id).exists) { + target.m.scrambled.items.push({ thing: sourceAbility.id, inSlot: 'Ability' }); + const effect = 'item:' + this.toID(sourceAbility.id); + target.addVolatile(effect); + target.volatiles[effect].inSlot = 'Ability'; + } else { + target.m.scrambled.moves.push({ thing: sourceAbility.id, inSlot: 'Ability' }); + const bmmMove = Dex.moves.get(sourceAbility.id); + const newMove = { + move: bmmMove.name, + id: bmmMove.id, + pp: bmmMove.noPPBoosts ? bmmMove.pp : bmmMove.pp * 8 / 5, + maxpp: bmmMove.noPPBoosts ? bmmMove.pp : bmmMove.pp * 8 / 5, + target: bmmMove.target, + disabled: false, + used: false, + }; + target.baseMoveSlots.push(newMove); + target.moveSlots.push(newMove); + } + } + }, + }, + switcheroo: { + inherit: true, + onHit(target, source, move) { + const yourItem = target.takeItem(source); + const myItem = source.takeItem(); + if (target.item || source.item || (!yourItem && !myItem)) { + if (yourItem) { + if (!this.dex.items.get(yourItem.id).exists) { + target.setItem(yourItem.id); + } else { + target.item = yourItem.id; + } + } + if (myItem) { + if (!this.dex.items.get(myItem.id).exists) { + source.setItem(myItem.id); + } else { + source.item = myItem.id; + } + } + return false; + } + if ( + (myItem && !this.singleEvent('TakeItem', myItem, source.itemState, target, source, move, myItem)) || + (yourItem && !this.singleEvent('TakeItem', yourItem, target.itemState, source, target, move, yourItem)) + ) { + if (yourItem) { + if (!this.dex.items.get(yourItem.id).exists) { + target.setItem(yourItem.id); + } else { + target.item = yourItem.id; + } + } + if (myItem) { + if (!this.dex.items.get(myItem.id).exists) { + source.setItem(myItem.id); + } else { + source.item = myItem.id; + } + } + return false; + } + this.add('-activate', source, 'move: Trick', `[of] ${target}`); + if (myItem) { + target.setItem(myItem); + this.add('-item', target, myItem, '[from] move: Switcheroo'); + } else { + this.add('-enditem', target, yourItem, '[silent]', '[from] move: Switcheroo'); + } + if (yourItem) { + source.setItem(yourItem); + this.add('-item', source, yourItem, '[from] move: Switcheroo'); + } else { + this.add('-enditem', source, myItem, '[silent]', '[from] move: Switcheroo'); + } + }, + }, + thief: { + inherit: true, + onAfterHit(target, source, move) { + if (source.item || source.volatiles['gem']) { + return; + } + const yourItem = target.takeItem(source); + if (!yourItem) { + return; + } + if (!this.singleEvent('TakeItem', yourItem, target.itemState, source, target, move, yourItem) || + !source.setItem(yourItem)) { + if (!this.dex.items.get(yourItem.id).exists) { + target.setItem(yourItem.id); + return; + } + target.item = yourItem.id; // bypass setItem so we don't break choicelock or anything + return; + } + this.add('-enditem', target, yourItem, '[silent]', '[from] move: Thief', `[of] ${source}`); + this.add('-item', source, yourItem, '[from] move: Thief', `[of] ${target}`); + }, + }, +}; diff --git a/data/mods/biomechmons/scripts.ts b/data/mods/biomechmons/scripts.ts new file mode 100644 index 0000000000..315646ad3f --- /dev/null +++ b/data/mods/biomechmons/scripts.ts @@ -0,0 +1,532 @@ +import { RESTORATIVE_BERRIES } from "../../../sim/pokemon"; + +export const Scripts: ModdedBattleScriptsData = { + pokemon: { + getAbility() { + const ability = this.battle.dex.abilities.getByID(this.ability); + if (ability.exists) return ability; + let abil = this.battle.dex.items.getByID(this.ability) as Item | Move; + if (!abil.exists) abil = this.battle.dex.moves.getByID(this.ability); + return { + id: this.ability, + name: abil.name || this.ability, + flags: {}, + effectType: "Ability", + toString() { + return abil.name || this.id; + }, + } as Ability; + }, + hasAbility(ability) { + if (this.ignoringAbility()) return false; + if (Array.isArray(ability)) return ability.some(abil => this.hasAbility(abil)); + const abilityid = this.battle.toID(ability); + return this.ability === abilityid || !!this.volatiles['ability:' + abilityid]; + }, + ignoringAbility() { + // Check if any active pokemon have the ability Neutralizing Gas + let neutralizinggas = false; + for (const pokemon of this.battle.getAllActive()) { + // can't use hasAbility because it would lead to infinite recursion + if ( + (pokemon.ability === ('neutralizinggas' as ID) || + (pokemon.m.scrambled.abilities as { thing: string }[]).some( + abils => this.battle.toID(abils.thing) === 'neutralizinggas')) && + !pokemon.volatiles['gastroacid'] && !pokemon.abilityState.ending + ) { + neutralizinggas = true; + break; + } + } + + return !!( + (this.battle.gen >= 5 && !this.isActive) || + ((this.volatiles['gastroacid'] || + (neutralizinggas && (this.ability !== ('neutralizinggas' as ID) || + (this.m.scrambled.abilities as { thing: string }[]).some(abils => this.battle.toID(abils.thing) === 'neutralizinggas')) + )) && !this.getAbility().flags['cantsuppress'] + ) + ); + }, + setAbility(ability, source, sourceEffect, isFromFormeChange = false, isTransform = false) { + let isBMMAbil = false; + let isOldBMMAbil = false; + if (!this.hp) return false; + if (!this.battle.dex.abilities.get(ability).exists) isBMMAbil = true; + if (typeof ability === 'string') { + if (this.battle.dex.abilities.get(ability).exists) { + ability = this.battle.dex.abilities.get(ability); + } else { + const abilString = ability; + let abil = this.battle.dex.items.get(abilString) as Item | Move; + if (!abil.exists) abil = this.battle.dex.moves.get(abilString); + ability = { + id: abil.id || abilString, + name: abil.name || abilString, + flags: {}, + effectType: "Ability", + toString() { + return abil.name || abilString; + }, + } as Ability; + } + } + if (!sourceEffect && this.battle.effect) sourceEffect = this.battle.effect; + let oldAbility; + if (this.battle.dex.abilities.get(this.ability).exists) { + oldAbility = this.battle.dex.abilities.get(this.ability); + } else { + let abil = this.battle.dex.items.getByID(this.ability) as Item | Move; + if (!abil.exists) abil = this.battle.dex.moves.getByID(this.ability); + oldAbility = { + id: this.ability, + name: abil.name || this.ability, + flags: {}, + effectType: "Ability", + toString() { + return abil.name || this.id; + }, + } as Ability; + isOldBMMAbil = true; + } + if (!isFromFormeChange) { + if (ability.flags['cantsuppress'] || this.getAbility().flags['cantsuppress']) return false; + } + if (!isFromFormeChange && !isTransform) { + const setAbilityEvent: boolean | null = this.battle.runEvent('SetAbility', this, source, sourceEffect, ability); + if (!setAbilityEvent) return setAbilityEvent; + } + this.battle.singleEvent('End', oldAbility, this.abilityState, this, source); + if (isOldBMMAbil) { + const isItem = (this.m.scrambled.items as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + if (isItem >= 0) { + this.removeVolatile('item:' + this.battle.toID(this.m.scrambled.items[isItem].thing)); + this.m.scrambled.items.splice(isItem, 1); + } else if ((this.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const isMove = (this.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + if (!isTransform) { + let indexOfMove = this.baseMoveSlots.findIndex(m => this.battle.toID(this.m.scrambled.moves[isMove].thing) === m.id); + if (indexOfMove >= 0) this.baseMoveSlots.splice(indexOfMove, 1); + if (oldAbility.id !== 'mimic') { + indexOfMove = this.moveSlots.findIndex(m => this.battle.toID(this.m.scrambled.moves[isMove].thing) === m.id); + } + if (indexOfMove >= 0) this.moveSlots.splice(indexOfMove, 1); + } + this.m.scrambled.moves.splice(isMove, 1); + } + } + this.ability = ability.id; + // ability changes are permanent in BioMechMons + if (!isTransform) this.baseAbility = ability.id; + this.abilityState = this.battle.initEffectState({ id: ability.id, target: this }); + if (sourceEffect && !isFromFormeChange && !isTransform) { + if (source) { + this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`, `[of] ${source}`); + } else { + this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`); + } + } + if (ability.id && this.battle.gen > 3 && + (!isTransform || oldAbility.id !== ability.id || this.battle.gen <= 4)) { + this.battle.singleEvent('Start', ability, this.abilityState, this, source); + } + if (isBMMAbil) { + if (this.battle.dex.items.get(ability.id).exists) { + this.m.scrambled.items.push({ thing: ability.id, inSlot: 'Ability' }); + const effect = 'item:' + this.battle.toID(ability.id); + this.addVolatile(effect); + this.volatiles[effect].inSlot = 'Ability'; + } else { + this.m.scrambled.moves.push({ thing: ability.id, inSlot: 'Ability' }); + const move = Dex.moves.get(ability.id); + const newMove = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + used: false, + }; + if (!isTransform) { + this.baseMoveSlots.push(newMove); + this.moveSlots.push(newMove); + } + } + } + return oldAbility.id; + }, + getItem() { + const item = this.battle.dex.items.getByID(this.item); + if (item.exists) return item; + let bmmItem = this.battle.dex.abilities.getByID(this.item) as Ability | Move; + if (!bmmItem.exists) bmmItem = this.battle.dex.moves.getByID(this.item); + return { + id: this.item, + name: bmmItem.name || this.name, + effectType: "Item", + toString() { + return bmmItem.name || this.id; + }, + } as Item; + }, + hasItem(item) { + if (this.ignoringItem()) return false; + if (Array.isArray(item)) return item.some(i => this.hasItem(i)); + const itemId = this.battle.toID(item); + return this.item === itemId || !!this.volatiles['item:' + itemId]; + }, + takeItem(source) { + if (!this.item) return false; + if (!source) source = this; + if (this.battle.gen <= 4) { + if (source.itemKnockedOff) return false; + if (toID(this.ability) === 'multitype') return false; + if (toID(source.ability) === 'multitype') return false; + } + const item = this.getItem(); + if (this.battle.runEvent('TakeItem', this, source, null, item)) { + this.item = ''; + let wrongSlot = (this.m.scrambled.abilities as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + if (wrongSlot >= 0) { + this.removeVolatile('ability:' + this.battle.toID(this.m.scrambled.abilities[wrongSlot].thing)); + this.m.scrambled.abilities.splice(wrongSlot, 1); + } else if ((this.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + wrongSlot = (this.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + let indexOfMove = this.baseMoveSlots.findIndex(m => this.battle.toID(this.m.scrambled.moves[wrongSlot].thing) === m.id); + if (indexOfMove >= 0) this.baseMoveSlots.splice(indexOfMove, 1); + if (item.id !== 'mimic') { + indexOfMove = this.moveSlots.findIndex(m => this.battle.toID(this.m.scrambled.moves[wrongSlot].thing) === m.id); + } + if (indexOfMove >= 0) this.moveSlots.splice(indexOfMove, 1); + this.m.scrambled.moves.splice(wrongSlot, 1); + } + const oldItemState = this.itemState; + this.battle.clearEffectState(this.itemState); + this.pendingStaleness = undefined; + this.battle.singleEvent('End', item, oldItemState, this); + this.battle.runEvent('AfterTakeItem', this, null, null, item); + return item; + } + return false; + }, + setItem(item, source, effect) { + let isBMMItem = false; + let isOldBMMItem = false; + if (!this.hp || !this.isActive) return false; + if (!this.battle.dex.items.get(item).exists) isBMMItem = true; + if (typeof item === 'string') { + if (this.battle.dex.items.get(item).exists) { + item = this.battle.dex.items.get(item); + } else { + const itemString = item; + let newData = this.battle.dex.abilities.get(itemString) as Ability | Move; + if (!newData.exists) newData = this.battle.dex.moves.get(itemString); + item = { + id: newData.id || itemString, + name: newData.name || itemString, + effectType: "Item", + toString() { + return newData.name || itemString; + }, + } as Item; + } + } + const effectid = this.battle.effect ? this.battle.effect.id : ''; + if (RESTORATIVE_BERRIES.has('leppaberry' as ID)) { + const inflicted = ['trick', 'switcheroo'].includes(effectid); + const external = inflicted && source && !source.isAlly(this); + this.pendingStaleness = external ? 'external' : 'internal'; + } else { + this.pendingStaleness = undefined; + } + const oldItem = this.getItem(); + if (!this.battle.dex.items.get(oldItem).exists) isOldBMMItem = true; + const oldItemState = this.itemState; + this.item = item.id; + this.itemState = this.battle.initEffectState({ id: item.id, target: this }); + if (oldItem.exists) this.battle.singleEvent('End', oldItem, oldItemState, this); + if (isOldBMMItem) { + const isAbil = (this.m.scrambled.abilities as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + if (isAbil >= 0) { + this.removeVolatile('ability:' + this.battle.toID(this.m.scrambled.items[isAbil].thing)); + this.m.scrambled.abilities.splice(isAbil, 1); + } else if ((this.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + const isMove = (this.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + let indexOfMove = this.baseMoveSlots.findIndex(m => this.battle.toID(this.m.scrambled.moves[isMove].thing) === m.id); + if (indexOfMove >= 0) this.baseMoveSlots.splice(indexOfMove, 1); + if (oldItem.id !== 'mimic') { + indexOfMove = this.moveSlots.findIndex(m => this.battle.toID(this.m.scrambled.moves[isMove].thing) === m.id); + } + if (indexOfMove >= 0) this.moveSlots.splice(indexOfMove, 1); + this.m.scrambled.moves.splice(isMove, 1); + } + } + if (item.id) { + this.battle.singleEvent('Start', item, this.itemState, this, source, effect); + } + if (isBMMItem) { + if (this.battle.dex.abilities.get(item.id).exists) { + this.m.scrambled.abilities.push({ thing: item.id, inSlot: 'Item' }); + const abileffect = 'ability:' + this.battle.toID(item.id); + this.addVolatile(abileffect); + this.volatiles[abileffect].inSlot = 'Item'; + } else { + this.m.scrambled.moves.push({ thing: item.id, inSlot: 'Item' }); + const move = Dex.moves.get(item.id); + const newMove = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + used: false, + }; + this.baseMoveSlots.push(newMove); + this.moveSlots.push(newMove); + } + } + return true; + }, + + eatItem(force, source, sourceEffect) { + const item = sourceEffect?.effectType === 'Item' ? sourceEffect : + this.battle.effect.effectType === 'Item' ? this.battle.effect : this.getItem(); + if (!item) return false; + if ((!this.hp && this.battle.toID(item.name) !== 'jabocaberry' && this.battle.toID(item.name) !== 'rowapberry') || + !this.isActive) return false; + + if (!sourceEffect && this.battle.effect) sourceEffect = this.battle.effect; + if (!source && this.battle.event?.target) source = this.battle.event.target; + // if (sourceEffect?.effectType === 'Item' && this.item !== sourceEffect.id && source === this) { + // // if an item is telling us to eat it but we aren't holding it, we probably shouldn't eat what we are holding + // return false; + // } + if ( + this.battle.runEvent('UseItem', this, null, null, Dex.items.get(item.name)) && + (force || this.battle.runEvent('TryEatItem', this, null, null, Dex.items.get(item.name))) + ) { + this.battle.add('-enditem', this, Dex.items.get(item.name), '[eat]'); + + this.battle.singleEvent('Eat', Dex.items.get(item.name), this.itemState, this, source, sourceEffect); + this.battle.runEvent('EatItem', this, source, sourceEffect, Dex.items.get(item.name)); + + if (RESTORATIVE_BERRIES.has(item.id)) { + switch (this.pendingStaleness) { + case 'internal': + if (this.staleness !== 'external') this.staleness = 'internal'; + break; + case 'external': + this.staleness = 'external'; + break; + } + this.pendingStaleness = undefined; + } + + const isBMM = this.volatiles[item.id]?.inSlot; + if (isBMM) { + this.removeVolatile(item.id); + this.m.scrambled.items.splice((this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => + e.thing === this.battle.toID(item.name) && e.inSlot === isBMM), 1); + if (isBMM === 'Ability') this.setAbility('No Ability'); + } else { + this.lastItem = this.item; + this.item = ''; + } + this.battle.clearEffectState(this.itemState); + this.usedItemThisTurn = true; + this.ateBerry = true; + this.battle.runEvent('AfterUseItem', this, null, null, Dex.items.get(item.name)); + return true; + } + return false; + }, + + useItem(source, sourceEffect) { + const item = sourceEffect?.effectType === 'Item' ? sourceEffect : + this.battle.effect.effectType === 'Item' ? this.battle.effect : this.getItem(); + if ((!this.hp && !item.isGem) || !this.isActive) return false; + if (!item) return false; + + if (!sourceEffect && this.battle.effect) sourceEffect = this.battle.effect; + if (!source && this.battle.event?.target) source = this.battle.event.target; + // const item = this.getItem(); + // if (sourceEffect?.effectType === 'Item' && this.item !== sourceEffect.id && source === this) { + // // if an item is telling us to eat it but we aren't holding it, we probably shouldn't eat what we are holding + // return false; + // } + if (this.battle.runEvent('UseItem', this, null, null, Dex.items.get(item.name))) { + switch (item.id) { + case 'redcard': + this.battle.add('-enditem', this, Dex.items.get(item.name), `[of] ${source}`); + break; + default: + if (item.isGem) { + this.battle.add('-enditem', this, Dex.items.get(item.name), '[from] gem'); + } else { + this.battle.add('-enditem', this, Dex.items.get(item.name)); + } + break; + } + if (item.boosts) { + this.battle.boost(item.boosts, this, source, Dex.items.get(item.name)); + } + + this.battle.singleEvent('Use', Dex.items.get(item.name), this.itemState, this, source, sourceEffect); + + const isBMM = this.volatiles[item.id]?.inSlot; + if (isBMM) { + this.removeVolatile(item.id); + this.m.scrambled.items.splice((this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => + e.thing === this.battle.toID(item.name) && e.inSlot === isBMM), 1); + if (isBMM === 'Ability') this.setAbility('No Ability'); + } else { + this.lastItem = this.item; + this.item = ''; + } + this.battle.clearEffectState(this.itemState); + this.usedItemThisTurn = true; + this.battle.runEvent('AfterUseItem', this, null, null, item); + return true; + } + return false; + }, + transformInto(pokemon, effect) { + const species = pokemon.species; + if ( + pokemon.fainted || this.illusion || pokemon.illusion || (pokemon.volatiles['substitute'] && this.battle.gen >= 5) || + (pokemon.transformed && this.battle.gen >= 2) || (this.transformed && this.battle.gen >= 5) || + species.name === 'Eternatus-Eternamax' || + (['Ogerpon', 'Terapagos'].includes(species.baseSpecies) && (this.terastallized || pokemon.terastallized)) || + this.terastallized === 'Stellar' + ) { + return false; + } + + if (this.battle.dex.currentMod === 'gen1stadium' && ( + species.name === 'Ditto' || + (this.species.name === 'Ditto' && pokemon.moves.includes('transform')) + )) { + return false; + } + + if (!this.setSpecies(species, effect, true)) return false; + + this.transformed = true; + this.weighthg = pokemon.weighthg; + + const types = pokemon.getTypes(true, true); + this.setType(pokemon.volatiles['roost'] ? pokemon.volatiles['roost'].typeWas : types, true); + this.addedType = pokemon.addedType; + this.knownType = this.isAlly(pokemon) && pokemon.knownType; + this.apparentType = pokemon.apparentType; + + let statName: StatIDExceptHP; + for (statName in this.storedStats) { + this.storedStats[statName] = pokemon.storedStats[statName]; + if (this.modifiedStats) this.modifiedStats[statName] = pokemon.modifiedStats![statName]; // Gen 1: Copy modified stats. + } + this.moveSlots = []; + this.hpType = (this.battle.gen >= 5 ? this.hpType : pokemon.hpType); + this.hpPower = (this.battle.gen >= 5 ? this.hpPower : pokemon.hpPower); + this.timesAttacked = pokemon.timesAttacked; + for (const moveSlot of pokemon.moveSlots) { + let moveName = moveSlot.move; + if (moveSlot.id === 'hiddenpower') { + moveName = 'Hidden Power ' + this.hpType; + } + this.moveSlots.push({ + move: moveName, + id: moveSlot.id, + pp: moveSlot.maxpp === 1 ? 1 : 5, + maxpp: this.battle.gen >= 5 ? (moveSlot.maxpp === 1 ? 1 : 5) : moveSlot.maxpp, + target: moveSlot.target, + disabled: false, + used: false, + virtual: true, + }); + } + let boostName: BoostID; + for (boostName in pokemon.boosts) { + this.boosts[boostName] = pokemon.boosts[boostName]; + } + if (this.battle.gen >= 6) { + // we need to remove all of the overlapping crit volatiles before adding any of them + const volatilesToCopy = ['dragoncheer', 'focusenergy', 'gmaxchistrike', 'laserfocus']; + for (const volatile of volatilesToCopy) this.removeVolatile(volatile); + for (const volatile of volatilesToCopy) { + if (pokemon.volatiles[volatile]) { + this.addVolatile(volatile); + if (volatile === 'gmaxchistrike') this.volatiles[volatile].layers = pokemon.volatiles[volatile].layers; + if (volatile === 'dragoncheer') this.volatiles[volatile].hasDragonType = pokemon.volatiles[volatile].hasDragonType; + } + } + } + if (effect) { + this.battle.add('-transform', this, pokemon, '[from] ' + effect.fullname); + } else { + this.battle.add('-transform', this, pokemon); + } + if (this.terastallized) { + this.knownType = true; + this.apparentType = this.terastallized; + } + if (this.battle.gen > 2) this.setAbility(pokemon.ability, this, null, true, true); + + // Change formes based on held items (for Transform) + // Only ever relevant in Generation 4 since Generation 3 didn't have item-based forme changes + if (this.battle.gen === 4) { + if (this.species.num === 487) { + // Giratina formes + if (this.species.name === 'Giratina' && this.item === 'griseousorb') { + this.formeChange('Giratina-Origin'); + } else if (this.species.name === 'Giratina-Origin' && this.item !== 'griseousorb') { + this.formeChange('Giratina'); + } + } + if (this.species.num === 493) { + // Arceus formes + const item = this.getItem(); + const targetForme = (item?.onPlate ? 'Arceus-' + item.onPlate : 'Arceus'); + if (this.species.name !== targetForme) { + this.formeChange(targetForme); + } + } + } + + // Pokemon transformed into Ogerpon cannot Terastallize + // restoring their ability to tera after they untransform is handled ELSEWHERE + if (['Ogerpon', 'Terapagos'].includes(this.species.baseSpecies) && this.canTerastallize) this.canTerastallize = false; + + for (const volatile in this.volatiles) { + if (this.volatiles[volatile].inSlot && this.volatiles[volatile].inSlot === 'Move') { + this.removeVolatile(volatile); + } + } + + for (const volatile in pokemon.volatiles) { + if (pokemon.volatiles[volatile].inSlot && pokemon.volatiles[volatile].inSlot === 'Move') { + this.addVolatile(volatile); + this.volatiles[volatile].inSlot = 'Move'; + } + } + + return true; + }, + }, + field: { + suppressingWeather() { + for (const pokemon of this.battle.getAllActive()) { + const innates = Object.keys(pokemon.volatiles).filter(x => x.startsWith('ability:')); + if (pokemon && !pokemon.ignoringAbility() && + (pokemon.getAbility().suppressWeather || innates.some(x => ( + this.battle.dex.abilities.get(x.replace('ability:', '')).suppressWeather + )))) { + return true; + } + } + return false; + }, + }, +}; From 4a6196f310c9ed5b81549b96ef2b77c6c3d245d7 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 10:22:54 -0700 Subject: [PATCH 021/139] Z-A OU: Implement tier shifts and bans/buffs/nerfs --- data/mods/gen9legendsou/formats-data.ts | 212 ++++++++++++------------ data/mods/gen9legendsou/pokedex.ts | 12 +- 2 files changed, 112 insertions(+), 112 deletions(-) diff --git a/data/mods/gen9legendsou/formats-data.ts b/data/mods/gen9legendsou/formats-data.ts index eb6172656e..a87360093c 100644 --- a/data/mods/gen9legendsou/formats-data.ts +++ b/data/mods/gen9legendsou/formats-data.ts @@ -78,10 +78,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, raichumegax: { - tier: "OU", + tier: "UU", }, raichumegay: { - tier: "OU", + tier: "UU", }, clefairy: { tier: "NFE", @@ -99,7 +99,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, wigglytuff: { - tier: "OU", + tier: "UU", }, zubat: { tier: "LC", @@ -108,7 +108,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, crobat: { - tier: "OU", + tier: "UU", }, meowth: { tier: "LC", @@ -120,13 +120,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, persian: { - tier: "OU", + tier: "UU", }, persianalola: { - tier: "OU", + tier: "UU", }, perrserker: { - tier: "OU", + tier: "UU", }, mankey: { tier: "LC", @@ -135,7 +135,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, annihilape: { - tier: "OU", + tier: "Uber", }, abra: { tier: "LC", @@ -186,13 +186,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, farfetchd: { - tier: "OU", + tier: "UU", }, farfetchdgalar: { tier: "LC", }, sirfetchd: { - tier: "OU", + tier: "UU", }, gastly: { tier: "LC", @@ -201,7 +201,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, gengar: { - tier: "OU", + tier: "UU", }, gengarmega: { tier: "Uber", @@ -213,10 +213,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, marowak: { - tier: "OU", + tier: "UU", }, marowakalola: { - tier: "OU", + tier: "UU", }, kangaskhan: { tier: "UU", @@ -237,13 +237,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, mrmime: { - tier: "OU", + tier: "UU", }, mrmimegalar: { tier: "NFE", }, mrrime: { - tier: "OU", + tier: "UU", }, scyther: { tier: "LC", @@ -261,7 +261,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, porygonz: { - tier: "OU", + tier: "UU", }, magikarp: { tier: "LC", @@ -276,7 +276,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, vaporeon: { - tier: "OU", + tier: "UU", }, jolteon: { tier: "UU", @@ -300,7 +300,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, dragonitemega: { - tier: "OU", + tier: "(OU)", }, mewtwo: { tier: "Uber", @@ -363,7 +363,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, umbreon: { - tier: "OU", + tier: "UU", }, slowking: { tier: "UU", @@ -378,13 +378,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, qwilfish: { - tier: "OU", + tier: "UU", }, qwilfishhisui: { tier: "LC", }, overqwil: { - tier: "OU", + tier: "UU", }, scizor: { tier: "OU", @@ -405,7 +405,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, skarmorymega: { - tier: "OU", + tier: "(OU)", }, houndour: { tier: "LC", @@ -435,10 +435,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, sceptile: { - tier: "OU", + tier: "UU", }, sceptilemega: { - tier: "OU", + tier: "UU", }, torchic: { tier: "LC", @@ -450,7 +450,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, blazikenmega: { - tier: "Uber", + tier: "(OU)", }, mudkip: { tier: "LC", @@ -459,10 +459,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, swampert: { - tier: "OU", + tier: "UU", }, swampertmega: { - tier: "OU", + tier: "UU", }, ralts: { tier: "LC", @@ -525,7 +525,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, swalot: { - tier: "OU", + tier: "UU", }, carvanha: { tier: "LC", @@ -549,7 +549,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, grumpig: { - tier: "OU", + tier: "UU", }, swablu: { tier: "LC", @@ -561,19 +561,19 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, zangoose: { - tier: "OU", + tier: "UU", }, seviper: { - tier: "OU", + tier: "UU", }, feebas: { tier: "LC", }, milotic: { - tier: "OU", + tier: "UU", }, kecleon: { - tier: "OU", + tier: "UU", }, shuppet: { tier: "LC", @@ -588,10 +588,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, chimecho: { - tier: "OU", + tier: "UU", }, chimechomega: { - tier: "OU", + tier: "UU", }, absol: { tier: "UU", @@ -636,16 +636,16 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "Uber", }, latias: { - tier: "OU", + tier: "UU", }, latiasmega: { - tier: "OU", + tier: "UU", }, latios: { tier: "OU", }, latiosmega: { - tier: "OU", + tier: "(OU)", }, kyogre: { tier: "Uber", @@ -672,10 +672,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, staraptor: { - tier: "OU", + tier: "UU", }, staraptormega: { - tier: "OU", + tier: "UU", }, budew: { tier: "LC", @@ -753,22 +753,22 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, rotom: { - tier: "OU", + tier: "UU", }, rotomheat: { - tier: "OU", + tier: "UU", }, rotomwash: { tier: "OU", }, rotomfrost: { - tier: "OU", + tier: "UU", }, rotomfan: { - tier: "OU", + tier: "UU", }, rotommow: { - tier: "OU", + tier: "UU", }, heatran: { tier: "OU", @@ -780,7 +780,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, darkraimega: { - tier: "OU", + tier: "(OU)", }, tepig: { tier: "LC", @@ -804,7 +804,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, liepard: { - tier: "OU", + tier: "UU", }, pansage: { tier: "LC", @@ -828,7 +828,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, musharna: { - tier: "OU", + tier: "UU", }, drilbur: { tier: "LC", @@ -846,10 +846,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, throh: { - tier: "OU", + tier: "UU", }, sawk: { - tier: "OU", + tier: "UU", }, venipede: { tier: "LC", @@ -888,10 +888,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, cofagrigus: { - tier: "OU", + tier: "UU", }, runerigus: { - tier: "OU", + tier: "UU", }, trubbish: { tier: "LC", @@ -915,7 +915,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, amoonguss: { - tier: "OU", + tier: "UU", }, tynamo: { tier: "LC", @@ -927,7 +927,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, eelektrossmega: { - tier: "OU", + tier: "UU", }, litwick: { tier: "LC", @@ -942,7 +942,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, cryogonal: { - tier: "OU", + tier: "UU", }, stunfisk: { tier: "UU", @@ -954,19 +954,19 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, golurk: { - tier: "OU", + tier: "UU", }, golurkmega: { - tier: "OU", + tier: "UU", }, cobalion: { - tier: "OU", + tier: "UU", }, terrakion: { - tier: "OU", + tier: "UU", }, virizion: { - tier: "OU", + tier: "UU", }, keldeo: { tier: "OU", @@ -974,7 +974,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat keldeoresolute: { }, meloetta: { - tier: "OU", + tier: "UU", }, meloettapirouette: { }, @@ -996,10 +996,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, chesnaught: { - tier: "OU", + tier: "UU", }, chesnaughtmega: { - tier: "(OU)", + tier: "UU", }, fennekin: { tier: "LC", @@ -1011,7 +1011,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, delphoxmega: { - tier: "OU", + tier: "UU", }, froakie: { tier: "LC", @@ -1026,7 +1026,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, greninjamega: { - tier: "OU", + tier: "(OU)", }, bunnelby: { tier: "LC", @@ -1077,7 +1077,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, floettemega: { - tier: "OU", + tier: "UU", }, florges: { tier: "UU", @@ -1107,10 +1107,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, meowsticmmega: { - tier: "OU", + tier: "(OU)", }, meowsticfmega: { - tier: "OU", + tier: "(OU)", }, honedge: { tier: "LC", @@ -1119,7 +1119,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, aegislash: { - tier: "OU", + tier: "UU", }, aegislashblade: { }, @@ -1214,7 +1214,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, goodrahisui: { - tier: "OU", + tier: "UU", }, klefki: { tier: "UU", @@ -1247,7 +1247,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, gourgeistsuper: { - tier: "OU", + tier: "UU", }, bergmite: { tier: "LC", @@ -1274,7 +1274,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "Uber", }, zygarde10: { - tier: "OU", + tier: "UU", }, zygardecomplete: { tier: "Uber", @@ -1301,16 +1301,16 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, crabominable: { - tier: "OU", + tier: "UU", }, crabominablemega: { - tier: "OU", + tier: "UU", }, wimpod: { tier: "LC", }, golisopod: { - tier: "OU", + tier: "UU", }, golisopodmega: { tier: "OU", @@ -1319,7 +1319,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, palossand: { - tier: "OU", + tier: "UU", }, drampa: { tier: "UU", @@ -1328,7 +1328,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, mimikyu: { - tier: "OU", + tier: "UU", }, magearna: { tier: "OU", @@ -1352,7 +1352,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, meltan: { - tier: "OU", + tier: "UU", }, melmetal: { tier: "OU", @@ -1370,13 +1370,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, thievul: { - tier: "OU", + tier: "UU", }, toxel: { tier: "LC", }, toxtricity: { - tier: "OU", + tier: "UU", }, toxtricitylowkey: { }, @@ -1384,7 +1384,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, grapploct: { - tier: "OU", + tier: "UU", }, falinks: { tier: "UU", @@ -1393,27 +1393,27 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, indeedee: { - tier: "OU", + tier: "UU", }, indeedeef: { - tier: "OU", + tier: "UU", }, morpeko: { - tier: "OU", + tier: "UU", }, morpekohangry: { }, kleavor: { - tier: "OU", + tier: "UU", }, fidough: { tier: "LC", }, dachsbun: { - tier: "OU", + tier: "UU", }, squawkabilly: { - tier: "OU", + tier: "UU", }, squawkabillyblue: { }, @@ -1428,13 +1428,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, garganacl: { - tier: "OU", + tier: "UU", }, charcadet: { tier: "LC", }, armarouge: { - tier: "OU", + tier: "UU", }, ceruledge: { tier: "OU", @@ -1443,22 +1443,22 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, mabosstiff: { - tier: "OU", + tier: "UU", }, shroodle: { tier: "LC", }, grafaiai: { - tier: "OU", + tier: "UU", }, capsakid: { tier: "LC", }, scovillain: { - tier: "OU", + tier: "UU", }, scovillainmega: { - tier: "OU", + tier: "UU", }, tinkatink: { tier: "LC", @@ -1467,10 +1467,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, tinkaton: { - tier: "OU", + tier: "UU", }, cyclizar: { - tier: "OU", + tier: "UU", }, glimmet: { tier: "LC", @@ -1479,37 +1479,37 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, glimmoramega: { - tier: "OU", + tier: "(OU)", }, greavard: { tier: "LC", }, houndstone: { - tier: "OU", + tier: "UU", }, flamigo: { - tier: "OU", + tier: "UU", }, dondozo: { - tier: "OU", + tier: "UU", }, tatsugiri: { - tier: "OU", + tier: "UU", }, tatsugiridroopy: { - tier: "OU", + tier: "UU", }, tatsugiristretchy: { - tier: "OU", + tier: "UU", }, tatsugiricurlymega: { - tier: "OU", + tier: "UU", }, tatsugiridroopymega: { - tier: "OU", + tier: "UU", }, tatsugiristretchymega: { - tier: "OU", + tier: "UU", }, frigibax: { tier: "LC", @@ -1521,7 +1521,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, baxcaliburmega: { - tier: "OU", + tier: "(OU)", }, gimmighoul: { tier: "LC", diff --git a/data/mods/gen9legendsou/pokedex.ts b/data/mods/gen9legendsou/pokedex.ts index 701d79b372..507797a823 100644 --- a/data/mods/gen9legendsou/pokedex.ts +++ b/data/mods/gen9legendsou/pokedex.ts @@ -1,7 +1,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = { clefablemega: { inherit: true, - abilities: { 0: "Serene Grace" }, + abilities: { 0: "Prankster" }, }, victreebelmega: { inherit: true, @@ -22,7 +22,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, dragonitemega: { inherit: true, - abilities: { 0: "Soul-Heart" }, + abilities: { 0: "Sheer Force" }, }, meganiummega: { inherit: true, @@ -90,7 +90,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, excadrillmega: { inherit: true, - abilities: { 0: "Mold Breaker" }, + abilities: { 0: "Sand Rush" }, }, golurkmega: { inherit: true, @@ -118,7 +118,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, chesnaughtmega: { inherit: true, - abilities: { 0: "Bulletproof" }, + abilities: { 0: "Grassy Surge" }, }, delphoxmega: { inherit: true, @@ -174,7 +174,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, drampamega: { inherit: true, - abilities: { 0: "Drizzle" }, + abilities: { 0: "Adaptability" }, }, magearnamega: { inherit: true, @@ -198,7 +198,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, glimmoramega: { inherit: true, - abilities: { 0: "Rocky Payload" }, + abilities: { 0: "Levitate" }, }, tatsugiricurlymega: { inherit: true, From 0cf3933f8a0b3490a4e8754586a4de2eeb272843 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 10:29:24 -0700 Subject: [PATCH 022/139] Z-A OU: Actually implement the nerfs --- data/mods/gen9legendsou/pokedex.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/mods/gen9legendsou/pokedex.ts b/data/mods/gen9legendsou/pokedex.ts index 507797a823..398847927c 100644 --- a/data/mods/gen9legendsou/pokedex.ts +++ b/data/mods/gen9legendsou/pokedex.ts @@ -78,7 +78,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, heatranmega: { inherit: true, - abilities: { 0: "Earth Eater" }, + abilities: { 0: "Filter" }, }, darkraimega: { inherit: true, @@ -170,7 +170,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, golisopodmega: { inherit: true, - abilities: { 0: "Regenerator" }, + abilities: { 0: "Heatproof" }, }, drampamega: { inherit: true, From f2f5bb97863d8885a6a67fda778882cd3918c10d Mon Sep 17 00:00:00 2001 From: Clas <116038499+Clastia@users.noreply.github.com> Date: Thu, 1 Jan 2026 18:09:32 +0000 Subject: [PATCH 023/139] Camove Chaos: Fix Deoxys/Landorus Legality (#11660) * Camove Chaos: Fix Deoxys/Landorus Legality Fixes legalities regarding Lando-T and Deoxys-D/S * Apply suggestions from code review --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index ca438f838f..dc4e680cdd 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -739,9 +739,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard NatDex', 'Terastal Clause', '!Obtainable Moves', '!Team Preview', 'Camomons Mod', 'CFZ Clause', 'Sleep Moves Clause', 'Team Type Preview'], banlist: [ 'Aerodactyl-Mega', 'Alakazam', 'Arceus', 'Beedrill-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Charizard-Mega-Y', 'Chi-Yu', - 'Chien-Pao', 'Comfey', 'Darmanitan', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen', 'Deoxys', 'Deoxys-Attack', 'Dialga', 'Dondozo', 'Enamorus', + 'Chien-Pao', 'Comfey', 'Darmanitan', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dondozo', 'Enamorus', 'Eternatus', 'Flutter Mane', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Komala', - 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Mawile-Mega', + 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Mawile-Mega', 'Medicham-Mega', 'Melmetal', 'Metagross-Mega', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palafin', 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Regieleki', 'Reshiram', 'Salamence-Mega', 'Sceptile-Mega', 'Serperior', 'Shedinja', 'Sneasler', 'Solgaleo', 'Spectrier', 'Tapu Koko', 'Ting-Lu', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Xerneas', 'Xurkitree', 'Yveltal', 'Zacian', 'Zacian-Crowned', From 02828be7b6a21236b26486dfe0817e664435d893 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 11:31:47 -0700 Subject: [PATCH 024/139] Fix typo --- data/mods/gen9legendsou/formats-data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/gen9legendsou/formats-data.ts b/data/mods/gen9legendsou/formats-data.ts index a87360093c..f2fe733967 100644 --- a/data/mods/gen9legendsou/formats-data.ts +++ b/data/mods/gen9legendsou/formats-data.ts @@ -450,7 +450,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, blazikenmega: { - tier: "(OU)", + tier: "Uber", }, mudkip: { tier: "LC", From a77084b6d500748084c59667ffca74c4416556ef Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 1 Jan 2026 13:37:08 -0700 Subject: [PATCH 025/139] Implement January 2026 tier shifts (#11662) --- config/formats.ts | 4 +- data/formats-data.ts | 90 ++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index dc4e680cdd..7e2540f226 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -399,8 +399,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, ruleset: ['[Gen 9] LC'], banlist: [ - 'Chinchou', 'Diglett-Alola', 'Elekid', 'Foongus', 'Glimmet', 'Gothita', 'Grookey', 'Growlithe-Hisui', 'Larvesta', 'Mareanie', 'Mienfoo', - 'Mudbray', 'Pawniard', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Shroodle', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', + 'Chinchou', 'Diglett-Alola', 'Drifloon', 'Elekid', 'Foongus', 'Glimmet', 'Gothita', 'Greavard', 'Grookey', 'Growlithe-Hisui', 'Koffing', 'Mareanie', + 'Mienfoo', 'Mudbray', 'Pawniard', 'Salandit', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', 'Trapinch', 'Vullaby', 'Wingull', 'Zorua-Hisui', // LC UUBL 'Deerling', 'Minccino', diff --git a/data/formats-data.ts b/data/formats-data.ts index 983b4785cd..eb60c77824 100644 --- a/data/formats-data.ts +++ b/data/formats-data.ts @@ -496,7 +496,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = natDexTier: "RU", }, politoed: { - tier: "NUBL", + tier: "RU", doublesTier: "DUU", natDexTier: "RU", }, @@ -560,7 +560,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tentacruel: { tier: "NU", doublesTier: "(DUU)", - natDexTier: "RU", + natDexTier: "UU", }, geodude: { tier: "LC", @@ -628,7 +628,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = slowking: { tier: "UU", doublesTier: "(DUU)", - natDexTier: "RU", + natDexTier: "UU", }, slowkinggalar: { tier: "OU", @@ -646,7 +646,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = magnezone: { tier: "RU", doublesTier: "(DUU)", - natDexTier: "UU", + natDexTier: "RU", }, farfetchd: { isNonstandard: "Past", @@ -868,14 +868,14 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, chansey: { - tier: "RU", + tier: "NU", doublesTier: "NFE", natDexTier: "UU", }, blissey: { tier: "RU", doublesTier: "(DUU)", - natDexTier: "RU", + natDexTier: "UU", }, tangela: { isNonstandard: "Past", @@ -958,7 +958,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = natDexTier: "NFE", }, scizor: { - tier: "OU", + tier: "UU", doublesTier: "(DUU)", natDexTier: "UU", }, @@ -1088,7 +1088,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = natDexTier: "RU", }, espeon: { - tier: "PU", + tier: "NU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -1121,7 +1121,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = natDexTier: "NFE", }, porygonz: { - tier: "NUBL", + tier: "RU", doublesTier: "(DUU)", natDexTier: "UU", }, @@ -1478,7 +1478,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "NFE", }, dudunsparce: { - tier: "PU", + tier: "NU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -1528,7 +1528,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = heracrossmega: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "RUBL", + natDexTier: "UU", }, sneasel: { tier: "NFE", @@ -1682,7 +1682,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = natDexTier: "RU", }, suicune: { - tier: "NUBL", + tier: "RU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -1693,7 +1693,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "NFE", }, tyranitar: { - tier: "UU", + tier: "OU", doublesTier: "DOU", natDexTier: "UU", }, @@ -1763,7 +1763,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = swampertmega: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "RU", + natDexTier: "UU", }, poochyena: { tier: "LC", @@ -1877,7 +1877,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = gardevoirmega: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "UU", + natDexTier: "RU", }, gallade: { tier: "RU", @@ -1901,7 +1901,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, breloom: { - tier: "NU", + tier: "RU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -2390,7 +2390,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = salamence: { tier: "RUBL", doublesTier: "(DUU)", - natDexTier: "UU", + natDexTier: "RU", }, salamencemega: { isNonstandard: "Past", @@ -2510,7 +2510,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "NFE", }, torterra: { - tier: "PUBL", + tier: "RU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -2534,7 +2534,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = empoleon: { tier: "RU", doublesTier: "(DUU)", - natDexTier: "RU", + natDexTier: "UU", }, starly: { tier: "LC", @@ -2638,7 +2638,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, floatzel: { - tier: "ZUBL", + tier: "PU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -2764,7 +2764,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, hippowdon: { - tier: "RU", + tier: "UU", doublesTier: "DUU", natDexTier: "UU", }, @@ -3399,7 +3399,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "NFE", }, reuniclus: { - tier: "RU", + tier: "NU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -3455,7 +3455,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = amoonguss: { tier: "PU", doublesTier: "DOU", - natDexTier: "RU", + natDexTier: "UU", }, frillish: { isNonstandard: "Past", @@ -3476,7 +3476,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, galvantula: { - tier: "NU", + tier: "PU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -3593,7 +3593,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, mienshao: { - tier: "NUBL", + tier: "RU", doublesTier: "(DUU)", natDexTier: "RUBL", }, @@ -3631,7 +3631,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "NFE", }, braviary: { - tier: "ZU", + tier: "NU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -3646,7 +3646,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = mandibuzz: { tier: "UU", doublesTier: "(DUU)", - natDexTier: "RU", + natDexTier: "UU", }, heatmor: { isNonstandard: "Past", @@ -3700,12 +3700,12 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tornadustherian: { tier: "OU", doublesTier: "(DUU)", - natDexTier: "UUBL", + natDexTier: "OU", }, thundurus: { tier: "RUBL", doublesTier: "DUU", - natDexTier: "RUBL", + natDexTier: "UU", }, thundurustherian: { tier: "UU", @@ -3734,7 +3734,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = }, kyurem: { tier: "OU", - doublesTier: "DUU", + doublesTier: "DOU", natDexTier: "OU", }, kyuremblack: { @@ -3849,7 +3849,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = }, talonflame: { tier: "RU", - doublesTier: "DUU", + doublesTier: "(DUU)", natDexTier: "RU", }, scatterbug: { @@ -4076,7 +4076,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "NFE", }, goodra: { - tier: "PU", + tier: "NU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -4240,8 +4240,8 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = }, primarina: { tier: "OU", - doublesTier: "DUU", - natDexTier: "RU", + doublesTier: "DOU", + natDexTier: "UU", }, pikipek: { tier: "LC", @@ -4317,7 +4317,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "NFE", }, ribombee: { - tier: "NU", + tier: "RU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -4460,7 +4460,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = golisopod: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "RU", + natDexTier: "UU", }, golisopodmega: { isNonstandard: "Future", @@ -4709,7 +4709,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = kartana: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "OU", + natDexTier: "UUBL", }, guzzlord: { isNonstandard: "Past", @@ -4777,7 +4777,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = zeraora: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "UU", + natDexTier: "RU", }, zeraoramega: { isNonstandard: "Future", @@ -4801,7 +4801,9 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, thwackey: { - tier: "NFE", + tier: "NU", + doublesTier: "NFE", + natDexTier: "NFE", }, rillaboom: { tier: "OU", @@ -5281,7 +5283,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = }, enamorus: { tier: "OU", - doublesTier: "(DUU)", + doublesTier: "DUU", natDexTier: "RUBL", }, enamorustherian: { @@ -5349,7 +5351,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = lokix: { tier: "UU", doublesTier: "(DUU)", - natDexTier: "RU", + natDexTier: "UU", }, rellor: { tier: "LC", @@ -5554,7 +5556,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = glimmora: { tier: "OU", doublesTier: "DOU", - natDexTier: "UU", + natDexTier: "RU", }, glimmoramega: { isNonstandard: "Future", @@ -5564,7 +5566,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tier: "LC", }, grafaiai: { - tier: "ZU", + tier: "NU", doublesTier: "(DUU)", natDexTier: "RU", }, @@ -5609,7 +5611,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = natDexTier: "OU", }, brutebonnet: { - tier: "PU", + tier: "ZU", doublesTier: "DUU", natDexTier: "RU", }, From df32a5f5bb7c2212386600bffebe5383b5bd711d Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:20:47 -0500 Subject: [PATCH 026/139] Bio Mech Mons: Fix validator (#11665) * fix changing abils while transformed * fix infinity moveslot pokemon * fix validation * beef up banned element smuggling * right * fix dupes * lint * Lint * fix trace and air balloon * AAAAAAAAAAAAAAAAAAAAA * oops * Update moves.ts * aaaa --- config/formats.ts | 37 ++++++++++++-- data/mods/biomechmons/abilities.ts | 77 +++++++++++++++++++++++++++++- data/mods/biomechmons/items.ts | 4 +- data/mods/biomechmons/moves.ts | 4 +- data/mods/biomechmons/scripts.ts | 6 +-- 5 files changed, 115 insertions(+), 13 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 7e2540f226..4891699f76 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -579,27 +579,51 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ) { return this.validateSet(set, teamHas); } - const allThings = [set.ability, set.item, ...set.moves]; + const allThings = [set.ability, set.item, ...set.moves] + .map(e => e.replace(/^(item|move|ability):?/i, '')).filter(e => e.length); + for (const thing of allThings) { + if (!dex.moves.get(thing).exists && !dex.abilities.get(thing).exists && !dex.items.get(thing).exists) { + return [`${thing} does not exist.`]; + } + } if ( allThings.some(y => effectFunctions.some(x => x.get(y).isNonstandard && !this.ruleTable.has(`+pokemontag:${this.toID(x.get(y).isNonstandard)}`))) ) { return this.validateSet(set, teamHas); } - const moves = allThings.filter(thing => thing !== 'metronome' && dex.moves.get(thing).exists); + const moves = allThings.filter(thing => this.toID(thing) !== 'metronome' && dex.moves.get(thing).exists); + for (const m of moves) { + const moveName = this.dex.moves.get(m).name; + if (this.ruleTable.isBanned(`move:${this.toID(moveName)}`)) return [`${set.species}'s move ${moveName} is banned.`]; + } const abilities = allThings.filter(thing => dex.abilities.get(thing).exists); + for (const a of abilities) { + const abilName = this.dex.abilities.get(a).name; + if (this.ruleTable.isBanned(`ability:${this.toID(abilName)}`)) { + return [`${set.species}'s ability ${abilName} is banned.`]; + } + } const items = allThings.filter(thing => dex.items.get(thing).exists); + for (const i of items) { + const itemName = this.dex.items.get(i).name; + if (this.ruleTable.isBanned(`item:${this.toID(itemName)}`)) return [`${set.species}'s item ${itemName} is banned.`]; + } + const setHas: { [k: string]: true } = {}; + for (const thing of allThings) { + if (setHas[this.toID(thing)]) return [`${set.species} has multiple copies of ${thing}.`]; + setHas[this.toID(thing)] = true; + } const normalAbility = set.ability; if (!abilities.length) { set.ability = 'noability'; } else { set.ability = this.toID(abilities[0]); } - if ( - !Object.values(species.abilities).map(this.toID).includes(this.toID(set.ability)) && + if (abilities.some(abil => !Object.values(species.abilities).map(this.toID).includes(this.toID(abil))) && this.ruleTable.has('obtainableabilities') ) { - if (set.ability !== 'noability') return [`${set.ability} is not a valid ability for ${set.species}.`]; + if (set.ability !== 'noability') return [`${set.species} has illegal abilities.`]; } if (requiredAbility && !abilities.map(this.toID).includes(this.toID(requiredAbility))) { return [`${set.species} requires ${requiredAbility} on its set.`]; @@ -607,6 +631,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ if (!moves.length) { return [`${set.species} requires at least one move.`]; } + if (set.moves.length > this.ruleTable.maxMoveCount) { + return [`${set.name} has ${set.moves.length} moves, which is more than the limit of ${this.ruleTable.maxMoveCount}.`]; + } const normalMoves = set.moves; set.moves = [moves[0]]; if ( diff --git a/data/mods/biomechmons/abilities.ts b/data/mods/biomechmons/abilities.ts index 09b55fd3c8..62b6ffd416 100644 --- a/data/mods/biomechmons/abilities.ts +++ b/data/mods/biomechmons/abilities.ts @@ -52,7 +52,7 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa if (!this.dex.abilities.get(target.ability).exists) { const isItem = (target.m.scrambled.items as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); if (isItem >= 0) { - target.removeVolatile('item:' + this.toID(pokemon.m.scrambled.items[isItem].thing)); + target.removeVolatile('item:' + this.toID(target.m.scrambled.items[isItem].thing)); } else if ((target.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { const isMove = (target.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); const indexOfMove = target.moveSlots.findIndex(m => this.toID(target.m.scrambled.moves[isMove].thing) === m.id); @@ -128,4 +128,79 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa } }, }, + trace: { + inherit: true, + onStart(pokemon) { + this.effectState.seek = true; + // n.b. only affects Hackmons + // interaction with No Ability is complicated: https://www.smogon.com/forums/threads/pokemon-sun-moon-battle-mechanics-research.3586701/page-76#post-7790209 + if (pokemon.adjacentFoes().some(foeActive => foeActive.ability === 'noability')) { + this.effectState.seek = false; + } + // interaction with Ability Shield is similar to No Ability + if (pokemon.hasItem('Ability Shield') && this.toID(pokemon.ability) === 'trace') { + this.add('-block', pokemon, 'item: Ability Shield'); + this.effectState.seek = false; + } + if (this.effectState.seek) { + this.singleEvent('Update', this.effect, this.effectState, pokemon); + } + }, + onUpdate(pokemon) { + if (!this.effectState.seek) return; + + const possibleTargets = pokemon.adjacentFoes().filter( + target => !target.getAbility().flags['notrace'] && target.ability !== 'noability' + ); + if (!possibleTargets.length) return; + + const target = this.sample(possibleTargets); + const ability = target.getAbility(); + if (this.toID(pokemon.item) === 'trace') { + this.add('-ability', pokemon, ability.name, 'Trace'); + pokemon.setItem(ability.name); + return; + } else if (pokemon.volatiles['ability:trace']?.inSlot === 'Move') { + if (this.dex.abilities.get(ability.name).exists) { + pokemon.removeVolatile('ability:trace'); + pokemon.m.scrambled.abilities.splice( + (pokemon.m.scrambled.abilities as { thing: string, inSlot: string }[]).findIndex(e => + this.toID(e.thing) === 'trace' && e.inSlot === 'Move'), 1); + this.add('-ability', pokemon, ability.name, 'Trace'); + pokemon.addVolatile(`ability:${ability.id}`); + pokemon.m.scrambled.abilities.push({ thing: ability.name, inSlot: 'Move' }); + } else if (this.dex.items.get(ability.name).exists) { + pokemon.removeVolatile('ability:trace'); + pokemon.m.scrambled.abilities.splice( + (pokemon.m.scrambled.abilities as { thing: string, inSlot: string }[]).findIndex(e => + this.toID(e.thing) === 'trace' && e.inSlot === 'Move'), 1); + this.add('-ability', pokemon, ability.name, 'Trace'); + pokemon.addVolatile(`item:${ability.id}`); + pokemon.m.scrambled.items.push({ thing: this.dex.items.get(ability.name).name, inSlot: 'Move' }); + } else { + const move = this.dex.moves.get(ability.name); + if (move.exists) { + pokemon.removeVolatile('ability:trace'); + pokemon.m.scrambled.abilities.splice( + (pokemon.m.scrambled.abilities as { thing: string, inSlot: string }[]).findIndex(e => + this.toID(e.thing) === 'trace' && e.inSlot === 'Move'), 1); + this.add('-ability', pokemon, move.name, 'Trace'); + const newMove = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + used: false, + }; + pokemon.baseMoveSlots.push(newMove); + pokemon.moveSlots.push(newMove); + } + } + return; + } + pokemon.setAbility(ability, target); + }, + }, }; diff --git a/data/mods/biomechmons/items.ts b/data/mods/biomechmons/items.ts index 412160497c..8d1af87e5e 100644 --- a/data/mods/biomechmons/items.ts +++ b/data/mods/biomechmons/items.ts @@ -12,7 +12,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { if (isBMM) { target.removeVolatile('item:airballoon'); target.m.scrambled.items.splice((target.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => - e.thing === 'airballoon' && e.inSlot === isBMM), 1); + this.toID(e.thing) === 'airballoon' && e.inSlot === isBMM), 1); if (isBMM === 'Ability') target.setAbility('No Ability'); } } @@ -30,7 +30,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { if (isBMM) { target.removeVolatile('item:airballoon'); target.m.scrambled.items.splice((target.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => - e.thing === 'airballoon' && e.inSlot === isBMM), 1); + this.toID(e.thing) === 'airballoon' && e.inSlot === isBMM), 1); if (isBMM === 'Ability') target.setAbility('No Ability'); } } diff --git a/data/mods/biomechmons/moves.ts b/data/mods/biomechmons/moves.ts index 8d1e2b7abb..a2b6665cda 100644 --- a/data/mods/biomechmons/moves.ts +++ b/data/mods/biomechmons/moves.ts @@ -198,11 +198,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { if (move.flags['nosketch'] || move.isZ || move.isMax) return false; const sketchIndex = source.moves.indexOf('sketch'); if (sketchIndex < 0) return false; - if (toID(source.item) === 'sketch') { + if (this.toID(source.item) === 'sketch') { source.setItem(move.name); this.add('-activate', source, 'move: Sketch', move.name); return; - } else if (toID(source.ability) === 'sketch') { + } else if (this.toID(source.ability) === 'sketch') { source.setAbility(move.name); this.add('-activate', source, 'move: Sketch', move.name); return; diff --git a/data/mods/biomechmons/scripts.ts b/data/mods/biomechmons/scripts.ts index 315646ad3f..6d9fdd3aba 100644 --- a/data/mods/biomechmons/scripts.ts +++ b/data/mods/biomechmons/scripts.ts @@ -117,7 +117,7 @@ export const Scripts: ModdedBattleScriptsData = { } this.ability = ability.id; // ability changes are permanent in BioMechMons - if (!isTransform) this.baseAbility = ability.id; + if (!isTransform && !this.transformed) this.baseAbility = ability.id; this.abilityState = this.battle.initEffectState({ id: ability.id, target: this }); if (sourceEffect && !isFromFormeChange && !isTransform) { if (source) { @@ -181,8 +181,8 @@ export const Scripts: ModdedBattleScriptsData = { if (!source) source = this; if (this.battle.gen <= 4) { if (source.itemKnockedOff) return false; - if (toID(this.ability) === 'multitype') return false; - if (toID(source.ability) === 'multitype') return false; + if (this.battle.toID(this.ability) === 'multitype') return false; + if (this.battle.toID(source.ability) === 'multitype') return false; } const item = this.getItem(); if (this.battle.runEvent('TakeItem', this, source, null, item)) { From 51eae1b871aa970b81fedf58e07e1d926cbd62ed Mon Sep 17 00:00:00 2001 From: Atlas <109841009+EyeOfAtlas@users.noreply.github.com> Date: Fri, 2 Jan 2026 12:06:40 +1000 Subject: [PATCH 027/139] Bio Mech Mons: Fix desc (#11667) --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 4891699f76..d52b6ddfba 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -547,7 +547,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, { name: "[Gen 9] Bio Mech Mons", - desc: `Items, abilites, and moves a Pokémon has access to can be put in any item/move/ability slot.`, + desc: `Items, abilities, and moves a Pokémon has access to can be put in any item/move/ability slot.`, mod: 'biomechmons', // searchShow: false, ruleset: ['Standard OMs', 'Sleep Moves Clause'], From cec47727674d167ba0b16568b69297150c32a5bd Mon Sep 17 00:00:00 2001 From: Zachary Perlmutter Date: Thu, 1 Jan 2026 18:07:27 -0800 Subject: [PATCH 028/139] National Dex Ubers UU: Implement tier shifts (#11664) Deoxys-Speed and Melmetal drop, Alomomola and Kingambit rise https://www.smogon.com/forums/threads/national-dex-ubers-uu-october-shifts-108-bans-109.3742166/page-5#-january-2026-shifts --- config/formats.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index d52b6ddfba..b31513c2c9 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2995,8 +2995,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, ruleset: ['[Gen 9] National Dex Ubers'], banlist: [ - 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal', - 'Hatterene', 'Ho-Oh', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Melmetal', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal', + 'Alomomola', 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal', + 'Hatterene', 'Ho-Oh', 'Kingambit', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal', 'Zacian-Crowned', 'Zygarde-50%', // UUBL 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon', From d71eae4fc31bbe99f2458f1a07ea068c008e7e5f Mon Sep 17 00:00:00 2001 From: livid washed <115855253+livid-washed@users.noreply.github.com> Date: Fri, 2 Jan 2026 13:08:17 +1100 Subject: [PATCH 029/139] Remove banner advertising RBTT player signups (#11663) --- config/formats.ts | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index b31513c2c9..1963c3cc66 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -54,9 +54,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['PotD', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 9] Unrated Random Battle", @@ -199,9 +196,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['PotD', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod', 'Sleep Clause Mod'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 9] Doubles OU", @@ -3301,9 +3295,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen9', team: 'randomBSSFactory', ruleset: ['Flat Rules', 'VGC Timer', 'Best of = 3'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, // Randomized Metas @@ -3319,9 +3310,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'randomroulette', team: 'random', bestOfDefault: true, - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 9] Monkey's Paw Random Battle", @@ -3491,9 +3479,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'randomBSSFactory', bestOfDefault: true, ruleset: ['Flat Rules', 'VGC Timer'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 9] Draft Factory", @@ -3543,9 +3528,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ bestOfDefault: true, ruleset: ['HP Percentage Mod', 'Cancel Mod'], banlist: ['CAP', 'Custom', 'Future', 'LGPE', 'MissingNo.', 'Pikachu-Cosplay', 'Pichu-Spiky-eared', 'Xerneas-Neutral'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 9] Doubles Hackmons Cup", @@ -3743,9 +3725,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['PotD', 'Obtainable', 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 8] Random Doubles Battle", @@ -3839,9 +3818,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 7] Battle Factory", @@ -3888,9 +3864,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 6] Battle Factory", @@ -3910,9 +3883,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 4] Random Battle", @@ -3920,9 +3890,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 3] Random Battle", @@ -3930,9 +3897,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Standard'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 2] Random Battle", @@ -3940,9 +3904,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Standard'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 1] Random Battle", @@ -3950,9 +3911,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, ruleset: ['Standard'], - onBegin() { - this.add(`raw|
Player Signups for Random Battles Team Tournament IX are now open! If you enjoy Random Battles, want the chance to rep a team's mascot with a custom avatar, and are raring to compete at the highest level, sign up now and battle with the best of the best!
`); - }, }, { name: "[Gen 1] Challenge Cup", From 190940fc58efb875c7d7e2677e8f422b8c6826b4 Mon Sep 17 00:00:00 2001 From: ACakeWearingAHat <45981036+ACakeWearingAHat@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:08:32 -0600 Subject: [PATCH 030/139] Random Battles hotfix: prevent Weakness Policy on Emboar, Arbok, Seviper (#11666) wow we're actually using counter.get('physicalsetup') for the first time! --- data/random-battles/gen9/teams.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index ceb9b1d576..4eaaa10da4 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -1362,7 +1362,7 @@ export class RandomTeams { ); return (scarfReqs && this.randomChance(1, 2)) ? 'Choice Scarf' : 'Choice Specs'; } - if (counter.get('speedsetup') && role === 'Bulky Setup') return 'Weakness Policy'; + if (counter.get('speedsetup') && !counter.get('physicalsetup') && role === 'Bulky Setup') return 'Weakness Policy'; if ( !counter.get('Status') && !['Fast Attacker', 'Wallbreaker', 'Tera Blast user'].includes(role) From 7fabf3ab4bf898c34400595429eedee8adacce66 Mon Sep 17 00:00:00 2001 From: Yoshiblaze <53023564+Yoshiblaze@users.noreply.github.com> Date: Thu, 1 Jan 2026 21:30:50 -0500 Subject: [PATCH 031/139] Add New Pet Mod of the Month, Scootopia Random Battle, and Remove Previous PMOTM (#11651) * Scootopia: Initial Commit * Scootopia: Fix errors * Scootopia: Fix most new errors * one more * Update and fix * Avoid double bans * more duplicate bans * fix name credit * Scootopia: Add Sets and proper Generation of Super Types * Fix new errors * fix error perchance * perchance. * forgot to re-fix these * Update data/mods/scootopiav2/rulesets.ts * Update data/mods/scootopiav2/rulesets.ts --------- Co-authored-by: Meijer,L. (Lucas) Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 88 +- data/mods/monsterhunter/abilities.ts | 1795 -- data/mods/monsterhunter/conditions.ts | 370 - data/mods/monsterhunter/formats-data.ts | 785 - data/mods/monsterhunter/items.ts | 483 - data/mods/monsterhunter/learnsets.ts | 13957 ---------------- data/mods/monsterhunter/moves.ts | 3081 ---- data/mods/monsterhunter/pokedex.ts | 2857 ---- data/mods/monsterhunter/rulesets.ts | 69 - data/mods/monsterhunter/scripts.ts | 14 - data/mods/scootopiav2/abilities.ts | 135 + data/mods/scootopiav2/conditions.ts | 67 + data/mods/scootopiav2/formats-data.ts | 218 + data/mods/scootopiav2/items.ts | 88 + data/mods/scootopiav2/learnsets.ts | 4473 +++++ data/mods/scootopiav2/moves.ts | 1284 ++ data/mods/scootopiav2/pokedex.ts | 551 + data/mods/scootopiav2/rulesets.ts | 38 + data/mods/scootopiav2/scripts.ts | 3 + data/mods/scootopiav2/typechart.ts | 530 + .../monsterhunter/random-sets.json | 3301 ---- .../scootopiav2/random-sets.json | 856 + .../{monsterhunter => scootopiav2}/teams.ts | 43 +- 23 files changed, 8309 insertions(+), 26777 deletions(-) delete mode 100644 data/mods/monsterhunter/abilities.ts delete mode 100644 data/mods/monsterhunter/conditions.ts delete mode 100644 data/mods/monsterhunter/formats-data.ts delete mode 100644 data/mods/monsterhunter/items.ts delete mode 100644 data/mods/monsterhunter/learnsets.ts delete mode 100644 data/mods/monsterhunter/moves.ts delete mode 100644 data/mods/monsterhunter/pokedex.ts delete mode 100644 data/mods/monsterhunter/rulesets.ts delete mode 100644 data/mods/monsterhunter/scripts.ts create mode 100644 data/mods/scootopiav2/abilities.ts create mode 100644 data/mods/scootopiav2/conditions.ts create mode 100644 data/mods/scootopiav2/formats-data.ts create mode 100644 data/mods/scootopiav2/items.ts create mode 100644 data/mods/scootopiav2/learnsets.ts create mode 100644 data/mods/scootopiav2/moves.ts create mode 100644 data/mods/scootopiav2/pokedex.ts create mode 100644 data/mods/scootopiav2/rulesets.ts create mode 100644 data/mods/scootopiav2/scripts.ts create mode 100644 data/mods/scootopiav2/typechart.ts delete mode 100644 data/random-battles/monsterhunter/random-sets.json create mode 100644 data/random-battles/scootopiav2/random-sets.json rename data/random-battles/{monsterhunter => scootopiav2}/teams.ts (96%) diff --git a/config/formats.ts b/config/formats.ts index 1963c3cc66..0cc811a1e1 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3164,24 +3164,21 @@ export const Formats: import('../sim/dex-formats').FormatList = [ section: "Pet Mods", }, { - name: "[Gen 9] Monster Hunter Random Battle", - desc: `A Gen 9 solomod where each Pokemon is based on a monster from the Monster Hunter franchise.`, - mod: 'monsterhunter', - team: 'randomMHS', + name: "[Gen 9] Scootopia Random Battle", + desc: `A Gen 9 Fakemon micrometa featuring the Super Types mechanic, granting 1 Pokemon per team an additional and powerful new typing.`, + mod: 'scootopiav2', + team: 'randomSC', ruleset: [ 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod', - 'Terastal Clause', 'Data Preview', 'Sprite Viewer', 'Mega Data Mod', 'Status Mod', + 'Terastal Clause', 'Super Type Moves Rule', 'Data Preview', 'Sprite Viewer', ], onBegin() { - this.add(`raw|
Need help with all of the new moves, abilities, and wacky stuff?
Then make sure to check out the MHS Wikia or use /dt!
`); - this.add('-message', `Welcome to Monster Hunter Showdown!`); - this.add('-message', `Coded by KnivesMK, it reimagines the Monsters from Monster Hunter as Competitive Pokemon!`); - this.add('-message', `Community Discord can be found here:`); - this.add('-message', `https://discord.gg/JjjRGVrEvc`); - this.add('-message', `Format Wikia can be found here:`); - this.add('-message', `https://tinyurl.com/MonHunShow`); - this.add('-message', `Special thanks to EggEggEgg for most of the Sprites, and Kestis for the Icons!`); - this.add('-message', `(Monster Hunter Showdown is in no way officially affiliated with the Monster Hunter games or CAPCOM and is purely a fan project.)`); + this.add(`raw|
Need help with all of the new moves, abilities, and wacky stuff?
Then make sure to check out the Scootopia Spreadsheet or use /dt!
`); + this.add('-message', `Welcome to Scootopia!`); + this.add('-message', `This is a fakemon micrometa created by Scoopapa, featuring the Super Types mechanic!`); + this.add('-message', `Super Types are powerful additional types that a Pokemon can gain by holding a specific Super Type Orb!`); + this.add('-message', `You can find our thread and metagame resources here:`); + this.add('-message', `https://www.smogon.com/forums/threads/3742131/`); }, onSwitchInPriority: 100, onSwitchIn(pokemon) { @@ -3193,55 +3190,32 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, }, { - name: "[Gen 9] Monster Hunter Showdown OU", // Roomtours - desc: `A Gen 9 solomod where each Pokemon is based on a monster from the Monster Hunter franchise.`, - mod: 'monsterhunter', + name: "[Gen 9] Scootopia", // Roomtours + desc: `A Gen 9 Fakemon micrometa featuring the Super Types mechanic, granting 1 Pokemon per team an additional and powerful new typing.`, + mod: 'scootopiav2', searchShow: false, - ruleset: ['Standard NatDex', 'Data Preview', 'Mega Data Mod', 'Status Mod', 'Terastal Clause', 'Sprite Viewer'], + ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Super Type Moves Rule', 'Data Preview', 'Sprite Viewer'], banlist: [ - 'All Pokemon', 'Normalium Z', 'Fairium Z', 'Fightinium Z', 'Firium Z', 'Flyinium Z', 'Darkinium Z', 'Dragonium Z', - 'Buginium Z', 'Waterium Z', 'Electrium Z', 'Ghostium Z', 'Grassium Z', 'Groundium Z', 'Icium Z', 'Poisonium Z', - 'Psychium Z', 'Rockium Z', 'Steelium Z', 'Shed Tail', 'Baton Pass', + 'All Pokemon', 'Crystal Heart', 'Wild Heart', + 'King\'s Rock', 'Razor Fang', 'Baton Pass', ], unbanlist: [ - 'Acidinus', 'Agnaktor-EX', 'Ahtal-Ka', 'Alatreon', 'Amatsu', 'Arbitrellian', - 'Arkveld', 'Ash-Shan Lung', 'Auroracanth', 'Blackveil Hazak', 'Blue Kutku', 'Brachydios', 'Ceadeus', - 'Chameleos', 'Chaotic Gore', 'Dah\'ren Mohran', 'Dalamadur', 'Deviljho-Starving', 'Diablos', 'Dire Miralis', - 'Doomtrellian', 'Duremudira', 'Eruzerion', 'Espinas', 'Estrellian', 'Fatalis', 'Flaminas', 'Gaismagorm', - 'Gammoth', 'Glavenus', 'Glowstrax', 'Gogmazios', 'Goldeus', 'Goldthian', 'Goss Harag', 'Greencuga', 'Gureadomosu', - 'Hallowed Mohran', 'Harudomerugu', 'Inagami', 'Inferonis', 'Jhen Mohran', 'Jin Dahaad', 'Jyuratodus', 'Kirin', - 'Kulve Taroth', 'Kushala Daora', 'Landgiacrus', 'Lao-Shan Lung', 'Lucacuga', 'Magmadron', 'Magnamalo', 'Malzeno', - 'Nakarkos', 'Namielle', 'Nargacuga', 'Narwa', 'Nef-Garmat', 'Nergigante', 'Odibatorasu', 'Oltura', 'Oltura-Larval', - 'Oroshirin', 'Palepinas', 'Primozeno', 'Rajang', 'Rathian', 'Rey Dau', 'Rushala Daora', 'Safi\'jiiva', 'Sandrioth', - 'Seregios', 'Shagaru Magala', 'Shahmadur', 'Shantien', 'Shara Ishvalda', 'Shen Gaoren', 'Silvalos', 'Tartaronis', - 'Teostra', 'Tigrex', 'Ukanlos', 'Unknown', 'Uth Duna', 'Valstrax', 'Velkhana', 'Vizutsune', 'Xeno\'jiiva', 'Xu Wu', - 'Yama Kurai', 'Yama Tsukami', 'Zoh Shia', 'Zorah Magdaros', 'Agnaktor', 'Ajarakan', 'Akantor', 'Akura Vashimu', - 'Almudron', 'Anjanath', 'Astalos', 'Azurelos', 'Balahara', 'Barioth', 'Basarios-Sandstone', 'Bazelgeuse', 'Bishaten', - 'Blackblos', 'Blackvios', 'Coral-Pukei', 'Daimyo Hermitaur', 'Deviljho', 'Disufiroa', 'Disufiroa-Sol', 'Doshaguma', - 'Duramboros', 'Ebogaron', 'Fuljanath', 'Garangolm', 'Glanaktor', 'Gore Magala', 'Gravios', 'Great Izuchi', 'Greensioth', - 'Gypceros', 'Ibushi', 'Ivogiacrus', 'Kulu-Ya-Ku', 'Lagiacrus', 'Lala Barina', 'Legiana', 'Lunagaron', 'Lunastra', - 'Malfestio', 'Mizutsune', 'Molgrex', 'Monoblos', 'Najarala', 'Nightlumu', 'Nu Udra', 'Odogaron', 'Orangaten', 'Paolumu', - 'Pinkthian', 'Plesioth', 'Pukei-Pukei', 'Pyre-Kadaki', 'Radobaan', 'Rakna-Kadaki', 'Rathalos', 'Rompopolo', - 'Rustramboros', 'Seltas Queen', 'Shogun Ceanataur', 'Stygiogre', 'Terrataur', 'Tetranadon', 'Tzitzi-Ya-Ku', - 'Uragaan', 'Vaal Hazak', 'Whiteblos', 'Yian Garuga', 'Yian Kutku', 'Zamtrios', 'Zinogre', 'Zinogre-Howling', 'Aknosom', - 'Arzuros', 'Balenox', 'Banbaro', 'Barroth', 'Basarios', 'Beotodus', 'Blangonga', 'Bulldrome', 'Cephadrome', - 'Chatacabra', 'Congalala', 'Crysarios', 'Dodogama', 'Emgalala', 'Gendrome', 'Giadrome', 'Gigginox', 'Gobul', - 'Great Baggi', 'Great Girros', 'Great Jaggi', 'Great Jagras', 'Great Maccao', 'Great Wroggi', 'Hirabami', - 'Hypnocatrice', 'Iodrome', 'Kecha Wacha', 'Khezu', 'King Shakalaka', 'Lagombi', 'Lavasioth', 'Nerscylla', - 'Nibelsnarf', 'Palamute', 'Palico', 'Pokaradon', 'Purple Ludroth', 'Quematrice', 'Qurupeco', 'Redzu', 'Royal Ludroth', - 'Seltas', 'Shroudcylla', 'Somnacanth', 'Spiribird', 'Spiribird-Orange', 'Spiribird-Red', 'Spiribird-Yellow', - 'Tetsucabra', 'Tobi-Kadachi', 'Velocidrome', 'Vespoid Queen', 'Volvidon', + 'Arbrella', 'Krachiten', 'Scalaron', 'Rantler', 'Woolora', 'Albatrygon', 'Orchile', + 'Embuck', 'Cindoe', 'Cobracotta', 'Minillow', 'Crossont', 'Torgeist', 'Platypad', 'Lumoth', + 'Aurorowl', 'Carapex', 'Dojodo', 'Nunopod', 'Zeploom', 'Brawnkey', 'Salamalix', 'Cinnastar', + 'MuabBoa', 'Sturgard', 'Harzodia', 'Cyllindrake', 'Kodokai', 'Electangle', 'Dolphena', 'Soleron', + 'Soleron-Awakened', 'Jaegorm', 'Jaegorm-Collective', 'Elemadillo', 'Axolacred', 'Roscenti', + 'Blunderbusk', 'Barracoth', 'Jamborai', 'Dracoil', 'Celespirit', 'Noxtrice', 'Avastar', + 'Faerenheit', 'Cellsius', 'Kelven', 'Salaos', 'Morndos', 'Pythos', 'Corundell', 'Quadringo', + 'Saphor', 'Fenreil', 'Efflor', 'Flocura', 'Flocura-Nexus', ], onBegin() { - this.add(`raw|
Need help with all of the new moves, abilities, and wacky stuff?
Then make sure to check out the MHS Wikia or use /dt!
`); - this.add('-message', `Welcome to Monster Hunter Showdown!`); - this.add('-message', `Coded by KnivesMK, it reimagines the Monsters from Monster Hunter as Competitive Pokemon!`); - this.add('-message', `Community Discord can be found here:`); - this.add('-message', `https://discord.gg/JjjRGVrEvc`); - this.add('-message', `Format Wikia can be found here:`); - this.add('-message', `https://tinyurl.com/MonHunShow`); - this.add('-message', `Special thanks to EggEggEgg for most of the Sprites, and Kestis for the Icons!`); - this.add('-message', `(Monster Hunter Showdown is in no way officially affiliated with the Monster Hunter games or CAPCOM and is purely a fan project.)`); + this.add(`raw|
Need help with all of the new moves, abilities, and wacky stuff?
Then make sure to check out the Scootopia Spreadsheet or use /dt!
`); + this.add('-message', `Welcome to Scootopia!`); + this.add('-message', `This is a fakemon micrometa created by Scoopapa, featuring the Super Types mechanic!`); + this.add('-message', `Super Types are powerful additional types that a Pokemon can gain by holding a specific Super Type Orb!`); + this.add('-message', `You can find our thread and metagame resources here:`); + this.add('-message', `https://www.smogon.com/forums/threads/3742131/`); }, onSwitchInPriority: 100, onSwitchIn(pokemon) { diff --git a/data/mods/monsterhunter/abilities.ts b/data/mods/monsterhunter/abilities.ts deleted file mode 100644 index 1f4a70d4cc..0000000000 --- a/data/mods/monsterhunter/abilities.ts +++ /dev/null @@ -1,1795 +0,0 @@ -export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = { - absolutezero: { - onStart(source) { - this.field.setWeather('absolutezero'); - }, - onAnySetWeather(target, source, weather) { - const strongWeathers = ['desolateland', 'primordialsea', 'deltastream', 'dustdevil', 'absolutezero']; - if (this.field.getWeather().id === 'absolutezero' && !strongWeathers.includes(weather.id)) return false; - }, - onEnd(pokemon) { - if (this.field.weatherState.source !== pokemon) return; - for (const target of this.getAllActive()) { - if (target === pokemon) continue; - if (target.hasAbility('absolutezero')) { - this.field.weatherState.source = target; - return; - } - } - this.field.clearWeather(); - }, - flags: {}, - name: "Absolute Zero", - shortDesc: "On switch-in: Sets Primordial Weather, Absolute Zero (Snow + -25% Speed + 1/16 chip, except user).", - desc: "On switch-in, the weather becomes Absolute Zero, which includes all the effects of snow, reduces the speed of Pokemon on the field by 25%, and deals 1/16th chip to all Pokemon on the field, sans user. This weather remains in effect until this Ability is no longer active for any Pokemon, or the weather is changed by the Primordial Sea, Delta Stream, Desolate Land, or Dust Devil abilities.", - }, - aggravation: { - onDamage(damage, target, source, effect) { - if ( - effect.effectType === "Move" && - !effect.multihit && - !(effect.hasSheerForce && source.hasAbility('sheerforce')) - ) { - this.effectState.checkedBerserk = false; - } else { - this.effectState.checkedBerserk = true; - } - }, - onTryEatItem(item) { - const healingItems = [ - 'aguavberry', 'enigmaberry', 'figyberry', 'iapapaberry', 'magoberry', 'sitrusberry', 'wikiberry', 'oranberry', 'berryjuice', - ]; - if (healingItems.includes(item.id)) { - return this.effectState.checkedBerserk; - } - return true; - }, - onAfterMoveSecondary(target, source, move) { - this.effectState.checkedBerserk = true; - if (!source || source === target || !target.hp || !move.totalDamage) return; - const lastAttackedBy = target.getLastAttackedBy(); - if (!lastAttackedBy) return; - const damage = move.multihit && !move.smartTarget ? move.totalDamage : lastAttackedBy.damage; - if (target.hp <= target.maxhp / 2 && target.hp + damage > target.maxhp / 2) { - this.boost({ atk: 1 }, target, target); - } - }, - flags: {}, - name: "Aggravation", - shortDesc: "When ≤50% HP; +1 ATK.", - }, - airbag: { - onEffectiveness(typeMod, target, type, move) { - if (!target || move.category !== 'Physical') return; - if (typeMod > 0) { - return 0; - } - }, - name: "Airbag", - shortDesc: "Physical super effective moves deal neutral damage.", - }, - ambush: { - onModifyPriority(priority, pokemon, target, move) { - if (move.flags['slicing'] && pokemon.hp === pokemon.maxhp) { - return priority + 1; - } - }, - onModifyCritRatio(critRatio, source, target, move) { - if (move.flags['slicing'] && source.hp <= source.maxhp / 3) { - return 5; - } - }, - name: "Ambush", - shortDesc: "Slicing moves: +1 priority at full HP, always crit at 1/3 HP or less.", - }, - bewitchingtail: { - onModifyAtkPriority: 5, - onModifyAtk(atk, pokemon, target, move) { - if (target && target.status === 'slp' || pokemon.ignoringAbility()) { - this.debug('Bewitching Tail boost'); - return this.chainModify(1.2); - } - }, - onModifySpAPriority: 5, - onModifySpA(atk, pokemon, target, move) { - if (target && target.status === 'slp' || pokemon.ignoringAbility()) { - this.debug('Bewitching Tail boost'); - return this.chainModify(1.2); - } - }, - onModifySpe(this: Battle, spe: number, pokemon: Pokemon) { - if (!this.activeTarget || this.activeTarget.status !== 'slp' || pokemon.ignoringAbility()) return; - this.debug('Bewitching Tail boost'); - return this.chainModify(1.5); - }, - onSourceModifyDamage(damage, source, target, move) { - if (source.status === 'slp') { - return this.chainModify(0.833); - } - }, - flags: {}, - name: "Bewitching Tail", - shortDesc: "Targeting drowsy foes: Atk/SpA/Spe 1.2x | From drowsy foes: Damage 0.83x", - }, - blindrage: { - onDamagingHit(damage, target, source, move) { - if (!move || !target) return; - if (this.dex.getEffectiveness(move.type, target) > 0) { - this.boost({ atk: 1, spa: 1 }, target, target, null /* , this.dex.abilities.get('blindrage') */); - this.add('-ability', target, 'Blind Rage'); - this.add('-message', target.name + "flew into a blind rage!"); - } - }, - name: "Blind Rage", - shortDesc: "When hit by a super-effective attack: Atk & SpA +1.", - }, - butterflystar: { - onModifyMovePriority: 1, - onBeforeMove(pokemon, target, move) { - if ((pokemon.species.id === 'estrellian' || pokemon.species.id === 'estrellianwinged') && move.type === 'Bug') { - this.add('-ability', pokemon, 'Butterfly Star'); - this.add('-message', `${pokemon.name} is transforming into its Armored Form!`); - pokemon.formeChange('estrellianarmored', this.effect, true); - } - if ((pokemon.species.id === 'estrellian' || pokemon.species.id === 'estrellianarmored') && move.type === 'Flying') { - this.add('-ability', pokemon, 'Butterfly Star'); - this.add('-message', `${pokemon.name} is transforming into its Winged Form!`); - pokemon.formeChange('estrellianwinged', this.effect, true); - } - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - shortDesc: "Before using a Bug move: Armored Form. Before using a Flying move: Winged Form.", - name: "Butterfly Star", - }, - centrifuge: { - onTryHit(target, source, move) { - if (target !== source && move.type === 'Ground') { - if (!this.boost({ spa: 1 })) { - this.add('-immune', target, '[from] ability: Centrifuge'); - } - return null; - } - }, - onAnyRedirectTarget(target, source, source2, move) { - if (move.type !== 'Ground' || ['firepledge', 'grasspledge', 'waterpledge'].includes(move.id)) return; - const redirectTarget = ['randomNormal', 'adjacentFoe'].includes(move.target) ? 'normal' : move.target; - if (this.validTarget(this.effectState.target, source, redirectTarget)) { - if (move.smartTarget) move.smartTarget = false; - return this.effectState.target; - } - }, - flags: { breakable: 1 }, - name: "Centrifuge", - shortDesc: "Ground moves: Drawn to user, immune, SpA +1", - }, - corrosiveclaws: { - onAfterMoveSecondary(target, source, move) { // fix later - if (!target || !source || source === target) return; - if (!move || move.category === 'Status') return; - if (!target.hp) return; - - const lastAttackedBy = target.getLastAttackedBy(); - if (!lastAttackedBy) return; - - const damage = move.multihit ? (move.totalDamage || lastAttackedBy.damage) : lastAttackedBy.damage; - if (target.hp <= target.maxhp / 2 && target.hp + damage > target.maxhp / 2) { - if (target.trySetStatus('tox', source)) { - this.add('-ability', source, 'Corrosive Claws'); - } - } - }, - name: "Corrosive Claws", - desc: "When this Pokémon brings an opponent to 50% HP or less with an attacking move, it badly poisons that opponent.", - shortDesc: "Targets dropped to ≤50% HP by attacks: Badly Poisoned", - }, - corruptedpoison: { - onSourceHit(target, source, move) { - if (!target || !source || source === target) return; - if (!move || move.category === 'Status' || move.type !== 'Poison') return; - if (target.getMoveHitData(move).typeMod < 0) return; - if (!target.hp) return; - if (move.hit && move.hit > 1) return; - - // Block effect if target has Covert Cloak - if (target.hasItem('covertcloak')) { - this.add('-block', target, 'item: Covert Cloak', '[ability] Corrupted Poison'); - return; - } - - if (move.category === 'Physical') { - if (target.boosts.def > -6) { - this.boost({ def: -1 }, target, source, null /* , this.dex.abilities.get('corruptedpoison') */); - this.add('-ability', source, 'Corrupted Poison'); - } - } else if (move.category === 'Special') { - if (target.boosts.spd > -6) { - this.boost({ spd: -1 }, target, source, null /* , this.dex.abilities.get('corruptedpoison') */); - this.add('-ability', source, 'Corrupted Poison'); - } - } - }, - name: "Corrupted Poison", - desc: "When this Pokémon hits a foe with a non-resisted Poison-type attack, that foe's corresponding defense is lowered by 1 stage, unless the foe is holding a Covert Cloak.", - shortDesc: "Non-resisted Poison Moves: Lower targets's Def/SpD by -1 (blocked by Covert Cloak).", - }, - crystalblight: { - onResidualOrder: 26, - onResidual(pokemon) { - if (!pokemon.hp) return; - for (const target of pokemon.foes()) { - if (target.status === 'par') { - this.damage(target.baseMaxhp / 16, target, pokemon); - target.addVolatile('fatigue'); - } - } - }, - flags: {}, - name: "Crystalblight", - desc: "At the end of each turn, opposing Pokémon that are paralyzed take 1/16 of their max HP as damage and become Fatigued.", - shortDesc: "Foes w/ PAR: Lose 1/16 HP & gain Fatigue each turn", - }, - debris: { - onDamagingHit(damage, target, source, move) { - const side = source.isAlly(target) ? source.side.foe : source.side; - const Spikes = side.sideConditions['spikes']; - if (move.category === 'Physical' && (!Spikes || Spikes.layers < 3)) { - this.add('-activate', target, 'ability: Debris'); - side.addSideCondition('spikes', target); - } - }, - flags: {}, - name: "Debris", - shortDesc: "After taking a Physical attack: Sets Spikes on opposing side", - }, - densecortex: { - onTryHit(pokemon, target, move) { - if (move.flags['slicing']) { - this.add('-immune', pokemon, '[from] ability: Dense Cortex'); - return null; - } - }, - flags: { breakable: 1 }, - name: "Dense Cortex", - shortDesc: "Immune to slicing moves.", - }, - destructionstar: { - onSourceAfterFaint(length, target, source, effect) { - if (effect?.effectType !== 'Move') return; - if (source.species.id === 'arbitrellian' && source.hp && !source.transformed && source.side.foePokemonLeft()) { - this.add('-ability', source, 'Destruction Star'); - source.formeChange('arbitrelliancharged', this.effect, true); - } - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - name: "Destruction Star", - shortDesc: "After KOing a foe: enters Charged-Forme.", - }, - disasterstar: { - onSourceAfterFaint(length, target, source, effect) { - if (effect?.effectType !== 'Move') return; - if (source.species.id === 'doomtrellian' && source.hp && !source.transformed && source.side.foePokemonLeft()) { - this.add('-ability', source, 'Disaster Star'); - source.formeChange('doomtrelliancharged', this.effect, true); - } - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - name: "Disaster Star", - shortDesc: "After KOing a foe: enters Charged-Forme.", - }, - direspikescales: { - onEffectiveness(typeMod, target, type, move) { - if (!target || target.species.name !== 'Dalamadur') return; - if (this.effectState.resisted) return -1; // all hits of multi-hit move should be not very effective - if (move.category === 'Status' || move.id === 'struggle') return; - if (!target.runImmunity(move.type)) return; // immunity has priority - if (target.hp < target.maxhp) return; - - this.add('-activate', target, 'ability: Direspike Scales'); - this.effectState.resisted = true; - return -1; - }, - onAnyAfterMove() { - this.effectState.resisted = false; - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, breakable: 1 }, - name: "Direspike Scales", - shortDesc: "If at full HP: Incoming attacks deal 0.5x damage unless immune", - }, - dragoneater: { - onTryHit(target, source, move) { - if (target !== source && move.type === 'Dragon') { - if (!this.heal(target.baseMaxhp / 4)) { - this.add('-immune', target, '[from] ability: Dragon Eater'); - } - return null; - } - }, - flags: { breakable: 1 }, - name: "Dragon Eater", - shortDesc: "Hit by a Dragon move: Immunity, Heals 25% max HP.", - }, - dragonpoint: { - onDamagingHit(damage, target, source, move) { - if (this.checkMoveMakesContact(move, source, target)) { - if (this.randomChance(3, 10)) { - source.trySetStatus('dragonblight', target); - } - } - }, - flags: {}, - name: "Dragon Point", - shortDesc: "When hit by contact moves: 30% chance to inflict Dragonblight", - }, - dragonvein: { - onSourceAfterFaint(length, target, source, effect) { - if (effect && effect.effectType === 'Move') { - this.heal(source.baseMaxhp / 4); - } - }, - name: "Dragonvein", - desc: "When it KOs an opponent with a direct move, it recovers 25% of its max HP.", - shortDesc: "Heals 25% HP on KO.", - }, - dukesbayonet: { - onModifyMove(move) { - if (move.flags['contact']) { - delete move.flags['protect']; - (move as any).armorPiercer = true; - } - }, - onModifyDamage(damage, source, target, move) { - // If the move was marked armorPiercer and the target is under Protect - if ((move as any).armorPiercer && move.flags?.contact && target.volatiles['protect']) { - this.debug('Duke\'s Bayonet: reduced damage to 25% through Protect'); - return this.chainModify(0.25); - } - }, - flags: {}, - name: "Duke's Bayonet", - shortDesc: "Contact moves: Bypass Protect, deal 25% damage", - }, - dulledblades: { - onSourceHit(target, source, move) { - if (!move || !target) return; - if (move.flags['slicing']) { - this.boost({ def: 1 }, source, source, null /* , this.dex.abilities.get('dulledblades') */); - this.add('-ability', source, 'Dulled Blades'); - } - }, - onSourceAfterSubDamage(damage, target, source, move) { - if (!move || !target) return; - if (move.flags['slicing']) { - this.boost({ def: 1 }, source, source, null /* , this.dex.abilities.get('dulledblades') */); - this.add('-ability', source, 'Dulled Blades'); - } - }, - name: "Dulled Blades", - shortDesc: "Slicing moves: +1 Defense", - }, - dustdevil: { - onStart(source) { - this.field.setWeather('dustdevil'); - }, - onAnySetWeather(target, source, weather) { - const strongWeathers = ['desolateland', 'primordialsea', 'deltastream', 'dustdevil', 'absolutezero']; - if (this.field.getWeather().id === 'dustdevil' && !strongWeathers.includes(weather.id)) return false; - }, - onEnd(pokemon) { - if (this.field.weatherState.source !== pokemon) return; - for (const target of this.getAllActive()) { - if (target === pokemon) continue; - if (target.hasAbility('dustdevil')) { - this.field.weatherState.source = target; - return; - } - } - this.field.clearWeather(); - }, - flags: {}, - name: "Dust Devil", - shortDesc: "On switch-in: Sets Primordial Weather, Dust Devil (Sandstorm + Perfect Rock Accuracy + 1/16 chip, except user).", - desc: "On switch-in, the weather becomes Desolate Land, which includes all the effects of Sandstorm, removes accuracy check for rock moves, and deals 1/16th chip to all Pokemon on the field, sans user. This weather remains in effect until this Ability is no longer active for any Pokemon, or the weather is changed by the Primordial Sea, Delta Stream, Desolate Land, or Absolute Zero abilities.", - }, - empressthrone: { - onResidualOrder: 29, - onResidual(pokemon) { - if (pokemon.baseSpecies.baseSpecies !== 'Ahtal-Ka' || pokemon.transformed || !pokemon.hp) return; - if (pokemon.species.id === 'ahtalneset' || pokemon.hp > pokemon.maxhp / 2) return; - this.add('-activate', pokemon, 'ability: Empress Throne'); - pokemon.formeChange('Ahtal-Neset', this.effect, true); - pokemon.baseMaxhp = Math.floor(Math.floor( - 2 * pokemon.species.baseStats['hp'] + pokemon.set.ivs['hp'] + Math.floor(pokemon.set.evs['hp'] / 4) + 100 - ) * pokemon.level / 100 + 10); - const newMaxHP = pokemon.volatiles['dynamax'] ? (2 * pokemon.baseMaxhp) : pokemon.baseMaxhp; - pokemon.hp = newMaxHP - (pokemon.maxhp - pokemon.hp); - pokemon.maxhp = newMaxHP; - this.add('-heal', pokemon, pokemon.getHealth, '[silent]'); - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - name: "Empress Throne", - shortDesc: "If Ahtal-Ka, becomes Ahtal-Neset if at 1/2 max HP or less at end of turn.", - }, - escaton: { - onPrepareHit(source, target, move) { - if (move.hasBounced || move.flags['futuremove'] || move.sourceEffect === 'snatch') return; - const type = move.type; - if (type && type !== '???' && source.getTypes().join() !== type) { - if (!source.setType(type)) return; - this.add('-start', source, 'typechange', type, '[from] ability: Escaton'); - } - }, - flags: {}, - name: "Escaton", - shortDesc: "Before using a move: Type changes to match move; repeats per switch-in", - }, - ferventscales: { - onDamage(damage, target, source, effect) { - // Applies only to non-move damage (residual sources like weather, status, hazards, abilities) - if (effect && effect.effectType !== 'Move') { - if (effect.effectType === 'Ability') { - this.add('-activate', target, 'ability: Fervent Scales'); - } - return this.chainModify(0.5); - } - }, - name: "Fervent Scales", - shortDesc: "This Pokemon takes halved damage from residual sources.", - }, - foolproof: { - onTryHit(target, source, move) { - if (!move) return; - if (target !== source && move.flags['sound']) { - this.add('-immune', target, '[from] ability: Foolproof'); - return null; - } - if (move.flags['bullet']) { - this.add('-immune', target, '[from] ability: Foolproof'); - return null; - } - }, - onAllyTryHitSide(target, source, move) { - if (move.flags['sound']) { - this.add('-immune', this.effectState.target, '[from] ability: Foolproof'); - return null; - } - }, - flags: { breakable: 1 }, - name: "Foolproof", - shortDesc: "Soundproof + Bulletproof", - }, - frostnip: { - onBasePower(basePower, attacker, defender, move) { - // Boost power if the target is frostbitten (frozen) - if (defender?.status === 'frz') { - this.debug('Frostnip boost'); - return this.chainModify(1.3); - } - }, - name: "Frostnip", - shortDesc: "Against frostbitten foes: Moves have 1.3x power", - }, - frozencalamity: { - onStart(pokemon) { - const target = pokemon.side.foe.active[pokemon.side.foe.active.length - 1 - pokemon.position]; - if (target.side.totalFainted) { - this.add('-activate', pokemon, 'ability: Frozen Calamity'); - const fallen = Math.min(target.side.totalFainted, 5); - this.add('-start', pokemon, `fallen${fallen}`, '[silent]'); - this.effectState.fallen = fallen; - } - }, - onResidual(pokemon) { - this.add('-end', pokemon, `fallen${this.effectState.fallen}`, '[silent]'); - const target = pokemon.side.foe.active[pokemon.side.foe.active.length - 1 - pokemon.position]; - if (target.side.totalFainted) { - this.add('-activate', pokemon, 'ability: Frozen Calamity'); - const fallen = Math.min(target.side.totalFainted, 5); - this.add('-start', pokemon, `fallen${fallen}`, '[silent]'); - this.effectState.fallen = fallen; - } - }, - onEnd(pokemon) { - this.add('-end', pokemon, `fallen${this.effectState.fallen}`, '[silent]'); - }, - onBasePowerPriority: 21, - onBasePower(basePower, attacker, defender, move) { - if (this.effectState.fallen && move.type === 'Ice') { - const powMod = [4096, 4300, 4505, 4710, 4915, 5120]; - this.debug(`Frozen Calamity boost: ${powMod[this.effectState.fallen]}/4096`); - return this.chainModify([powMod[this.effectState.fallen], 4096]); - } - }, - flags: {}, - name: "Frozen Calamity", - shortDesc: "For each fainted foe: Ice-type power +5%.", - }, - generalist: { - onBasePowerPriority: 23, - onBasePower(basePower, pokemon, target, move) { - if (!pokemon.hasType(move.type)) { - this.debug('Generalist boost'); - return this.chainModify(1.3); - } - }, - name: "Generalist", - shortDesc: "Non-STAB moves: Power is 1.3x", - }, - geminicore: { - onChargeMove(pokemon, target, move) { - this.attrLastMove('[still]'); - this.add('-message', `${pokemon.name} drew energy from its core!`); - this.add('-anim', pokemon, 'Cosmic Power', pokemon); - this.add('-anim', pokemon, move.name, target); - return false; - }, - onUpdate(pokemon) { - if (pokemon.volatiles['mustrecharge']) { - pokemon.removeVolatile('mustrecharge'); - this.add('-message', `${pokemon.name} drew energy from its core!`); - this.add('-anim', pokemon, 'Cosmic Power', pokemon); - } - }, - onBeforeMovePriority: 11, - onBeforeMove(pokemon) { - if (pokemon.volatiles['mustrecharge']) { - pokemon.removeVolatile('mustrecharge'); - this.add('-message', `${pokemon.name} drew energy from its core!`); - this.add('-anim', pokemon, 'Cosmic Power', pokemon); - } - }, - name: "Gemini Core", - desc: "This Pokémon ignores charging and recharging turns on its moves.", - shortDesc: "Ignores charge and recharge turns.", - flags: {}, - }, - gravedrum: { - onModifySpe(spe, pokemon) { - if (pokemon.adjacentFoes().some(foe => foe?.status === 'brn' || foe?.volatiles['blastblight'])) { - this.debug('Gravedrum Speed boost'); - return this.chainModify(2); - } - }, - flags: {}, - name: "Gravedrum", - shortDesc: "Speed doubled if any adjacent foe has BRN or Blast.", - }, - heatsink: { - onTryHit(target, source, move) { - if (target !== source && move.type === 'Fire') { - if (!this.heal(target.baseMaxhp / 4)) { - this.add('-immune', target, '[from] ability: Heat Sink'); - } - return null; - } - }, - flags: { breakable: 1 }, - name: "Heat Sink", - shortDesc: "When hit by Fire moves: Immune and heals 25% Max HP.", - }, - howlingthunder: { - onModifyAtkPriority: 5, - onModifyAtk(atk, pokemon) { - if (pokemon.volatiles['charge']) { - this.add('-anim', pokemon, 'Charge', pokemon); - this.add('-message', `${pokemon.name} is brimming with a Howling Thunder!`); - return this.chainModify(2.0); - } - }, - onModifySpePriority: 5, - onModifySpe(spe, pokemon) { - if (pokemon.volatiles['charge']) { - return this.chainModify(1.5); - } - }, - flags: {}, - name: "Howling Thunder", - desc: "When this Pokémon is under the effect of Charge, its Attack is doubled and its Speed is multiplied by 1.5x.", - shortDesc: "When under Charge: Attack is 2x, Speed is 1.5x", - }, - icebreaker: { - onBasePowerPriority: 21, - onBasePower(basePower, attacker, defender, move) { - if (['snow', 'hail', 'absolutezero'].includes(attacker.effectiveWeather())) { - this.debug('Ice Breaker boost'); - return this.chainModify([0x14CD, 0x1000]); // 1.3x modifier - } - }, - name: "Ice Breaker", - shortDesc: "Under Snow: Attacks have 1.3x power; immune to Snow damage", - flags: {}, - }, - icearmor: { - onDamagingHit(damage, target, source, move) { - if (move.category === 'Physical' && target.species.id === 'zamtrios') { - this.add('-ability', target, 'Ice-Armor'); - this.add('-message', `Zamtrios is transforming!`); - target.formeChange('zamtriosiced', this.effect, true); - } - }, - onStart(pokemon) { - if (this.field.isWeather(['hail', 'snow', 'absolutezero']) && pokemon.species.id === 'zamtrios') { - this.add('-ability', pokemon, 'Ice-Armor'); - this.add('-message', `Zamtrios is transforming!`); - pokemon.formeChange('zamtriosiced', this.effect, true); - } - }, - onWeatherChange(pokemon, source, sourceEffect) { - // snow/hail resuming because Cloud Nine/Air Lock ended does not trigger Ice Face - if ((sourceEffect as Ability)?.suppressWeather) return; - if (!pokemon.hp) return; - if (this.field.isWeather(['hail', 'snow', 'absolutezero']) && pokemon.species.id === 'zamtrios') { - this.add('-ability', pokemon, 'Ice-Armor'); - this.add('-message', `Zamtrios is transforming!`); - pokemon.formeChange('zamtriosiced', this.effect, true); - } - }, - flags: { - failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1, notransform: 1, - }, - name: "Ice-Armor", - shortDesc: "Hit by a PHYS. Attack or Under Snow; Transform into Zamtrios-Iced", - }, - ignite: { - onModifyTypePriority: -1, - onModifyType(move, pokemon) { - const noModifyType = [ - 'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball', - ]; - if (move.type === 'Normal' && !noModifyType.includes(move.id) && !(move.isZ && move.category !== 'Status')) { - move.type = 'Fire'; - (move as any).igniteBoosted = true; - this.add('-activate', pokemon, 'ability: Ignite'); - } - }, - onBasePowerPriority: 23, - onBasePower(basePower, pokemon, target, move) { - if ((move as any).igniteBoosted) { - this.debug('Ignite boost'); - return this.chainModify([0x1333, 0x1000]); - } - }, - name: "Ignite", - shortDesc: "When using Normal-type moves: Become Fire-type with 1.2x power", - }, - incandescent: { - onModifyAtkPriority: 5, - onModifyAtk(atk, attacker, defender, move) { - if (move.type === 'Fire') { - this.debug('Incandescent Boost'); - return this.chainModify(1.5); - } - }, - onModifySpAPriority: 5, - onModifySpA(atk, attacker, defender, move) { - if (move.type === 'Fire') { - this.debug('Incandescent Boost'); - return this.chainModify(1.5); - } - }, - onTryHit(target, source, move) { - if (move.type === 'Fire' && target !== source) { - this.add('-immune', target, '[from] ability: Incandescent'); - return null; - } - }, - flags: { breakable: 1 }, - name: "Incandescent", - shortDesc: "User gains Fire-type STAB and Fire-Type Immunity", - }, - insectarmor: { - onModifyAtkPriority: 5, - onModifyAtk(atk, attacker, defender, move) { - if (move.type === 'Bug') { - this.debug('Insect Armor boost'); - return this.chainModify(1.5); - } - }, - onModifySpAPriority: 5, - onModifySpA(atk, attacker, defender, move) { - if (move.type === 'Bug') { - this.debug('Insect Armor boost'); - return this.chainModify(1.5); - } - }, - onSourceModifyDamage(damage, source, target, move) { - if (['Fighting', 'Grass', 'Ground'].includes(move.type)) { - this.debug('Insect Armor resistance'); - this.add('-activate', target, 'ability: Insect Armor'); - return this.chainModify(0.5); - } - }, - name: "Insect Armor", - shortDesc: "User gains Bug-type STAB & Resistances", - }, - itembag: { - onResidualOrder: 26, - onResidualSubOrder: 1, - onResidual(pokemon) { - if (!pokemon.hp || pokemon.item) return; - const itemList = [ - 'leftovers', 'sitrusberry', 'lumberry', 'figyberry', - 'choiceband', 'choicespecs', 'choicescarf', - 'flameorb', 'frostorb', 'toxicorb', - 'lightball', 'ironball', 'rockyhelmet', 'heavydutyboots', - ]; - const itemMade = this.sample(itemList); - pokemon.setItem(itemMade); - this.add('-item', pokemon, pokemon.getItem(), '[from] ability: Itembag'); - this.add('-activate', pokemon, 'ability: Itembag'); - }, - name: "Itembag", - shortDesc: "End of turn: If no item, user gains a random item.", - }, - maddragon: { - onModifyAtkPriority: 5, - onModifyAtk(atk, attacker, defender, move) { - if (move.type === 'Dragon') { - this.debug('Mad Dragon boost'); - return this.chainModify(1.5); - } - }, - onModifySpAPriority: 5, - onModifySpA(atk, attacker, defender, move) { - if (move.type === 'Dragon') { - this.debug('Mad Dragon boost'); - return this.chainModify(1.5); - } - }, - onSourceModifyDamage(damage, source, target, move) { - if (['Fire', 'Water', 'Electric', 'Grass'].includes(move.type)) { - this.debug('Mad Dragon resistance'); - this.add('-activate', target, 'ability: Mad Dragon'); - return this.chainModify(0.5); - } - }, - flags: { breakable: 1 }, - name: "Mad Dragon", - shortDesc: "User gains Dragon-type STAB & Resistances.", - }, - megiddosgift: { - onBeforeMovePriority: 0.5, - onBeforeMove(pokemon, target, move) { - if (move.type === 'Fire') { - this.field.setWeather('sunnyday', pokemon, this.effect); - } else if (move.type === 'Water') { - this.field.setWeather('raindance', pokemon, this.effect); - } - }, - name: "Megiddo's Gift", - shortDesc: "Before using Fire/Water moves: Sets Sunny Day or Rain Dance", - }, - mountaineer: { - onDamage(damage, target, source, effect) { - if (effect && effect.id === 'stealthrock') { - this.add('-immune', target, '[from] ability: Mountaineer'); - return false; - } - }, - onTryHit(target, source, move) { - if (move.type === 'Rock' && target.activeTurns === 0) { - this.add('-immune', target, '[from] ability: Mountaineer'); - return null; - } - }, - shortDesc: "1st turn this ability is active: Immune to Rock-type attacks and Stealth Rock.", - flags: { breakable: 1 }, - name: "Mountaineer", - rating: 3, - num: -2, - }, - mightywall: { - flags: {}, - onSourceModifyDamage(damage, source, target, move) { - if (!target.activeTurns) { - this.debug('Mighty Wall weaken'); - this.add('-activate', target, 'ability: Mighty Wall'); - return this.chainModify(0.5); - } - }, - name: "Mighty Wall", - shortDesc: "On switch-in: This Pokémon takes 0.5x damage from attacks.", - }, - mucusveil: { - onDamagingHitOrder: 3, - onDamagingHit(damage, target, source, move) { - if (this.checkMoveMakesContact(move, source, target)) { - this.add('-activate', target, 'ability: Mucus Veil'); - const reaction = this.dex.getActiveMove('soak'); - // reaction.noreact = true; - this.actions.useMove(reaction, target, { target: source }); - } - }, - flags: {}, - name: "Mucus Veil", - shortDesc: "When hit by contact moves: User retaliates with Soak.", - }, - oceanicveil: { - onResidualOrder: 10, - onResidual(pokemon) { - const heal = pokemon.maxhp / 16; - this.heal(heal, pokemon, pokemon); - this.add('-ability', pokemon, 'Oceanic Veil'); - }, - flags: { breakable: 1 }, - name: "Oceanic Veil", - shortDesc: "Heals 1/16 max HP each turn.", - }, - oilmucus: { - onTryHit(target, source, move) { - if (target !== source && move.type === 'Fire') { - this.add('-activate', target, 'ability: Oilmucus'); - if (!this.heal(target.baseMaxhp / 4)) { - this.add('-immune', target, '[from] ability: Oilmucus'); - } - return null; - } - }, - onFoeBasePowerPriority: 17, - onFoeBasePower(basePower, attacker, defender, move) { - if (this.effectState.target !== defender) return; - if (move.type === 'Water') { - this.add('-activate', defender, 'ability: Oilmucus'); - return this.chainModify(1.25); - } - }, - onWeather(target, source, effect) { - if (target.hasItem('utilityumbrella')) return; - if (effect.id === 'sunnyday' || effect.id === 'desolateland') { - this.add('-activate', target, 'ability: Oilmucus'); - this.heal(target.baseMaxhp / 8); - } else if (effect.id === 'raindance' || effect.id === 'primordialsea') { - this.add('-activate', target, 'ability: Oilmucus'); - this.damage(target.baseMaxhp / 8, target, target); - } - }, - flags: { breakable: 1 }, - name: "Oilmucus", - shortDesc: "This Pokemon is healed 1/4 by Fire, 1/8 by Sun; is hurt 1.25x by Water, 1/8 by Rain.", - }, - oilslick: { - onStart(pokemon) { - let activated = false; - for (const target of pokemon.adjacentFoes()) { - if (!activated) { - this.add('-ability', pokemon, 'Oilslick', 'boost'); - activated = true; - } - if (target.volatiles['substitute']) { - this.add('-immune', target); - } else { - this.boost({ spe: -1 }, target, pokemon, null, true); - } - } - }, - flags: {}, - name: "Oilslick", - shortDesc: "On switch-in: Lowers the Speed of foes by -1.", - }, - overload: { - flags: {}, - onModifyMove(move) { - if (move.type === 'Dragon' && move.category !== 'Status') { - move.recoil = [1, 4]; // 25% recoil of damage dealt - } - }, - onBasePowerPriority: 5, - onBasePower(basePower, attacker, defender, move) { - if (move.type === 'Dragon') { - this.debug('Overload boost'); - this.add('-activate', attacker, 'ability: Overload'); - return this.chainModify(1.4); - } - }, - name: "Overload", - shortDesc: "When using Dragon-type moves: 1.4x damage; recoil 25% of damage dealt.", - }, - pathogenic: { - onDamagingHit(damage, target, source, move) { - const sourceAbility = source.getAbility(); - if (sourceAbility.flags['cantsuppress'] || sourceAbility.id === 'pathogenic') { - return; - } - if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) { - const oldAbility = source.setAbility('pathogenic', target); - if (oldAbility) { - this.add('-activate', target, 'ability: Pathogenic', this.dex.abilities.get(oldAbility).name, `[of] ${source}`); - this.add('-message', `${source.name} has been infected by the pathogen!`); - } - } - }, - onResidualOrder: 5, - onResidualSubOrder: 4, - onResidual(pokemon) { - if (pokemon.hasType('Poison') || pokemon.baseSpecies.name === 'Blackveil Hazak') { - this.debug('Immune to Pathogenic'); - } else { - this.add('-ability', pokemon, 'Pathogenic'); - this.add('-message', `${pokemon.name} is ravaged by the pathogen!`); - this.damage(pokemon.baseMaxhp / 8, pokemon, pokemon); - } - }, - flags: {}, - name: "Pathogenic", - shortDesc: "Hit by contact moves: Attacker's ability becomes Pathogenic; non-Poison Pokémon lose 1/8 HP per turn.", - }, - perforating: { - onModifyMovePriority: -5, - onModifyMove(move) { - if (!move.ignoreImmunity) move.ignoreImmunity = {}; - if (move.ignoreImmunity !== true) { - move.ignoreImmunity['Poison'] = true; - } - }, - name: "Perforating", - shortDesc: "When using Poison moves: Ignore Steel-type immunities.", - }, - permafrost: { - onStart(pokemon) { - this.add('-activate', pokemon, 'ability: Permafrost'); - this.add('-message', `${pokemon.name}'s freezing aura turns water into ice!`); - }, - onDamagingHit(damage, target, source, move) { - if (move.type === 'Ice') { - this.add('-activate', target, 'ability: Permafrost'); - this.boost({ def: 1 }, target); - } - }, - onFoeBeforeMovePriority: 13, - onFoeBeforeMove(attacker, defender, move) { - attacker.addVolatile('permafrost'); - }, - condition: { - onModifyTypePriority: -1, - onModifyType(move, pokemon) { - if (move.type === 'Water') { - this.add('-activate', pokemon, 'ability: Permafrost'); - move.type = 'Ice'; - } - }, - onAfterMove(pokemon) { - pokemon.removeVolatile('permafrost'); - }, - }, - flags: { breakable: 1 }, - name: "Permafrost", - shortDesc: "When targeted by Water moves: They become Ice-Type, 1+ Def.", - }, - plow: { - onTryHit(target, source, move) { - if (target !== source && move.type === 'Ground') { - this.add('-activate', target, 'ability: Plow'); - if (!this.heal(target.baseMaxhp / 4)) { - this.add('-immune', target, '[from] ability: Plow'); - } - return null; - } - }, - onDamage(damage, target, source, effect) { - if (effect && (effect.id === 'stealthrock' || effect.id === 'spikes')) { - this.add('-activate', target, 'ability: Plow'); - this.heal(damage); - return false; - } - }, - flags: { breakable: 1 }, - name: "Plow", - shortDesc: "Hit by Ground moves: Immunity, Heals 25% HP | Heals from Spikes/Stealth Rock.", - }, - protopyre: { - onStart(pokemon) { - this.singleEvent('WeatherChange', this.effect, this.effectState, pokemon); - }, - onWeatherChange(pokemon) { - // Protosynthesis is not affected by Utility Umbrella - if (this.field.isWeather('sunnyday')) { - pokemon.addVolatile('protopyre'); - } else if (!pokemon.volatiles['protopyre']?.fromBooster) { - pokemon.removeVolatile('protopyre'); - } - }, - onUpdate(pokemon) { - if ((pokemon.hp <= pokemon.maxhp / 3) || this.field.isWeather('sunnyday')) { - pokemon.addVolatile('protopyre'); - } else if (!pokemon.volatiles['protopyre']?.fromBooster) { - pokemon.removeVolatile('protopyre'); - } - }, - onEnd(pokemon) { - delete pokemon.volatiles['protopyre']; - this.add('-end', pokemon, 'Protopyre', '[silent]'); - }, - condition: { - noCopy: true, - onStart(pokemon, source, effect) { - if (effect?.name === 'Booster Energy') { - this.effectState.fromBooster = true; - this.add('-activate', pokemon, 'ability: Protopyre', '[fromitem]'); - } else { - this.add('-activate', pokemon, 'ability: Protopyre'); - } - this.effectState.bestStat = pokemon.getBestStat(false, true); - this.add('-start', pokemon, 'protosynthesis' + this.effectState.bestStat); - }, - onModifyAtkPriority: 5, - onModifyAtk(atk, pokemon) { - if (this.effectState.bestStat !== 'atk' || pokemon.ignoringAbility()) return; - this.debug('Protopyre atk boost'); - return this.chainModify([5325, 4096]); - }, - onModifyDefPriority: 6, - onModifyDef(def, pokemon) { - if (this.effectState.bestStat !== 'def' || pokemon.ignoringAbility()) return; - this.debug('Protopyre def boost'); - return this.chainModify([5325, 4096]); - }, - onModifySpAPriority: 5, - onModifySpA(spa, pokemon) { - if (this.effectState.bestStat !== 'spa' || pokemon.ignoringAbility()) return; - this.debug('Protopyre spa boost'); - return this.chainModify([5325, 4096]); - }, - onModifySpDPriority: 6, - onModifySpD(spd, pokemon) { - if (this.effectState.bestStat !== 'spd' || pokemon.ignoringAbility()) return; - this.debug('Protopyre spd boost'); - return this.chainModify([5325, 4096]); - }, - onModifySpe(spe, pokemon) { - if (this.effectState.bestStat !== 'spe' || pokemon.ignoringAbility()) return; - this.debug('Protopyre spe boost'); - return this.chainModify(1.5); - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Protosynthesis'); - }, - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 }, - name: "Protopyre", - shortDesc: "Under Sunny Day/Holding Booster Energyor/Red HP: Highest stat is 1.3x; 1.5x if Speed.", - }, - puffup: { - onDamagingHit(damage, target, source, move) { - if (move.category === 'Special' && target.species.id === 'zamtrios') { - this.add('-ability', target, 'Puff-Up'); - this.add('-message', `Zamtrios is transforming!`); - target.formeChange('zamtriospuffed', this.effect, true); - } - }, - onStart(pokemon) { - if (this.field.isWeather(['rain']) && pokemon.species.id === 'zamtrios') { - this.add('-ability', pokemon, 'Puff-Up'); - this.add('-message', `Zamtrios is transforming!`); - pokemon.formeChange('zamtriospuffed', this.effect, true); - } - }, - flags: { - failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1, notransform: 1, - }, - name: "Puff-Up", - shortDesc: "Hit by a SPEC. Attack/Under Rain; Transform into Zamtrios-Puffed", - }, - pungency: { - onDamagingHit(damage, target, source, move) { - if (this.checkMoveMakesContact(move, source, target)) { - if (this.randomChance(3, 10)) { - source.addVolatile('stench', this.effectState.target); - } - } - }, - flags: {}, - shortDesc: "Hit by Contact moves: 30% chance of inflicting Stench on attack.", - name: "Pungency", - }, - ragingrebel: { - onAllyBasePowerPriority: 22, - onAllyBasePower(basePower, attacker, defender, move) { - let rebel = false; - for (const pokemon of this.getAllActive()) { - let i: BoostID; - for (i in pokemon.boosts) { - if (pokemon.boosts[i] < 0) { - rebel = true; - break; - } - } - if (rebel) break; - } - if (rebel) { - this.debug('Raging Rebel boost'); - this.add('-activate', attacker, 'ability: Raging Rebel'); - return this.chainModify(1.3); - } - }, - onTryBoost(boost, target, source, effect) { - // Prevent Attack drops from applying to this Pokémon - if (boost.atk && boost.atk < 0) { - delete boost.atk; - if (!(effect as ActiveMove)?.secondaries) { - this.add("-fail", target, "unboost", "Attack", "[from] ability: Raging Rebel", `[of] ${target}`); - } - } - }, - flags: {}, - name: "Raging Rebel", - shortDesc: "This Pokémon & allies: 1.3x damage when any foe has stat drops; Attack can't be lowered.", - }, - reactivecore: { - onDamagingHit(damage, target, source, move) { - if (move.type === 'Fire') { - if (!target.volatiles['warmed']) { - target.removeVolatile('cooled'); - target.addVolatile('warmed'); - this.add('-ability', target, 'Reactive Core'); - this.add('-message', `${target.name}'s core surged with fire! (1.33x Offenses)`); - } - } - if (move.type === 'Water' || move.type === 'Ice') { - if (!target.volatiles['cooled']) { - target.removeVolatile('warmed'); - target.addVolatile('cooled'); - this.add('-ability', target, 'Reactive Core'); - this.add('-message', `${target.name}'s core subsided to a chill! (1.33x Defenses)`); - } - } - }, - onSetStatus(status, target, source, effect) { - if (status.id === 'brn') { - target.removeVolatile('cooled'); - target.addVolatile('warmed'); - target.cureStatus(); - this.add('-ability', target, 'Reactive Core'); - this.add('-message', `${target.name}'s core ignited! (1.33x Offenses)`); - return false; - } - if (status.id === 'frz') { - target.removeVolatile('warmed'); - target.addVolatile('cooled'); - target.cureStatus(); - this.add('-ability', target, 'Reactive Core'); - this.add('-message', `${target.name}'s core froze! (1.33x Defenses)`); - return false; - } - }, - onWeather(target) { - const weather = this.field.weather; - if (['sunnyday', 'desolateland'].includes(weather)) { - if (!target.volatiles['warmed']) { - target.removeVolatile('cooled'); - target.addVolatile('warmed'); - this.add('-ability', target, 'Reactive Core'); - this.add('-message', `${target.name}'s core glows in the sunlight! (1.33x Offenses)`); - } - } else if (['hail', 'snow'].includes(weather)) { - if (!target.volatiles['cooled']) { - target.removeVolatile('warmed'); - target.addVolatile('cooled'); - this.add('-ability', target, 'Reactive Core'); - this.add('-message', `${target.name}'s core hardened against the snow! (1.33x Defenses)`); - } - } else { - target.removeVolatile('warmed'); - target.removeVolatile('cooled'); - } - }, - flags: {}, - name: "Reactive Core", - shortDesc: "Fire/BRN/Sun: Offenses 1.3x | Water/Ice/FRZ/Snow: Defenses 1.3x", - }, - reactivetouch: { - onSourceDamagingHit(damage, target, source, move) { - // Despite not being a secondary, Shield Dust / Covert Cloak block Poison Touch's effect - if (target.hasAbility('shielddust') || target.hasItem('covertcloak')) return; - if (this.checkMoveMakesContact(move, target, source)) { - if (this.randomChance(3, 10)) { - target.addVolatile('blastblight'); - } - } - }, - name: "Reactive Touch", - shortDesc: "Using a contact move: Has a 30% chance to blast the foe.", - }, - relentless: { - onStart(pokemon) { - this.effectState.lastMove = ''; - this.effectState.numConsecutive = 0; - }, - onTryMovePriority: -2, - onTryMove(pokemon, target, move) { - if (this.effectState.lastMove === move.id && pokemon.moveLastTurnResult) { - this.effectState.numConsecutive++; - } else if (pokemon.volatiles['twoturnmove']) { - if (this.effectState.lastMove !== move.id) { - this.effectState.numConsecutive = 1; - } else { - this.effectState.numConsecutive++; - } - } else { - this.effectState.numConsecutive = 0; - } - this.effectState.lastMove = move.id; - }, - onModifyDamage(damage, source, target, move) { - if (source.hasItem('metronome')) return; - - // Damage multipliers: 1x → 1.2x → 1.4x → 1.6x → 1.8x → 2x - const dmgMod = [4096, 4915, 5734, 6553, 7372, 8192]; - const numConsecutive = Math.min(this.effectState.numConsecutive, 5); - this.debug(`Relentless boost: ${dmgMod[numConsecutive]}/4096`); - if (numConsecutive > 0) { - this.add('-activate', source, 'ability: Relentless'); - } - return this.chainModify([dmgMod[numConsecutive], 4096]); - }, - flags: {}, - name: "Relentless", - desc: "Damage of moves used on consecutive turns is increased. Max 2x after 5 turns. Does not stack with Metronome.", - shortDesc: "Consecutive move use: Damage rises to 2x after 5 turns; ignores Metronome.", - }, - riptide: { - onResidualOrder: 8, - onResidual(pokemon) { - if (!pokemon.hp) return; - for (const target of pokemon.foes()) { - if (target.volatiles['trapped']) { - this.add('-activate', pokemon, 'ability: Riptide'); - const damage = this.damage(target.baseMaxhp / 8, target, pokemon); - if (damage) { - this.heal(damage, pokemon, pokemon); - } - } - } - }, - flags: {}, - name: "Riptide", - desc: "If any foe is trapped by a non-damaging move, that foe loses 1/8 of its max HP each turn; the user heals by the same amount.", - shortDesc: "When a foe is trapped (non-damaging): Foe loses 1/8 max HP; user heals that much.", - }, - risenburst: { - onStart(pokemon) { - if (this.effectState.risenBurst) return; - this.effectState.risenBurst = true; - const reaction = this.dex.getActiveMove('risenburst'); - // reaction.noreact = true; - this.add('-activate', pokemon, 'ability: Risen Burst'); - this.actions.useMove(reaction, pokemon, { target: pokemon.side.foe.active[pokemon.position] }); - }, - onDamagingHitOrder: 3, - onDamagingHit(damage, target, source, move) { - if (/* !move.noreact && */ target.hp && source.hp && move.type === 'Dark') { - const reaction = this.dex.getActiveMove('risenburst'); - // reaction.noreact = true; - this.add('-activate', target, 'ability: Risen Burst'); - this.actions.useMove(reaction, target, { target: source }); - } - }, - onModifyDamage(damage, source, target, move) { - if (move.type === 'Dark' && target.hasAbility('risenburst')) { - this.debug('Risen Burst weaken (incoming Dark)'); - return this.chainModify(0.5); - } - }, - onModifyAtk(atk, attacker, defender, move) { - if (move.type === 'Dark') { - this.debug('Risen Burst boost (Atk)'); - return this.chainModify(1.5); - } - }, - onModifySpA(spa, attacker, defender, move) { - if (move.type === 'Dark') { - this.debug('Risen Burst boost (SpA)'); - return this.chainModify(1.5); - } - }, - flags: {}, - name: "Risen Burst", - desc: "On Mega Evolution, the user immediately uses Risen Burst (60 BP, Typeless). The user resists Dark-type moves and gains STAB on them. When hit by a Dark-type attack, the user retaliates with Risen Burst.", - shortDesc: "On Mega-Evo/Hit by Dark Attack: Uses Risen Burst (60 BP, Typeless). | Grants Dark Res & STAB.", - }, - rustedgale: { - onStart(pokemon) { - if (this.suppressingAbility(pokemon)) return; - this.add('-ability', pokemon, 'Rusted Gale'); - this.add('-message', `${pokemon.name}'s gale spreads rust across the battlefield!`); - - // Apply Rusted immediately to Steel-type foes - for (const target of pokemon.foes()) { - if (target.hasType('Steel') && !target.volatiles['rusted']) { - target.addVolatile('rusted'); - this.add('-message', `${target.name} is afflicted by rust!`); - } - } - }, - onSwitchIn(pokemon) { - // Apply Rusted to Steel-types that enter while Rusted Gale is active - const holder = this.effectState.target; - if (!holder) return; - if (!holder.isActive) return; - if (holder.hasAbility('Rusted Gale')) { - if (pokemon.hasType('Steel') && !pokemon.volatiles['rusted']) { - pokemon.addVolatile('rusted'); - this.add('-message', `${pokemon.name} is afflicted by rust!`); - } - } - }, - onAnyModifyDef(def, target) { - if (target.hasAbility('Rusted Gale')) return def; - if (target.hasType('Steel')) { - return def; // Steel-types keep Rusted volatile once applied - } else { - this.debug('Rusted Gale Defense drop'); - return this.chainModify(0.75); - } - }, - onSwitchOut(pokemon) { - if (pokemon.volatiles['rusted']) { - pokemon.removeVolatile('rusted'); - this.add('-message', `${pokemon.name} shook off the rust as it left the field!`); - } - }, - onEnd(pokemon) { - for (const mon of this.getAllActive()) { - if (mon.volatiles['rusted']) { - mon.removeVolatile('rusted'); - this.add('-message', `${mon.name}'s rust faded as ${pokemon.name} left the field!`); - } - } - }, - flags: {}, - name: "Rusted Gale", - desc: "Steel-types without this Ability gain the Rusted volatile immediately when it activates or when they switch in. Other Pokémon have their Defense reduced to 0.75x. All effects end when the holder leaves the field.", - shortDesc: "Across the battlefield: Steel-types become Rusted; others have DEF lowered by x0.75.", - }, - sacredjewel: { - onModifyDefPriority: 6, - onModifySpD(spd, pokemon) { - if (pokemon.status) { - return this.chainModify(1.5); - } - }, - flags: { breakable: 1 }, - name: "Sacred Jewel", - shortDesc: "Non-Volatile Status Inflicted: Sp. Def is 1.5x", - }, - silversubsume: { - onAnyTryMove(target, source, effect) { - if (['stealthrock', 'spikes', 'toxicspikes', 'stickyweb'].includes(effect.id)) { - this.attrLastMove('[still]'); - this.boost({ atk: 1 }, source); - this.add('cant', this.effectState.target, 'ability: Silver Subsume', effect, `[of] ${target}`); - return false; - } - }, - name: "Silver Subsume", - shortDesc: "When targeted by a hazard move: It fails, Attack is raised by 1+", - }, - snowseethe: { - onModifyAtkPriority: 5, - onModifyAtk(atk, pokemon) { - if (['snow', 'absolutezero'].includes(pokemon.effectiveWeather())) { - return this.chainModify(1.5); - } - }, - onWeather(target, source, effect) { - if (target.hasItem('utilityumbrella')) return; - if (effect.id === 'snow' || effect.id === 'absolutezero') { - this.damage(target.baseMaxhp / 8, target, target); - } - }, - flags: {}, - name: "Snow Seethe", - shortDesc: "Under Snow: Atk is 1.5x, loses 1/8 max HP per turn.", - }, - solarcore: { - onChargeMove(pokemon, target, move) { - if (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) { - this.debug('Solar Core - remove charge turn for ' + move.id); - this.attrLastMove('[still]'); - this.add('-activate', pokemon, 'ability: Solar Core'); - this.addMove('-anim', pokemon, move.name, target); - return false; - } - }, - flags: {}, - name: "Solar Core", - shortDesc: "Under Sun: Skip charging turn of it's own moves.", - }, - solarwrath: { - onModifyAtkPriority: 5, - onModifyAtk(atk, pokemon) { - if (['sunnyday', 'desolateland'].includes(pokemon.effectiveWeather())) { - return this.chainModify(1.5); - } - }, - onWeather(target, source, effect) { - if (target.hasItem('utilityumbrella')) return; - if (effect.id === 'sunnyday' || effect.id === 'desolateland') { - this.damage(target.baseMaxhp / 8, target, target); - } - }, - flags: {}, - name: "Solar Wrath", - shortDesc: "Under Sun: Atk is 1.5x, loses 1/8 max HP per turn.", - }, - spongy: { - onSourceModifyDamage(damage, source, target, move) { - let mod = 1; - if (move.type === 'Fire') mod *= 2; - if (move.category === 'Special') mod /= 2; - return this.chainModify(mod); - }, - flags: { breakable: 1 }, - shortDesc: "Takes 1/2x damage from special moves | 2x damage from Fire moves.", - name: "Spongy", - }, - starvingbite: { - onModifyMovePriority: 99, - onModifyMove(move) { - if (move.flags['bite']) { - move.ignoreAbility = true; - move.ignoreImmunity = true; - } - }, - onEffectiveness(typeMod, target, type, move) { - if (!move.flags['bite']) return; - if (typeMod < 0) return 0; - }, - flags: {}, - name: "Starving Bite", - desc: "This Pokémon's biting attacks ignore target abilities and type immunities, but still respect resistances and weaknesses.", - shortDesc: "Biting attacks ignore immunities and abilities.", - }, - stealthsilver: { - onStart(pokemon) { - if (this.effectState.stealthSilver) return; - this.effectState.stealthSilver = true; - pokemon.side.foe.addSideCondition('gmaxsteelsurge'); - }, - flags: {}, - shortDesc: "On activation: Sets steel-type hazards.", - name: "Stealth Silver", - }, - strafe: { - onModifyDefPriority: 1, - onModifyDef(def, pokemon) { - const spe = pokemon.getStat('spe', false, true); - return def + Math.floor(spe * 0.2); - }, - onModifySpDPriority: 1, - onModifySpD(spd, pokemon) { - const spe = pokemon.getStat('spe', false, true); - return spd + Math.floor(spe * 0.2); - }, - flags: {}, - name: "Strafe", - desc: "When this Pokémon takes damage, 20% of its Speed stat is added to its Defense and Special Defense.", - shortDesc: "When taking damage: 20% of Speed is added to defenses.", - }, - tempestenergy: { - onImmunity(type, pokemon) { - if (type === 'sandstorm') return false; - }, - onStart(pokemon) { - if (pokemon.side.sideConditions['tailwind'] || this.field.isWeather('sandstorm')) { - this.boost({ spa: 1 }, pokemon, pokemon); - } - }, - onTryHit(target, source, move) { - if (target !== source && move.flags['wind']) { - if (!this.boost({ spa: 1 }, target, target)) { - this.add('-immune', target, '[from] ability: Tempest Energy'); - } - return null; - } - }, - onSideConditionStart(target, source, sideCondition) { - const pokemon = this.effectState.target; - if (sideCondition.id === 'tailwind' || this.field.isWeather('sandstorm')) { - this.boost({ spa: 1 }, pokemon, pokemon); - } - }, - flags: {}, - desc: "This Pokemon is immune to wind moves and raises its Sp.Attack by 1 stage when hit by a wind move, when Tailwind begins on this Pokemon's side, or when Sandstorm is active. Sandstorm immunity.", - shortDesc: "Hit by Wind Move/Sandstorm: Immunity, +1 SpA | Under Tailwind: +1 SpA.", - name: "Tempest Energy", - }, - tempestforce: { - inherit: true, - onImmunity(type, pokemon) { - if (type === 'sandstorm') return false; - }, - onStart(pokemon) { - if (pokemon.side.sideConditions['tailwind'] || this.field.isWeather('sandstorm')) { - this.boost({ atk: 1 }, pokemon, pokemon); - } - }, - onSideConditionStart(target, source, sideCondition) { - const pokemon = this.effectState.target; - if (sideCondition.id === 'tailwind' || this.field.isWeather('sandstorm')) { - this.boost({ atk: 1 }, pokemon, pokemon); - } - }, - onTryHit(target, source, move) { - if (target !== source && move.flags['wind']) { - if (!this.boost({ atk: 1 }, target, target)) { - this.add('-immune', target, '[from] ability: Tempest Force'); - } - return null; - } - }, - flags: {}, - desc: "This Pokemon is immune to wind moves and raises its Attack by 1 stage when hit by a wind move, when Tailwind begins on this Pokemon's side, or when Sandstorm is active. Sandstorm immunity.", - shortDesc: "Hit by Wind Move/Sandstorm: Immunity, +1 Atk | Under Tailwind: +1 Atk.", - name: "Tempest Force", - }, - terrestrial: { - onSourceModifyAtkPriority: 5, - onSourceModifyAtk(atk, attacker, defender, move) { - if (move.type === 'Ground') { - return this.chainModify(0.5); - } - }, - onSourceModifySpAPriority: 5, - onSourceModifySpA(atk, attacker, defender, move) { - if (move.type === 'Ground') { - return this.chainModify(0.5); - } - }, - flags: { breakable: 1 }, - name: "Terrestrial", - shortDesc: "Ground-type attacks deal 0.5x damage to the user.", - }, - thunderstorm: { - onModifyMovePriority: 1, - onAfterMove(pokemon, attacker, move) { - if (move.type === 'Flying') { - this.add('-ability', pokemon, 'Thunderstorm'); - pokemon.addVolatile('charge'); - } - }, - flags: {}, - name: "Thunderstorm", - shortDesc: "Grants the charge effect after using a flying-type move.", - }, - twilightdust: { - onAnyAfterSetStatus(status, target, source, effect) { - if (source.baseSpecies.name !== "Nightcloak Malfestio") return; - if (source !== this.effectState.target || target === source || effect.effectType !== 'Move') return; - if (status.id === 'slp') { - target.addVolatile('confusion'); - } - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1 }, - name: "Twilight Dust", - desc: "If this Pokemon is a Nightcloak Malfestio and induces drowsy in a target, the target also becomes confused.", - shortDesc: "Nightcloak: If this Pokemon induces drowsy in a Foe: Foe also becomes confused.", - }, - vampirism: { - onSourceDamagingHit(damage, target, source, move) { - // const sourceAbility = source.getAbility(); - const targetAbility = target.getAbility(); - - if (targetAbility.flags['cantsuppress'] || targetAbility.id === 'vampirism') { - return; - } - - if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) { - const oldAbility = target.setAbility('vampirism', source); - if (oldAbility) { - this.add('-activate', target, 'ability: Vampirism', this.dex.abilities.get(oldAbility).name, `[of] ${source}`); - } - } - }, - flags: {}, - name: "Vampirism", - shortDesc: "When using contact moves: Replaces target's ability with Vampirism.", - }, - watercompaction: { - onTryHit(target, source, move) { - if (target !== source && move.type === 'Water') { - if (!this.boost({ def: 2 })) { - this.add('-immune', target, '[from] ability: Water Compaction'); - } - return null; - } - }, - flags: { breakable: 1 }, - name: "Water Compaction", - desc: "This Pokemon is immune to Water-type moves and raises its Def by 2 stages when hit by an Water-type move.", - shortDesc: "When hit by a Water move: Immunity, Raises Def. by +2.", - }, - wylkencasing: { - onStart(pokemon) { - if (pokemon.baseSpecies.baseSpecies !== 'Zoh Shia' || pokemon.transformed) return; - if (pokemon.hp > pokemon.maxhp / 2) { - if (pokemon.species.forme !== 'Encased') { - pokemon.formeChange('Zoh Shia-Encased'); - } - } else { - if (pokemon.species.forme === 'Encased') { - pokemon.formeChange(pokemon.set.species); - } - } - }, - onResidualOrder: 29, - onResidual(pokemon) { - if (pokemon.baseSpecies.baseSpecies !== 'Zoh Shia' || pokemon.transformed || !pokemon.hp) return; - if (pokemon.hp > pokemon.maxhp / 2) { - if (pokemon.species.forme !== 'Encased') { - pokemon.formeChange('Zoh Shia-Encased'); - } - } else { - if (pokemon.species.forme === 'Encased') { - pokemon.formeChange(pokemon.set.species); - } - } - }, - onSetStatus(status, target, source, effect) { - if (target.species.id !== 'Zoh Shia-Encased' || target.transformed) return; - if ((effect as Move)?.status) { - this.add('-immune', target, '[from] ability: Wylk Encasing'); - } - return false; - }, - onTryAddVolatile(status, target) { - if (target.species.id !== 'Zoh Shia-Encased' || target.transformed) return; - if (status.id !== 'yawn') return; - this.add('-immune', target, '[from] ability: Wylk Encasing'); - return null; - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - name: "Wylk Encasing", - desc: "If this Pokemon is a Zoh Shia, it changes to its true forme if it has 1/2 or less of its maximum HP, and changes to Encased Form if it has more than 1/2 its maximum HP. This check is done on switch-in and at the end of each turn. While in its Encased Form, it cannot become affected by a non-volatile status condition or Yawn.", - shortDesc: "Zoh Shia: Starts Encased, becomes Unencased at the end of the turn if at ≤50% Max HP.", - }, - wyversion: { - onDamagingHitOrder: 1, - onDamagingHit(damage, target, source, move) { - if (target.hp && !target.volatiles['dragoncharge']) { - if (target.status && target.status !== 'slp') { - const oldStatus = target.status; - this.add('-curestatus', target, oldStatus, '[from] ability: Wyversion'); - target.cureStatus(); - } - target.addVolatile('dragoncharge'); - } - }, - onUpdate(pokemon) { - // If Flame Orb, Frost Orb, or Toxic Orb has already triggered, consume it - if ((pokemon.item === 'flameorb' || pokemon.item === 'frostorb' || pokemon.item === 'toxicorb') && pokemon.status) { - const consumed = pokemon.item; - pokemon.setItem(''); - this.add('-enditem', pokemon, consumed, '[from] ability: Wyversion'); - } - - if (pokemon.status && pokemon.status !== 'slp' && !pokemon.volatiles['dragoncharge']) { - // const oldStatus = pokemon.status; - pokemon.cureStatus(); - pokemon.addVolatile('dragoncharge'); - } - }, - onSetStatus(status, target, source, effect) { - if (target.volatiles['dragoncharge']) { - if (status.id === 'slp') return; - this.add('-immune', target, '[from] ability: Wyversion'); - return false; - } - }, - flags: {}, - name: "Wyversion", - desc: "Flame Orb, Frost Orb, and Toxic Orb are consumed after they trigger. When hit or inflicted with a non-Sleep status, this Pokémon cures the status and gains Dragon Charge, boosting its next Dragon-type move. While charged, it cannot be inflicted with status except Sleep.", - shortDesc: "Hit/BRN/FRZ/PARA/POI/DRAGB: Gains Dragon-Charge | Cures Status. Immune if Blighted.", - }, - /* - Edits - */ - ironfist: { - inherit: true, - onModifyMove(move) { - if (move.flags['punch']) delete move.flags['contact']; - }, - desc: "This Pokemon's punch-based attacks have their power multiplied by 1.2.", - shortDesc: "Punching attacks have 1.2x power, sans Sucker Pun. All Punch M. are contactless.", - }, - icebody: { - inherit: true, - shortDesc: "If Snow is active, this Pokemon heals 1/8th of its max HP each turn.", - onWeather(target, source, effect) { - if (effect.id === 'hail' || effect.id === 'snow' || effect.id === 'absolutezero') { - this.heal(target.baseMaxhp / 8); - } - }, - }, - poisonpuppeteer: { - inherit: true, - onAnyAfterSetStatus(status, target, source, effect) { - if (source.baseSpecies.name !== "Chameleos") return; - if (source !== this.effectState.target || target === source || effect.effectType !== 'Move') return; - if (status.id === 'psn' || status.id === 'tox') { - target.addVolatile('confusion'); - } - }, - shortDesc: "Chameleos: If this Pokemon poisons a target, the target also becomes confused.", - }, - raindish: { - inherit: true, - onWeather(target, source, effect) { - if (target.hasItem('utilityumbrella')) return; - if (effect.id === 'raindance' || effect.id === 'primordialsea') { - this.heal(target.baseMaxhp / 8); - } - }, - }, - deltastream: { - inherit: true, - onAnySetWeather(target, source, weather) { - const strongWeathers = ['desolateland', 'primordialsea', 'deltastream', 'dustdevil', 'absolutezero']; - if (this.field.getWeather().id === 'deltastream' && !strongWeathers.includes(weather.id)) return false; - }, - }, - desolateland: { - inherit: true, - onAnySetWeather(target, source, weather) { - const strongWeathers = ['desolateland', 'primordialsea', 'deltastream', 'dustdevil', 'absolutezero']; - if (this.field.getWeather().id === 'desolateland' && !strongWeathers.includes(weather.id)) return false; - }, - }, - primordialsea: { - inherit: true, - onAnySetWeather(target, source, weather) { - const strongWeathers = ['desolateland', 'primordialsea', 'deltastream', 'dustdevil', 'absolutezero']; - if (this.field.getWeather().id === 'primordialsea' && !strongWeathers.includes(weather.id)) return false; - }, - }, - sandforce: { - inherit: true, - onBasePower(basePower, attacker, defender, move) { - if (['sandstorm', 'dustdevil'].includes(attacker.effectiveWeather())) { - if (move.type === 'Rock' || move.type === 'Ground' || move.type === 'Steel') { - this.debug('Sand Force boost'); - return this.chainModify([5325, 4096]); - } - } - }, - }, - sandrush: { - inherit: true, - onModifySpe(spe, pokemon) { - if (['sandstorm', 'dustdevil'].includes(pokemon.effectiveWeather())) { - return this.chainModify(2); - } - }, - }, - slushrush: { - inherit: true, - onModifySpe(spe, pokemon) { - if (['hail', 'snow', 'absolutezero'].includes(pokemon.effectiveWeather())) { - return this.chainModify(2); - } - }, - }, - sandveil: { - inherit: true, - onSetStatus(status, target, source, effect) { - if (this.field.isWeather('sandstorm')) { - if ((effect as Move)?.status) { - this.add('-immune', target, '[from] ability: Sand Veil'); - } - return false; - } - }, - onTryAddVolatile(status, target) { - if (status.id === 'yawn' && this.field.isWeather('sandstorm')) { - this.add('-immune', target, '[from] ability: Sand Veil'); - return null; - } - }, - onModifyDef(def, pokemon) { - if (this.field.isWeather('sandstorm')) { - return this.chainModify(1.3); - } - }, - onModifyAccuracy(accuracy) {}, - desc: "If Sandstorm is active, this Pokemon's Defense is multiplied by 1.3, and it cannot become affected by a non-volatile status condition or Yawn, and Rest will fail for it. This effect is prevented if this Pokemon is holding a Utility Umbrella.", - shortDesc: "Under Sandstorm; Def is 1.3x. Cannot be statused, including Rest.", - }, -}; diff --git a/data/mods/monsterhunter/conditions.ts b/data/mods/monsterhunter/conditions.ts deleted file mode 100644 index 03e04f465a..0000000000 --- a/data/mods/monsterhunter/conditions.ts +++ /dev/null @@ -1,370 +0,0 @@ -export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = { - frz: { - onStart(target, source, sourceEffect) { - this.add('-message', `${target.name} was Frostbitten! Special Attack halved! (Stat Change not visible)`); - if (sourceEffect && sourceEffect.id === 'frostorb') { - this.add('-status', target, 'frz', '[from] item: Frost Orb'); - } else if (sourceEffect && sourceEffect.effectType === 'Ability') { - this.add('-status', target, 'frz', '[from] ability: ' + sourceEffect.name, `[of] ${source}`); - } else { - this.add('-status', target, 'frz'); - } - }, - onResidualOrder: 10, - onResidual(pokemon) { - this.damage(pokemon.baseMaxhp / 16); - }, - onModifySpA(spa, pokemon) { - return this.chainModify(0.5); - }, - }, - slp: { - name: 'slp', - effectType: 'Status', - onStart(target, source, sourceEffect) { - this.add('-message', `${target.name} is Drowsy! Damage taken is 1.2x; can't use same attack twice! Multi-Hits strike once!`); - if (sourceEffect && sourceEffect.effectType === 'Ability') { - this.add('-status', target, 'slp', '[from] ability: ' + sourceEffect.name, `[of] ${source}`); - } else if (sourceEffect && sourceEffect.effectType === 'Move') { - this.add('-status', target, 'slp', '[from] move: ' + sourceEffect.name); - } else { - this.add('-status', target, 'slp'); - } - if (target.removeVolatile('nightmare')) { - this.add('-end', target, 'Nightmare', '[silent]'); - } - }, - onSourceModifyDamage(damage, source, target, move) { - return this.chainModify(1.2); - }, - onModifyMove(move, pokemon) { - if (move.multihit) delete move.multihit; - }, - onDisableMove(pokemon) { - if (pokemon.lastMove && pokemon.lastMove.id !== 'struggle') { - pokemon.disableMove(pokemon.lastMove.id); - } - }, - }, - par: { - inherit: true, - onStart(target, source, sourceEffect) { - this.add('-message', `${target.name} is Paralyzed! Speed halved; will be fully paralyzed every 3 turns!`); - if (sourceEffect && sourceEffect.effectType === 'Ability') { - this.add('-status', target, 'par', '[from] ability: ' + sourceEffect.name, `[of] ${source}`); - } else { - this.add('-status', target, 'par'); - } - }, - onResidual(pokemon) { - if (this.effectState.static === undefined) this.effectState.static = 0; - this.effectState.static++; - if (this.effectState.static >= 3) { - this.add('-message', `${pokemon.name} has too much static!`); - } else { - this.add('-message', `${pokemon.name} is building static!`); - } - }, - onSwitchOut(pokemon) { - this.effectState.static = 0; - }, - onSwitchIn(pokemon) { - this.effectState.static = 0; - }, - onBeforeMove(pokemon) { - if (this.effectState.static >= 3) { - this.add('cant', pokemon, 'par'); - this.effectState.static = 0; - return false; - } - }, - }, - warmed: { - name: 'Warmed', - onStart(pokemon) { - this.add('-start', pokemon, 'Warmed'); - }, - onModifySpAPriority: 5, - onModifySpA(spa, pokemon) { - return this.chainModify([5461, 4096]); - }, - onModifyAtkPriority: 5, - onModifyAtk(atk, pokemon) { - return this.chainModify([5461, 4096]); - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Warmed'); - }, - }, - cooled: { - name: 'Cooled', - onStart(pokemon) { - this.add('-start', pokemon, 'Cooled'); - }, - onModifyDefPriority: 5, - onModifyDef(def, pokemon) { - return this.chainModify([5325, 4096]); - }, - onModifySpDPriority: 5, - onModifySpD(spd, pokemon) { - return this.chainModify([5325, 4096]); - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Cooled'); - }, - }, - blastblight: { - name: 'Blastblight', - onStart(pokemon) { - this.add('-start', pokemon, 'Blasted'); - this.add('-message', `${pokemon.name} has Blastblight! Next hit will incur chip damage!`); - }, - onDamagingHit(damage, target, source, move) { - this.damage(target.baseMaxhp / 6, target, source); - target.removeVolatile('blastblight'); - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Blasted'); - }, - }, - bubbleblight: { - name: 'Bubbleblight', - duration: 4, - onStart(pokemon) { - this.add('-start', pokemon, 'Bubbled'); - this.add('-message', `${pokemon.name} has Bubbleblight! +1 Speed, -1 Accuracy!`); - this.boost({ spe: 1, accuracy: -1 }, pokemon); - }, - onEnd(pokemon) { - this.boost({ spe: -1, accuracy: 1 }, pokemon); - this.add('-end', pokemon, 'Bubbled'); - }, - }, - defensedown: { - name: 'Defense Down', - duration: 4, - onStart(pokemon) { - this.add('-start', pokemon, 'Defense Down'); - this.add('-message', `${pokemon.name} is afflicted with Defense Down! Defenses reduced by half for 3 turns!`); - }, - onModifyDef(def, pokemon) { - return this.chainModify(0.5); - }, - onModifySpD(spd, pokemon) { - return this.chainModify(0.5); - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Defense Down'); - }, - }, - stench: { - name: 'Stench', - duration: 4, - onStart(pokemon) { - this.add('-start', pokemon, 'Stench'); - this.add('-message', `${pokemon.name} is afflicted with Stench! Held item disabled!`); - this.singleEvent('End', pokemon.getItem(), pokemon.itemState, pokemon); - // Item suppression implemented in Pokemon.ignoringItem() within sim/pokemon.js - }, - onDisableMove(pokemon) { - for (const moveSlot of pokemon.moveSlots) { - const move = this.dex.moves.get(moveSlot.id); - if (move.category === 'Status' && move.id !== 'mefirst') { - pokemon.disableMove(moveSlot.id); - } - } - }, - onBeforeMovePriority: 5, - onBeforeMove(attacker, defender, move) { - if (!move.isZ && !move.isMax && move.category === 'Status' && move.id !== 'mefirst') { - this.add('cant', attacker, 'move: Taunt', move); - return false; - } - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Stench'); - }, - }, - fatigue: { - name: 'Fatigue', - duration: 5, - onStart(pokemon, source) { - this.add('-start', pokemon, 'Fatigue'); - this.add('-message', `${pokemon.name} is Fatigued! Moves use more PP!`); - }, - onDeductPP(pokemon) { - return 1; - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Fatigue'); - }, - }, - bleeding: { - name: 'Bleeding', - onStart(pokemon) { - this.add('-start', pokemon, 'Bleeding'); - this.add('-message', `${pokemon.name} is afflicted with Bleeding! Will take damage when attacking!`); - }, - onAfterMoveSecondarySelf(source, target, move) { - if (source && source !== target && move && move.category !== 'Status' && !source.forceSwitchFlag) { - this.damage(source.baseMaxhp / 10, source, source); - } - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Bleeding'); - }, - }, - snowman: { - name: 'Snowman', - onStart(pokemon) { - this.add('-start', pokemon, 'Snowman'); - this.add('-message', `${pokemon.name} is a Snowman! Unable to move.`); - }, - onBeforeMovePriority: 10, - onBeforeMove(pokemon, target, move) { - if (move.flags['defrost']) return; - if (this.randomChance(1, 5)) { - pokemon.cureStatus(); - return; - } - this.add('cant', pokemon, 'snowman'); - return false; - }, - onModifyMove(move, pokemon) { - if (move.flags['defrost']) { - this.add('-curestatus', pokemon, 'snowman', `[from] move: ${move}`); - pokemon.clearStatus(); - } - }, - onAfterMoveSecondary(target, source, move) { - if (move.thawsTarget) { - target.cureStatus(); - } - }, - onDamagingHit(damage, target, source, move) { - if (move.type === 'Fire' && move.category !== 'Status') { - target.cureStatus(); - } - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Snowman'); - }, - }, - rusted: { - name: 'Rusted', - duration: 4, - onStart(pokemon) { - if (pokemon.hasType('Steel')) { - this.add('-start', pokemon, 'Rusted'); - this.add('-message', `${pokemon.name}'s steel defenses have rusted away!`); - } else { - pokemon.removeVolatile('rusted'); - } - }, - onEffectiveness(typeMod, target, type, move) { - if (!target) return; - if (target.hasType('Steel') && target.volatiles['rusted']) { - if (typeMod < 0) { - return 0; - } - if (typeMod === 0 && this.dex.getImmunity(type, target)) { - return 1; - } - } - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Rusted'); - this.add('-message', `${pokemon.name}'s steel defenses are restored!`); - }, - }, - dragonblight: { - name: 'Dragonblight', - effectType: 'Status', - onStart(pokemon) { - if (pokemon.hasType('Fairy')) { - this.add('-immune', pokemon, '[from] status: Dragonblight'); - return false; - } - this.add('-start', pokemon, 'Dragonblight'); - this.add('-message', `${pokemon.name} is afflicted with Dragonblight! STAB disabled!`); - }, - onResidualOrder: 10, - onResidual(pokemon) { - this.damage(pokemon.baseMaxhp / 16); - }, - onModifySTAB(stab, source, target, move) { - return 1; - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Dragonblight'); - this.add('-message', `${pokemon.name} overcame Dragonblight!`); - }, - }, - /* Weather */ - dustdevil: { - name: 'Dust Devil', - effectType: 'Weather', - duration: 0, - // This should be applied directly to the stat before any of the other modifiers are chained - // So we give it increased priority. - onModifySpDPriority: 10, - onModifySpD(spd, pokemon) { - if (pokemon.hasType('Rock') && this.field.isWeather('dustdevil')) { - return this.modify(spd, 1.5); - } - }, - onModifyMove(move, attacker) { - if (move.type === 'Rock') { - move.accuracy = true; - } - }, - onFieldStart(field, source, effect) { - this.add('-weather', 'Dust Devil', '[from] ability: ' + effect.name, `[of] ${source}`); - }, - onFieldResidualOrder: 1, - onFieldResidual() { - this.add('-weather', 'Dust Devil', '[upkeep]'); - this.eachEvent('Weather'); - }, - onWeather(target) { - if (this.field.weatherState.source !== target) this.damage(target.baseMaxhp / 16); - }, - onFieldEnd() { - this.add('-weather', 'none'); - }, - }, - absolutezero: { - name: 'Absolute Zero', - effectType: 'Weather', - duration: 0, - onModifyDefPriority: 10, - onModifyDef(def, pokemon) { - if (pokemon.hasType('Ice') && this.field.isWeather('absolutezero')) { - return this.modify(def, 1.5); - } - }, - onModifySpe(spe, pokemon) { - if (this.field.weatherState.source !== pokemon) return this.chainModify(0.75); - }, - onFieldStart(field, source, effect) { - this.add('-weather', 'Absolute Zero', '[from] ability: ' + effect.name, `[of] ${source}`); - }, - onFieldResidualOrder: 1, - onFieldResidual() { - this.add('-weather', 'Absolute Zero', '[upkeep]'); - this.eachEvent('Weather'); - }, - onWeather(target) { - if (this.field.weatherState.source !== target) this.damage(target.baseMaxhp / 16); - }, - onFieldEnd() { - this.add('-weather', 'none'); - }, - }, - snow: { - inherit: true, - onImmunity(type) { - if (type === 'brn') return false; - }, - }, -}; diff --git a/data/mods/monsterhunter/formats-data.ts b/data/mods/monsterhunter/formats-data.ts deleted file mode 100644 index 0d1eb6016e..0000000000 --- a/data/mods/monsterhunter/formats-data.ts +++ /dev/null @@ -1,785 +0,0 @@ -export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = { - agnaktor: { - tier: "UU", - }, - agnaktorex: { - tier: "OU", - }, - ahtalka: { - tier: "OU", - }, - akantor: { - tier: "UU", - }, - aknosom: { - tier: "RU", - }, - alatreon: { - tier: "OU", - }, - almudron: { - tier: "UU", - }, - magmadron: { - tier: "OU", - }, - amatsu: { - tier: "OU", - }, - anjanath: { - tier: "UU", - }, - fuljanath: { - tier: "UU", - }, - arzuros: { - tier: "RU", - }, - astalos: { - tier: "UU", - }, - banbaro: { - tier: "RU", - }, - barioth: { - tier: "UU", - }, - barroth: { - tier: "RU", - }, - basarios: { - tier: "RU", - }, - bazelgeuse: { - tier: "UU", - }, - beotodus: { - tier: "RU", - }, - bishaten: { - tier: "UU", - }, - orangaten: { - tier: "UU", - }, - blangonga: { - tier: "RU", - }, - brachydios: { - tier: "OU", - }, - bulldrome: { - tier: "RU", - }, - ceadeus: { - tier: "OU", - }, - cephadrome: { - tier: "RU", - }, - chameleos: { - tier: "OU", - }, - congalala: { - tier: "RU", - }, - dahrenmohran: { - tier: "OU", - }, - daimyohermitaur: { - tier: "UU", - }, - dalamadur: { - tier: "OU", - }, - deviljho: { - tier: "UU", - }, - diablos: { - tier: "OU", - }, - diremiralis: { - tier: "OU", - }, - dodogama: { - tier: "RU", - }, - duramboros: { - tier: "UU", - }, - eruzerion: { - tier: "OU", - }, - espinas: { - tier: "OU", - }, - flaminas: { - tier: "OU", - }, - fatalis: { - tier: "OU", - }, - gaismagorm: { - tier: "OU", - }, - gammoth: { - tier: "OU", - }, - garangolm: { - tier: "UU", - }, - gendrome: { - tier: "RU", - }, - giadrome: { - tier: "RU", - }, - gigginox: { - tier: "RU", - }, - glavenus: { - tier: "OU", - }, - gobul: { - tier: "RU", - }, - gogmazios: { - tier: "OU", - }, - goremagala: { - tier: "UU", - }, - chaoticgore: { - tier: "OU", - }, - gossharag: { - tier: "OU", - }, - gravios: { - tier: "UU", - }, - greatbaggi: { - tier: "RU", - }, - greatgirros: { - tier: "RU", - }, - greatizuchi: { - tier: "UU", - }, - greatjaggi: { - tier: "RU", - }, - greatjagras: { - tier: "RU", - }, - greatmaccao: { - tier: "RU", - }, - greatwroggi: { - tier: "RU", - }, - gureadomosu: { - tier: "OU", - }, - gypceros: { - tier: "UU", - }, - harudomerugu: { - tier: "OU", - }, - hypnocatrice: { - tier: "RU", - }, - ibushi: { - tier: "UU", - }, - iodrome: { - tier: "RU", - }, - jhenmohran: { - tier: "OU", - }, - jyuratodus: { - tier: "OU", - }, - kechawacha: { - tier: "RU", - }, - khezu: { - tier: "RU", - }, - kingshakalaka: { - tier: "RU", - }, - kirin: { - tier: "OU", - }, - kuluyaku: { - tier: "UU", - }, - kulvetaroth: { - tier: "OU", - }, - kushaladaora: { - tier: "OU", - }, - rushaladaora: { - tier: "OU", - }, - lagiacrus: { - tier: "UU", - }, - ivogiacrus: { - tier: "UU", - }, - lagombi: { - tier: "RU", - }, - laoshanlung: { - tier: "OU", - }, - lavasioth: { - tier: "RU", - }, - legiana: { - tier: "UU", - }, - lunagaron: { - tier: "UU", - }, - lunastra: { - tier: "UU", - }, - magnamalo: { - tier: "OU", - }, - malfestio: { - tier: "UU", - }, - malzeno: { - tier: "OU", - }, - mizutsune: { - tier: "UU", - }, - vizutsune: { - tier: "OU", - }, - monoblos: { - tier: "UU", - }, - najarala: { - tier: "UU", - }, - nakarkos: { - tier: "OU", - }, - namielle: { - tier: "OU", - }, - nargacuga: { - tier: "OU", - }, - lucacuga: { - tier: "OU", - }, - narwa: { - tier: "OU", - }, - nergigante: { - tier: "OU", - }, - nefgarmat: { - tier: "OU", - }, - nerscylla: { - tier: "RU", - }, - nibelsnarf: { - tier: "RU", - }, - odogaron: { - tier: "UU", - }, - paolumu: { - tier: "UU", - }, - plesioth: { - tier: "UU", - }, - pukeipukei: { - tier: "UU", - }, - qurupeco: { - tier: "RU", - }, - radobaan: { - tier: "UU", - }, - rajang: { - tier: "OU", - }, - raknakadaki: { - tier: "UU", - }, - pyrekadaki: { - tier: "UU", - }, - rathalos: { - tier: "UU", - }, - rathian: { - tier: "OU", - }, - royalludroth: { - tier: "RU", - }, - safijiiva: { - tier: "OU", - }, - seltas: { - tier: "RU", - }, - seltasqueen: { - tier: "UU", - }, - seregios: { - tier: "OU", - }, - shagarumagala: { - tier: "OU", - }, - shantien: { - tier: "OU", - }, - sharaishvalda: { - tier: "OU", - }, - shengaoren: { - tier: "OU", - }, - shogunceanataur: { - tier: "UU", - }, - somnacanth: { - tier: "RU", - }, - auroracanth: { - tier: "OU", - }, - spiribird: { - tier: "RU", - }, - spiribirdred: { - tier: "RU", - }, - spiribirdyellow: { - tier: "RU", - }, - spiribirdorange: { - tier: "RU", - }, - teostra: { - tier: "OU", - }, - tetranadon: { - tier: "UU", - }, - tetsucabra: { - tier: "RU", - }, - tigrex: { - tier: "OU", - }, - tobikadachi: { - tier: "RU", - }, - tzitziyaku: { - tier: "UU", - }, - ukanlos: { - tier: "OU", - }, - uragaan: { - tier: "UU", - }, - vaalhazak: { - tier: "UU", - }, - valstrax: { - tier: "OU", - }, - glowstrax: { - tier: "OU", - }, - velkhana: { - tier: "OU", - }, - velocidrome: { - tier: "RU", - }, - vespoidqueen: { - tier: "RU", - }, - volvidon: { - tier: "RU", - }, - xenojiiva: { - tier: "OU", - }, - yamatsukami: { - tier: "OU", - }, - yiangaruga: { - tier: "UU", - }, - yiankutku: { - tier: "UU", - }, - bluekutku: { - tier: "OU", - }, - zamtrios: { - tier: "UU", - }, - zamtriosiced: { - tier: "UU", - }, - zamtriospuffed: { - tier: "UU", - }, - zinogre: { - tier: "UU", - }, - zorahmagdaros: { - tier: "OU", - }, - lalabarina: { - tier: "UU", - }, - balahara: { - tier: "UU", - }, - doshaguma: { - tier: "UU", - }, - rompopolo: { - tier: "UU", - }, - palico: { - tier: "RU", - }, - palamute: { - tier: "RU", - }, - disufiroa: { - tier: "UU", - }, - disufiroasol: { - tier: "UU", - }, - reydau: { - tier: "OU", - }, - hirabami: { - tier: "RU", - }, - nuudra: { - tier: "UU", - }, - nightlumu: { - tier: "UU", - }, - acidinus: { - tier: "OU", - }, - molgrex: { - tier: "UU", - }, - blackblos: { - tier: "UU", - }, - sandrioth: { - tier: "OU", - }, - uthduna: { - tier: "OU", - }, - blackveilhazak: { - tier: "OU", - }, - silvalos: { - tier: "OU", - }, - goldthian: { - tier: "OU", - }, - pinkthian: { - tier: "UU", - }, - goldeus: { - tier: "OU", - }, - azurelos: { - tier: "UU", - }, - stygiogre: { - tier: "UU", - }, - jindahaad: { - tier: "OU", - }, - zohshia: { - tier: "OU", - }, - zohshiaencased: { - tier: "OU", - }, - greencuga: { - tier: "OU", - }, - allmothernarwa: { - tier: "OU", - }, - nightcloakmalfestio: { - tier: "OU", - }, - boltreaverastalos: { - tier: "OU", - }, - massacrediablos: { - tier: "OU", - }, - primozeno: { - tier: "OU", - }, - arkveld: { - tier: "OU", - }, - chatacabra: { - tier: "RU", - }, - quematrice: { - tier: "RU", - }, - pokaradon: { - tier: "RU", - }, - inagami: { - tier: "OU", - }, - shroudcylla: { - tier: "RU", - }, - estrellian: { - tier: "OU", - }, - estrellianarmored: { - tier: "OU", - }, - estrellianwinged: { - tier: "OU", - }, - doomtrellian: { - tier: "OU", - }, - doomtrelliancharged: { - tier: "OU", - }, - arbitrellian: { - tier: "OU", - }, - arbitrelliancharged: { - tier: "OU", - }, - olturalarval: { - tier: "OU", - }, - oltura: { - tier: "OU", - }, - duremudira: { - tier: "OU", - }, - akuravashimu: { - tier: "UU", - }, - ebogaron: { - tier: "UU", - }, - purpleludroth: { - tier: "RU", - }, - ahtalneset: { - tier: "OU", - }, - xuwu: { - tier: "OU", - }, - oroshirin: { - tier: "OU", - }, - terrataur: { - tier: "UU", - }, - coralpukei: { - tier: "UU", - }, - rustramboros: { - tier: "UU", - }, - ajarakan: { - tier: "UU", - }, - emgalala: { - tier: "RU", - }, - tartaronis: { - tier: "OU", - }, - inferonis: { - tier: "OU", - }, - hallowedmohran: { - tier: "OU", - }, - unknown: { - tier: "OU", - }, - yamakurai: { - tier: "OU", - }, - balenox: { - tier: "RU", - }, - odibatorasu: { - tier: "OU", - }, - landgiacrus: { - tier: "OU", - }, - ashshanlung: { - tier: "OU", - }, - blackvios: { - tier: "UU", - }, - crysarios: { - tier: "RU", - }, - glanaktor: { - tier: "UU", - }, - greensioth: { - tier: "UU", - }, - zinogrehowling: { - tier: "UU", - }, - palepinas: { - tier: "OU", - }, - redzu: { - tier: "RU", - }, - basariossandstone: { - tier: "UU", - }, - shahmadur: { - tier: "OU", - }, - deviljhostarving: { - tier: "OU", - }, - whiteblos: { - tier: "UU", - }, - hellbladeglavenus: { - tier: "OU", - }, - crystalbearduragaan: { - tier: "OU", - }, - stonefistdaimyo: { - tier: "OU", - }, - emperorkirin: { - tier: "OU", - }, - frostfangbarioth: { - tier: "OU", - }, - redhelmarzuros: { - tier: "OU", - }, - harudomeruguz: { - tier: "OU", - }, - scornedmagnamalo: { - tier: "OU", - }, - seethingbazelgeuse: { - tier: "OU", - }, - snowbaronlagombi: { - tier: "OU", - }, - soulseermizutsune: { - tier: "OU", - }, - furiousrajang: { - tier: "OU", - }, - dreadqueenrathian: { - tier: "OU", - }, - dreadkingrathalos: { - tier: "OU", - }, - thunderlordzinogre: { - tier: "OU", - }, - ragingbrachydios: { - tier: "OU", - }, - abyssallagiacrus: { - tier: "OU", - }, - crimsonfatalis: { - tier: "OU", - }, - whitefatalis: { - tier: "OU", - }, - savagedeviljho: { - tier: "OU", - }, - plesiothz: { - tier: "OU", - }, - risenchameleos: { - tier: "OU", - }, - risenteostra: { - tier: "OU", - }, - risenkushala: { - tier: "OU", - }, - risenshagaru: { - tier: "OU", - }, - inagamiz: { - tier: "OU", - }, - deadeyegaruga: { - tier: "OU", - }, - elderfrostgammoth: { - tier: "OU", - }, - grimclawtigrex: { - tier: "OU", - }, -}; diff --git a/data/mods/monsterhunter/items.ts b/data/mods/monsterhunter/items.ts deleted file mode 100644 index 86134e1cd0..0000000000 --- a/data/mods/monsterhunter/items.ts +++ /dev/null @@ -1,483 +0,0 @@ -export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { - boosterenergy: { - inherit: true, - desc: "Activates abilities with Protosynthesis or Quark Drive effects. Single use.", - onUpdate(pokemon) { - if (!this.effectState.started || pokemon.transformed || this.queue.peek(true)?.choice === 'runSwitch') return; - if (!this.field.isWeather('sunnyday')) { - for (const proto of ['protopyre', 'protoneuron', 'prototoxin', 'protolithos', 'protoavian', - 'protorefraction', 'protosynthesis']) { - if (pokemon.hasAbility(proto)) { - if (!pokemon.volatiles[proto] /* && !this.field.isWeather('sunnyday') */ && pokemon.useItem()) { - pokemon.addVolatile(proto); - } - return; - } - } - } - if (!this.field.isTerrain('electricterrain')) { - for (const quark of ['quarkdrive', 'jellyfilleddrive', 'winddrive', 'heavydrive', 'jadedrive', 'airdrive', - 'magicdrive', 'phantomdrive', 'toxicdrive']) { - if (pokemon.hasAbility(quark)) { - if (!pokemon.volatiles[quark] && pokemon.useItem()) { - pokemon.addVolatile(quark); - } - return; - } - } - } - }, - }, - frostorb: { - name: "Frost Orb", - gen: 9, - num: 1000, - desc: "At the end of each turn, tries to freeze the holder.", - shortDesc: "At the end of each turn, tries to freeze the holder.", - fling: { - basePower: 30, - status: 'frz', - }, - onResidualOrder: 26, - onResidualSubOrder: 2, - onResidual(pokemon) { - pokemon.trySetStatus('frz', pokemon); - }, - }, - arzurite: { - name: "Arzurite", - gen: 9, - shortDesc: "If held by Arzuros, allows it to transform into Redhelm. (Mega-Evolution)", - megaStone: "Redhelm Arzuros", - megaEvolves: "Arzuros", - itemUser: ["Arzuros", "Redhelm Arzuros"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 585, - }, - astalite: { - name: "Astalite", - gen: 9, - shortDesc: "If held by Asatalos, allows it to transform into Boltreaver. (Mega-Evolution)", - megaStone: "Boltreaver Astalos", - megaEvolves: "Astalos", - itemUser: ["Astalos", "Boltreaver Astalos"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 613, - }, - bazelnite: { - name: "Bazelnite", - gen: 9, - shortDesc: "If held by Bazelgeuse, allows it to transform into Seething. (Mega-Evolution)", - megaStone: "Seething Bazelgeuse", - megaEvolves: "Bazelgeuse", - itemUser: ["Bazelgeuse", "Seething Bazelgeuse"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 591, - }, - bariothite: { - name: "Bariothite", - gen: 9, - shortDesc: "If held by Barioth, allows it to transform into Frostfang. (Mega-Evolution)", - megaStone: "Frostfang Barioth", - megaEvolves: "Barioth", - itemUser: ["Barioth", "Frostfang Barioth"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 685, - }, - brachylite: { - name: "Brachylite", - gen: 9, - shortDesc: "If held by Brachydios, allows it to transform into Raging. (Mega-Evolution)", - megaStone: "Raging Brachydios", - megaEvolves: "Brachydios", - itemUser: ["Brachydios", "Raging Brachydios"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 613, - }, - devilite: { - name: "Devilite", - gen: 9, - shortDesc: "If held by Deviljho, allows it to transform into Savage. (Mega-Evolution)", - megaStone: "Savage Deviljho", - megaEvolves: "Deviljho", - itemUser: ["Deviljho", "Savage Deviljho"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 584, - }, - diablite: { - name: "Diablite", - gen: 9, - shortDesc: "If held by Diablos, allows it to transform into Massacre. (Mega-Evolution)", - megaStone: "Massacre Diablos", - megaEvolves: "Diablos", - itemUser: ["Diablos", "Massacre Diablos"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 589, - }, - gammothite: { - name: "Gammothite", - gen: 9, - shortDesc: "If held by Gammoth, allows her to transform into Elderfrost. (Mega-Evolution)", - megaStone: "Elderfrost Gammoth", - megaEvolves: "Gammoth", - itemUser: ["Gammoth", "Elderfrost Gammoth"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 623, - }, - garugite: { - name: "Garugite", - gen: 9, - shortDesc: "If held by Yian Garuga, allows it to transform into Deadeye. (Mega-Evolution)", - megaStone: "Deadeye Garuga", - megaEvolves: "Yian Garuga", - itemUser: ["Yian Garuga", "Deadeye Garuga"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 577, - }, - harudomerite: { - name: "Harudomerite", - gen: 9, - shortDesc: "If held by Harudomerugu, allows it to enter it's Zenith Form. (Mega-Evolution)", - megaStone: "Harudomerugu-Z", - megaEvolves: "Harudomerugu", - itemUser: ["Harudomerugu", "Harudomerugu-Z"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 578, - }, - inagamite: { - name: "Inagamite", - gen: 9, - shortDesc: "If held by Inagami, allows it to enter it's Zenith Form. (Mega-Evolution)", - megaStone: "Inagami-Z", - megaEvolves: "Inagami", - itemUser: ["Inagami", "Inagami-Z"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 613, - }, - lagialite: { - name: "Lagialite", - gen: 9, - shortDesc: "If held by Lagiacrus, allows it to transform into Abyssal. (Mega-Evolution)", - megaStone: "Abyssal Lagiacrus", - megaEvolves: "Lagiacrus", - itemUser: ["Lagiacrus", "Abyssal Lagiacrus"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 585, - }, - lagombite: { - name: "Lagombite", - gen: 9, - shortDesc: "If held by Lagombi, allows it to transform into Snowbaron. (Mega-Evolution)", - megaStone: "Snowbaron Lagombi", - megaEvolves: "Lagombi", - itemUser: ["Lagombi", "Snowbaron Lagombi"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 583, - }, - magnamalite: { - name: "Magnamalite", - gen: 9, - shortDesc: "If held by Magnamalo, allows it to transform into Scorned. (Mega-Evolution)", - megaStone: "Scorned Magnamalo", - megaEvolves: "Magnamalo", - itemUser: ["Magnamalo", "Scorned Magnamalo"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 614, - }, - malfestite: { - name: "Malfestite", - gen: 9, - shortDesc: "If held by Malfestio, allows it to transform into Nightcloak. (Mega-Evolution)", - megaStone: "Nightcloak Malfestio", - megaEvolves: "Malfestio", - itemUser: ["Malfestio", "Nightcloak Malfestio"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 577, - }, - mizutsunite: { - name: "Mizutsunite", - gen: 9, - shortDesc: "If held by Mizutsune, allows it to transform into Soulseer. (Mega-Evolution)", - megaStone: "Soulseer Mizutsune", - megaEvolves: "Mizutsune", - itemUser: ["Mizutsune", "Soulseer Mizutsune"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 624, - }, - narwanite: { - name: "Narwanite", - gen: 9, - shortDesc: "If held by Narwa, allows it to transform into Allmother. (Mega-Evolution)", - megaStone: "Allmother Narwa", - megaEvolves: "Narwa", - itemUser: ["Narwa", "Allmother Narwa"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 596, - }, - plesite: { - name: "Plesite", - gen: 9, - shortDesc: "If held by Plesioth, allows it to enter it's Zenith Form. (Mega-Evolution)", - megaStone: "Plesioth-Z", - megaEvolves: "Plesioth", - itemUser: ["Plesioth", "Plesioth-Z"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 621, - }, - rajanite: { - name: "Rajanite", - gen: 9, - shortDesc: "If held by Rajang, allows it to transform into Furious. (Mega-Evolution)", - megaStone: "Furious Rajang", - megaEvolves: "Rajang", - itemUser: ["Rajang", "Furious Rajang"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 602, - }, - rathalosite: { - name: "Rathalosite", - gen: 9, - shortDesc: "If held by Rathalos, allows it to transform into Dreadking. (Mega-Evolution)", - megaStone: "Dreadking Rathalos", - megaEvolves: "Rathalos", - itemUser: ["Rathalos", "Dreadking Rathalos"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 586, - }, - rathianite: { - name: "Rathianite", - gen: 9, - shortDesc: "If held by Rathian, allows it to transform into Dreadqueen. (Mega-Evolution)", - megaStone: "Dreadqueen Rathian", - megaEvolves: "Rathian", - itemUser: ["Rathian", "Dreadqueen Rathian"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 607, - }, - risenitec: { - name: "Risenite-C", - gen: 9, - shortDesc: "If held by Chameleos, allows it to enter it's Risen Form. (Mega-Evolution)", - megaStone: "Risen Chameleos", - megaEvolves: "Chameleos", - itemUser: ["Chameleos", "Risen Chameleos"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 590, - }, - risenitek: { - name: "Risenite-K", - gen: 9, - shortDesc: "If held by Kushala, allows it to enter it's Risen Form. (Mega-Evolution)", - megaStone: "Risen Kushala", - megaEvolves: "Kushala Daora", - itemUser: ["Kushala Daora", "Risen Kushala"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 590, - }, - risenitet: { - name: "Risenite-T", - gen: 9, - shortDesc: "If held by Teostra, allows it to enter it's Risen Form. (Mega-Evolution)", - megaStone: "Risen Teostra", - megaEvolves: "Teostra", - itemUser: ["Teostra", "Risen Teostra"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 590, - }, - risenites: { - name: "Risenite-S", - gen: 9, - shortDesc: "If held by Shagaru Magala, allows it to enter it's Risen Form. (Mega-Evolution)", - megaStone: "Risen Shagaru", - megaEvolves: "Shagaru Magala", - itemUser: ["Shagaru Magala", "Risen Shagaru"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 590, - }, - tigrexite: { - name: "Tigrexite", - gen: 9, - shortDesc: "If held by Tigrex, allows it to transform into Grimclaw. (Mega-Evolution)", - megaStone: "Grimclaw Tigrex", - megaEvolves: "Tigrex", - itemUser: ["Tigrex", "Grimclaw Tigrex"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 619, - }, - zinogrite: { - name: "Zinogrite", - gen: 9, - shortDesc: "If held by Zinogre, allows it to transform into Thunderlord. (Mega-Evolution)", - megaStone: "Thunderlord Zinogre", - megaEvolves: "Zinogre", - itemUser: ["Zinogre", "Thunderlord Zinogre"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 590, - }, - kirinite: { - name: "Kirinite", - gen: 9, - shortDesc: "If held by Kirin, allows it to transform into Emperor. (Mega-Evolution)", - megaStone: "Emperor Kirin", - megaEvolves: "Kirin", - itemUser: ["Kirin", "Emperor Kirin"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 602, - }, - uragaanite: { - name: "Uragaanite", - gen: 9, - shortDesc: "If held by Uragaan, allows it to transform into Crystalbeard. (Mega-Evolution)", - megaStone: "Crystalbeard Uragaan", - megaEvolves: "Uragaan", - itemUser: ["Uragaan", "Crystalbeard Uragaan"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 663, - }, - daimyite: { - name: "Daimyite", - gen: 9, - shortDesc: "If held by Daimyo Hermitaur, allows it to transform into Stonefist. (Mega-Evolution)", - megaStone: "Stonefist Daimyo", - megaEvolves: "Daimyo Hermitaur", - itemUser: ["Daimyo Hermitaur", "Stonefist Daimyo"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 612, - }, - glavenite: { - name: "Glavenite", - gen: 9, - shortDesc: "If held by Glavenus, allows it to transform into Hellblade. (Mega-Evolution)", - megaStone: "Hellblade Glavenus", - megaEvolves: "Glavenus", - itemUser: ["Glavenus", "Hellblade Glavenus"], - onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; - }, - spritenum: 586, - }, - /* - Fatalis Orbs - */ - crimsongem: { - name: "Crimson Gem", - gen: 9, - shortDesc: "If held by Fatalis, triggers its Crimson Form in battle. (Primal Reversion)", - itemUser: ["Fatalis", "Crimson-Fatalis"], - onSwitchIn(pokemon) { - if (pokemon.isActive && pokemon.baseSpecies.name === 'Fatalis' && !pokemon.transformed) { - pokemon.formeChange('Crimson-Fatalis', this.effect, true); - } - }, - onTakeItem(item, source) { - if (source.baseSpecies.baseSpecies === 'Fatalis') return false; - return true; - }, - }, - whitegem: { - name: "White Gem", - gen: 9, - shortDesc: "If held by Fatalis, triggers its Crimson Form in battle. (Primal Reversion)", - itemUser: ["Fatalis", "White-Fatalis"], - onSwitchIn(pokemon) { - if (pokemon.isActive && pokemon.baseSpecies.name === 'Fatalis' && !pokemon.transformed) { - pokemon.formeChange('White-Fatalis', this.effect, true); - } - }, - onTakeItem(item, source) { - if (source.baseSpecies.baseSpecies === 'Fatalis') return false; - return true; - }, - }, -}; diff --git a/data/mods/monsterhunter/learnsets.ts b/data/mods/monsterhunter/learnsets.ts deleted file mode 100644 index a55330ebac..0000000000 --- a/data/mods/monsterhunter/learnsets.ts +++ /dev/null @@ -1,13957 +0,0 @@ -export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTable = { - aknosom: { - learnset: { - acrobatics: ["9M", "9L23"], - aerialace: ["9M"], - agility: ["9M", "9L43"], - aircutter: ["9M", "9L13"], - airslash: ["9M", "9L36"], - alluringvoice: ["9M"], - attract: ["9M"], - batonpass: ["9M", "9L16"], - bravebird: ["9M"], - charm: ["9M"], - confide: ["9M"], - covet: ["9T"], - defog: ["9M"], - pyroball: ["9L1"], - doubleteam: ["9M"], - drillpeck: ["9M"], - dualwingbeat: ["9M"], - endure: ["9M"], - facade: ["9M"], - featherdance: ["9M"], - fierydance: ["9M"], - firespin: ["9M"], - flamecharge: ["9M"], - blazeball: ["9L1"], - flamewheel: ["9M"], - flatter: ["9L33"], - fly: ["9M"], - growl: ["9L4"], - helpinghand: ["9M", "9L10"], - heatwave: ["9M"], - highjumpkick: ["9M"], - hurricane: ["9M", "9L47"], - mirrormove: ["9M"], - peck: ["9L6"], - pluck: ["9M"], - protect: ["9M"], - quiverdance: ["9M"], - raindance: ["9M"], - rest: ["9M"], - revelationdance: ["9L40"], - reversal: ["9M"], - roost: ["9L30"], - round: ["9M"], - safeguard: ["9M"], - skyattack: ["9M"], - sunnyday: ["9M"], - swagger: ["9M"], - swift: ["9M"], - swordsdance: ["9M"], - tailwind: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - teeterdance: ["9L26"], - terablast: ["9M"], - uturn: ["9M"], - victorydance: ["9M"], - workup: ["9M"], - willowisp: ["9M"], - substitute: ["9L1"], - }, - }, - arzuros: { - learnset: { - attract: ["9M"], - bodyslam: ["9M"], - crushclaw: ["9L1"], - chipaway: ["9L1"], - brickbreak: ["9M"], - stuffcheeks: ["9M"], - bulkup: ["9M"], - bulldoze: ["9M"], - charm: ["9M"], - closecombat: ["9M"], - confide: ["9M"], - counter: ["9T"], - covet: ["9L1"], - crunch: ["9M"], - curse: ["9M"], - cut: ["9M"], - defensecurl: ["9M"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dynamicpunch: ["9M"], - earthquake: ["9M"], - endure: ["9M"], - facade: ["9M"], - fakeout: ["9M", "9L1"], - faketears: ["9M", "9L1"], - fishiousrend: ["9M"], - fling: ["9M"], - focusblast: ["9M"], - furycutter: ["9M"], - furyswipes: ["9L8"], - gigaimpact: ["9M"], - hammerarm: ["9L64"], - headbutt: ["9M"], - helpinghand: ["9M"], - highhorsepower: ["9M"], - honeclaws: ["9M"], - hyperbeam: ["9M"], - hyperdrill: ["9M"], - hypervoice: ["9M"], - lastresort: ["9T"], - leer: ["9L1"], - lick: ["9L1"], - lowkick: ["9M"], - metalclaw: ["9M"], - mudslap: ["9M"], - payback: ["9L13", "9M"], - playnice: ["9L25"], - playrough: ["9M", "9L29"], - protect: ["9M"], - psychicfangs: ["9M"], - recycle: ["9M"], - rest: ["9M", "9L41"], - retaliate: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - rollout: ["9M"], - round: ["9M"], - scaryface: ["9M", "9L35"], - snatch: ["9L1"], - scratch: ["9L1"], - seismictoss: ["9M"], - shadowclaw: ["9M"], - slackoff: ["9M"], - slash: ["9L22"], - smackdown: ["9M"], - snore: ["9L41"], - stealthrock: ["9M"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - strength: ["9M"], - superpower: ["9T"], - swagger: ["9M", "9T"], - sweetscent: ["9L17"], - swordsdance: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - thrash: ["9M"], - throatchop: ["9M"], - torment: ["9M"], - trailblaze: ["9M"], - tripleaxel: ["9M"], - uproar: ["9M"], - workup: ["9M"], - substitute: ["9L1"], - }, - }, - barroth: { - learnset: { - amnesia: ["9M"], - bite: ["9L1"], - bodypress: ["9M"], - bodyslam: ["9M"], - bulldoze: ["9M"], - confide: ["9M"], - crunch: ["9M"], - curse: ["9M"], - dig: ["9M", "9L16"], - doubleedge: ["9M", "9L50"], - earthpower: ["9M"], - earthquake: ["9M", "9L44"], - endure: ["9M"], - facade: ["9M"], - firefang: ["9M", "9L1"], - fissure: ["9L56"], - gigaimpact: ["9M"], - hardpress: ["9M"], - headbutt: ["9T"], - headcharge: ["9M"], - headlongrush: ["9M"], - heavyslam: ["9M"], - highhorsepower: ["9M"], - hyperbeam: ["9M"], - hypervoice: ["9M"], - ironhead: ["9M"], - irontail: ["9M"], - muddywater: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - protect: ["9M"], - rest: ["9M", "9L38"], - roar: ["9M", "9L32"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - round: ["9M"], - sandattack: ["9L1"], - sandstorm: ["9M", "9L24"], - sandtomb: ["9M", "9L12"], - scorchingsands: ["9M"], - shoreup: ["9L62"], - snore: ["9M"], - stealthrock: ["9M"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - strength: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - superpower: ["9M"], - swagger: ["9M"], - tackle: ["9L1"], - takedown: ["9M", "9L28"], - terablast: ["9M"], - waterpulse: ["9M"], - }, - }, - basarios: { - learnset: { - ancientpower: ["9L1"], - block: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - bulldoze: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - fissure: ["9L1"], - headbutt: ["9L1"], - heatcrash: ["9L1"], - heavyslam: ["9L1"], - helpinghand: ["9L1"], - irondefense: ["9L1"], - irontail: ["9L1"], - lavaplume: ["9L1"], - mortalspin: ["9L1"], - mudslap: ["9L1"], - poisongas: ["9L1"], - poisonjab: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - rollout: ["9L1"], - sandattack: ["9L1"], - sandstorm: ["9L1"], - slackoff: ["9L1"], - sludgebomb: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - takedown: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - }, - }, - greatbaggi: { - learnset: { - allyswitch: ["9M", "9L16"], - chipaway: ["9L1"], - sedativespine: ["9L1"], - mentalload: ["9L1"], - takedown: ["9L1"], - attract: ["9M"], - batonpass: ["9M", "9L1"], - bodyslam: ["9M"], - calmmind: ["9M"], - confuseray: ["9M"], - confusion: ["9L12"], - copycat: ["9L1"], - doublekick: ["9L24"], - encore: ["9M", "9L1"], - endure: ["9M"], - energyball: ["9M"], - expandingforce: ["9T"], - extrasensory: ["9M"], - facade: ["9M"], - fakeout: ["9M"], - fling: ["9M"], - focusblast: ["9M"], - foulplay: ["9M"], - futuresight: ["9M"], - guardswap: ["9M"], - helpinghand: ["9M"], - hyperbeam: ["9M"], - hypnosis: ["9L32"], - icebeam: ["9M"], - icywind: ["9M", "9L20"], - lightscreen: ["9M", "9L1"], - magicroom: ["9M"], - metronome: ["9M"], - mimic: ["9L1"], - mirrorcoat: ["9L36"], - nastyplot: ["9M"], - payback: ["9M"], - populationbomb: ["9M"], - pound: ["9L1"], - powersplit: ["9M"], - powerswap: ["9M"], - protect: ["9M", "9L1"], - psybeam: ["9L28"], - psychic: ["9M", "9L48"], - psychicnoise: ["9M"], - psychicterrain: ["9M"], - psyshock: ["9M"], - recycle: ["9L1"], - rest: ["9M"], - round: ["9M"], - safeguard: ["9M", "9L1"], - screech: ["9M"], - shadowball: ["9M"], - skillswap: ["9M"], - slackoff: ["9M"], - snore: ["9M"], - stompingtantrum: ["9M"], - storedpower: ["9M"], - substitute: ["9M"], - taunt: ["9M"], - teeterdance: ["9L52"], - teleport: ["9M"], - thief: ["9M"], - trick: ["9M"], - trickroom: ["9M"], - uproar: ["9M"], - wonderroom: ["9M"], - zenheadbutt: ["9M"], - terablast: ["9L1"], - }, - }, - greatizuchi: { - learnset: { - agility: ["9M"], - aquacutter: ["9M"], - chipaway: ["9L1"], - assurance: ["9M"], - attract: ["9M"], - beatup: ["9L24", "9M"], - takedown: ["9L1"], - bodyslam: ["9M"], - brickbreak: ["9M", "9L32"], - bulkup: ["9M"], - closecombat: ["9M"], - cut: ["9L1"], - coaching: ["9M"], - crunch: ["9M", "9L42"], - curse: ["9M"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dragonclaw: ["9M"], - dragondance: ["9M"], - dragontail: ["9M"], - drainpunch: ["9M"], - endeavor: ["9M"], - endure: ["9M"], - extremespeed: ["9M"], - facade: ["9M", "9L16"], - fakeout: ["9M"], - faketears: ["9M"], - firepunch: ["9M"], - flyingpress: ["9M"], - focuspunch: ["9M", "9L54"], - foulplay: ["9M"], - gigaimpact: ["9M"], - headbutt: ["9L1"], - helpinghand: ["9M"], - highjumpkick: ["9L48"], - hyperbeam: ["9M"], - irondefense: ["9M"], - irontail: ["9M", "9T"], - knockoff: ["9M", "9T"], - lashout: ["9M", "9T"], - leer: ["9L1"], - lowkick: ["9M", "9L1"], - lowsweep: ["9M"], - metronome: ["9M"], - payback: ["9L1", "9M"], - populationbomb: ["9M"], - protect: ["9M", "9L20"], - psychocut: ["9M"], - rapidspin: ["9M"], - rest: ["9M"], - retaliate: ["9M"], - reversal: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - sandattack: ["9L12"], - scaryface: ["9M", "9L28"], - smackdown: ["9M"], - spite: ["9M", "9T"], - strength: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - superfang: ["9M", "9T"], - swagger: ["9L36", "9M"], - swordsdance: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - throatchop: ["9M", "9T"], - torment: ["9L20", "9M"], - toxic: ["9M"], - trailblaze: ["9M"], - upperhand: ["9M"], - uproar: ["9M"], - workup: ["9M"], - xscissor: ["9M"], - }, - }, - greatwroggi: { - learnset: { - acidspray: ["9M"], - chipaway: ["9L1"], - astonish: ["9L1"], - attract: ["9M"], - batonpass: ["9M"], - beatup: ["9M"], - bulldoze: ["9M"], - confide: ["9M"], - corrosivegas: ["9T"], - crosspoison: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - encore: ["9M"], - endure: ["9M"], - flatter: ["9L12"], - fling: ["9M"], - foulplay: ["9M", "9M", "9T"], - gigaimpact: ["9M"], - gunkshot: ["9M", "9T"], - helpinghand: ["9M"], - hyperbeam: ["9M"], - hypervoice: ["9M"], - knockoff: ["9M"], - mudshot: ["9M"], - mudslap: ["9M", "9L1"], - nastyplot: ["9M", "9L42"], - poisonjab: ["9M", "9L32"], - poisonsting: ["9L1"], - populationbomb: ["9M"], - protect: ["9M"], - rest: ["9M"], - roleplay: ["9M"], - round: ["9M"], - scaryface: ["9M"], - screech: ["9M"], - shadowball: ["9M"], - sludgebomb: ["9M", "9L48"], - sludgewave: ["9M"], - snore: ["9M"], - spite: ["9M"], - strength: ["9M"], - substitute: ["9M"], - swagger: ["9L28"], - takedown: ["9M"], - taunt: ["9M", "9L1"], - terablast: ["9M"], - thief: ["9M"], - torment: ["9M"], - toxic: ["9M", "9L36"], - venoshock: ["9M", "9L20"], - workup: ["9M"], - facade: ["9L1"], - }, - }, - kuluyaku: { - learnset: { - acrobatics: ["9M"], - acupressure: ["9L30"], - aerialace: ["9M"], - agility: ["9M", "9L23"], - devour: ["9L1"], - attract: ["9M"], - batonpass: ["9M"], - bodyslam: ["9M", "9T"], - boltbeak: ["9M"], - bravebird: ["9M"], - confide: ["9M"], - doubleedge: ["9M", "9T"], - doublehit: ["9L19"], - doubleteam: ["9M"], - drillpeck: ["9L38"], - drillrun: ["9M"], - echoedvoice: ["9M"], - eggbarrage: ["9M"], - endeavor: ["9M", "9L43", "9T"], - endure: ["9M", "9T"], - facade: ["9M"], - featherdance: ["9M"], - fling: ["9M"], - furyattack: ["9L12"], - gigaimpact: ["9M"], - growl: ["9L1"], - headbutt: ["9M"], - helpinghand: ["9M"], - highjumpkick: ["9M"], - hyperbeam: ["9M"], - knockoff: ["9M", "9T"], - lowkick: ["9M"], - lunge: ["9M"], - mimic: ["9M", "9T"], - mudslap: ["9M", "9T"], - partingshot: ["9M"], - payback: ["9M"], - peck: ["9L1"], - pluck: ["9L15"], - pounce: ["9M"], - protect: ["9M"], - quickattack: ["9L1"], - recycle: ["9M"], - reflect: ["9M"], - rest: ["9M"], - rockblast: ["9M"], - roost: ["9M", "9T"], - round: ["9M"], - snore: ["9T"], - spikes: ["9M"], - snatch: ["9L1"], - stompingtantrum: ["9M", "9T"], - substitute: ["9M"], - sunnyday: ["9M"], - swagger: ["9M", "9T"], - swift: ["9M", "9T"], - swordsdance: ["9M", "9L34"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - thrash: ["9L50"], - throatchop: ["9M"], - tidyup: ["9M"], - torment: ["9M"], - trailblaze: ["9M"], - trick: ["9M"], - uproar: ["9M", "9L26", "9T"], - uturn: ["9M"], - workup: ["9M"], - }, - }, - khezu: { - learnset: { - attract: ["9M"], - bodyslam: ["9M", "9T"], - breakingswipe: ["9M"], - brutalswing: ["9M"], - charge: ["9M", "9L16"], - chargebeam: ["9M"], - biocharge: ["9L1"], - devour: ["9L1"], - confide: ["9M"], - confuseray: ["9M", "9L29"], - curse: ["9M"], - defensecurl: ["9M"], - discharge: ["9L40"], - doubleedge: ["9M"], - dragonpulse: ["9M", "9L1"], - dragontail: ["9M"], - echoedvoice: ["9M"], - eerieimpulse: ["9M"], - electricterrain: ["9M"], - electroball: ["9M", "9L25"], - electroweb: ["9M"], - endure: ["9M"], - focusblast: ["9M"], - gigadrain: ["9M"], - growl: ["9L1"], - headbutt: ["9M"], - hyperbeam: ["9M"], - irontail: ["9M"], - leechlife: ["9M"], - lightscreen: ["9M", "9L57"], - lowkick: ["9M"], - magneticflux: ["9L1"], - magnetrise: ["9M"], - overdrive: ["9M"], - paraboliccharge: ["9M"], - risingvoltage: ["9M"], - protect: ["9M"], - rest: ["9M"], - roar: ["9M"], - rocksmash: ["9M"], - round: ["9M"], - seismictoss: ["9M"], - shockwave: ["9M"], - snore: ["9M"], - substitute: ["9M"], - supercellslam: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tackle: ["9L1"], - takedown: ["9M", "9L20"], - taunt: ["9M"], - terablast: ["9M"], - thunder: ["9M", "9L62"], - thunderbolt: ["9M"], - thundercage: ["9L1"], - thundershock: ["9L1"], - thunderwave: ["9M", "9L1"], - trailblaze: ["9M"], - uturn: ["9M"], - voltswitch: ["9M"], - wildcharge: ["9M"], - zapcannon: ["9L1"], - facade: ["9L1"], - }, - }, - lagombi: { - learnset: { - agility: ["9M"], - snowballcannon: ["9L1"], - assurance: ["9M"], - attract: ["9M"], - avalanche: ["9M"], - stuffcheeks: ["9M"], - bodyslam: ["9M"], - bulkup: ["9M"], - charm: ["9M"], - collisioncourse: ["9M"], - confide: ["9M"], - covet: ["9M"], - curse: ["9M"], - dig: ["9M"], - dive: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - echoedvoice: ["9M"], - encore: ["9M"], - endeavor: ["9M"], - endure: ["9M", "9L1"], - facade: ["9M"], - fakeout: ["9L1"], - flail: ["9L24"], - fling: ["9M"], - furyswipes: ["9L1"], - gigaimpact: ["9M"], - growl: ["9L1"], - honeclaws: ["9M"], - hyperbeam: ["9M"], - iceball: ["9M"], - icebeam: ["9M"], - icefang: ["9M"], - iciclecrash: ["9L0"], - iciclespear: ["9M"], - lowkick: ["9M"], - megakick: ["9M"], - metalclaw: ["9M"], - mudshot: ["9M"], - playnice: ["9L12"], - powdersnow: ["9L1"], - protect: ["9M"], - rapidspin: ["9M"], - rest: ["9M", "9L36"], - reversal: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - scaryface: ["9M"], - shadowclaw: ["9M"], - sheercold: ["9L46"], - slackoff: ["9M"], - slash: ["9L21"], - snarl: ["9M"], - snowscape: ["9M", "9L30"], - spinout: ["9M"], - strength: ["9M"], - substitute: ["9M"], - swagger: ["9L27"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - thrash: ["9L33"], - throatchop: ["9M"], - tidyup: ["9M"], - uturn: ["9M"], - }, - }, - royalludroth: { - learnset: { - acidarmor: ["9L45"], - tailslap: ["9L1"], - aquajet: ["9M"], - aquaring: ["9L35"], - aquastep: ["9M"], - aquatail: ["9M"], - bewitchedbubble: ["9L12"], - attract: ["9M"], - aurorabeam: ["9L30"], - batonpass: ["9M"], - bite: ["9L1"], - bodyslam: ["9M"], - brine: ["9M"], - bubblebeam: ["9M"], - wretchedwater: ["9L1"], - chillingwater: ["9M"], - coil: ["9M"], - covet: ["9L1"], - decorate: ["9M"], - dive: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - echoedvoice: ["9M"], - endure: ["9M"], - faketears: ["9M"], - flipturn: ["9M"], - focusenergy: ["9M"], - gigaimpact: ["9M"], - glare: ["9M"], - growl: ["9L1"], - haze: ["9M", "9L20"], - headbutt: ["9M"], - healbell: ["9M"], - hydropump: ["9M", "9L50"], - hyperbeam: ["9M"], - hypervoice: ["9M"], - icebeam: ["9M"], - icywind: ["9M"], - lastresort: ["9L55"], - liquidation: ["9M"], - mist: ["9M"], - muddywater: ["9M", "9L40"], - mudslap: ["9M"], - protect: ["9M"], - quickattack: ["9L10"], - raindance: ["9M"], - recover: ["9M"], - reflect: ["9M"], - rest: ["9M"], - roar: ["9M"], - sandattack: ["9L5"], - scald: ["9M"], - snore: ["9M"], - storedpower: ["9M"], - substitute: ["9M"], - surf: ["9M"], - swift: ["9M"], - tackle: ["9L1"], - tailwhip: ["9L1"], - takedown: ["9M"], - terablast: ["9M"], - tidyup: ["9M"], - waterfall: ["9M"], - watergun: ["9L0"], - waterpulse: ["9M"], - weatherball: ["9M"], - whirlpool: ["9M"], - workup: ["9M"], - facade: ["9L1"], - }, - }, - tetranadon: { - learnset: { - absorb: ["9L1"], - amnesia: ["9M"], - aquastep: ["9M"], - leechseed: ["9M"], - seedbomb: ["9M"], - chipaway: ["9L1"], - stuffcheeks: ["9M"], - attract: ["9M"], - bellydrum: ["9M"], - devour: ["9L1"], - bodyslam: ["9M"], - brickbreak: ["9M"], - bulkup: ["9M"], - bulletseed: ["9M"], - circlethrow: ["9M"], - confide: ["9M"], - counter: ["9M"], - dive: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - drainpunch: ["9M"], - dynamicpunch: ["9M"], - echoedvoice: ["9M"], - encore: ["9M"], - endure: ["9M"], - energyball: ["9M"], - facade: ["9M"], - flail: ["9L1"], - fling: ["9M"], - furyswipes: ["9L1"], - gigaimpact: ["9M"], - grassknot: ["9M"], - grassyglide: ["9M"], - grassyterrain: ["9M"], - growl: ["9L1"], - headbutt: ["9M"], - hydropump: ["9M"], - hyperbeam: ["9M"], - hypervoice: ["9M"], - icepunch: ["9M"], - jetpunch: ["9M"], - knockoff: ["9M"], - megadrain: ["9L1"], - megapunch: ["9M"], - muddywater: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - protect: ["9M"], - raindance: ["9M"], - rest: ["9M"], - rocksmash: ["9M"], - round: ["9M"], - saltcure: ["9M"], - seismictoss: ["9M"], - snore: ["9M"], - solarbeam: ["9M"], - spiritbreak: ["9M"], - spitup: ["9M"], - stockpile: ["9M"], - strength: ["9M"], - substitute: ["9M"], - surf: ["9M"], - swagger: ["9M"], - swallow: ["9M"], - synthesis: ["9M"], - syrupbomb: ["9M"], - takedown: ["9M"], - teeterdance: ["9L1"], - terablast: ["9M"], - thief: ["9M"], - trailblaze: ["9M"], - waterfall: ["9M"], - watergun: ["9L1"], - whirlpool: ["9M"], - woodhammer: ["9M"], - wavecrash: ["9M"], - }, - }, - anjanath: { - learnset: { - attract: ["9M"], - blazekick: ["9M"], - bodyslam: ["9M", "9L32"], - brutalswing: ["9M"], - closecombat: ["9M"], - tailslap: ["9L1"], - stuffcheeks: ["9M"], - bulkup: ["9M"], - bulldoze: ["9M"], - burningjealousy: ["9T"], - confide: ["9M"], - heatbeam: ["9L1"], - crunch: ["9M"], - curse: ["9M"], - doubleteam: ["9M"], - dragonclaw: ["9M"], - dragondance: ["9M"], - dragonpulse: ["9M"], - dragontail: ["9M"], - earthquake: ["9M"], - ember: ["9L4"], - endeavor: ["9T"], - endure: ["9M"], - explosion: ["9L52"], - facade: ["9M"], - fireblast: ["9M"], - devour: ["9L1"], - firefang: ["9M"], - firespin: ["9M"], - flail: ["9L16"], - flamecharge: ["9M"], - flamethrower: ["9M"], - flareblitz: ["9M"], - focusblast: ["9M"], - gigaimpact: ["9M"], - headsmash: ["9M"], - heatwave: ["9M"], - heavyslam: ["9M"], - hyperbeam: ["9M"], - incinerate: ["9L20"], - irontail: ["9M"], - jawlock: ["9M"], - lashout: ["9T"], - outrage: ["9M"], - overheat: ["9M", "9L48"], - pursuit: ["9L1"], - payback: ["9M"], - protect: ["9M", "9L8"], - psychicfangs: ["9M"], - ragingfury: ["9M"], - rest: ["9M"], - roar: ["9M"], - rocktomb: ["9M"], - round: ["9M"], - scaleshot: ["9T"], - scaryface: ["9M"], - smackdown: ["9M"], - smog: ["9L1"], - snore: ["9M"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - superfang: ["9M"], - swagger: ["9M"], - tackle: ["9L1"], - thunderfang: ["9M"], - uproar: ["9M"], - wideguard: ["9M"], - workup: ["9M"], - terablast: ["9L1"], - }, - }, - barioth: { - learnset: { - acrobatics: ["9M"], - aviniasblessing: ["9L1"], - aerialace: ["9M"], - avalanche: ["9M"], - blizzard: ["9M"], - brickbreak: ["9M"], - bulletpunch: ["9M"], - crunch: ["9M"], - glacialgale: ["9L1"], - defog: ["9L1"], - coldsnap: ["9L1"], - endure: ["9M"], - facade: ["9M"], - fakeout: ["9M"], - falseswipe: ["9M"], - gigaimpact: ["9M"], - haze: ["9M", "9L15"], - headsmash: ["9M"], - hyperbeam: ["9M"], - icefang: ["9M"], - icehammer: ["9M"], - iceshard: ["9L20"], - icespinner: ["9M"], - iciclecrash: ["9L45"], - icywind: ["9M", "9L5"], - lashout: ["9M"], - liquidation: ["9M"], - meanlook: ["9L1"], - mist: ["9L15"], - nightslash: ["9L35"], - nobleroar: ["9L35"], - payback: ["9L10"], - powdersnow: ["9L1"], - protect: ["9M"], - psychicfangs: ["9M"], - rest: ["9M"], - sacredsword: ["9L60"], - scaryface: ["9M"], - sheercold: ["9L75"], - snarl: ["9M"], - snowscape: ["9M", "9L30"], - substitute: ["9M"], - suckerpunch: ["9L55"], - swordsdance: ["9M", "9L25"], - takedown: ["9M"], - terablast: ["9M"], - throatchop: ["9M", "9L70"], - airslash: ["9L1"], - hurricane: ["9L1"], - tailwind: ["9L1"], - roost: ["9L1"], - astonish: ["9L1"], - dualwingbeat: ["9L1"], - icebeam: ["9L1"], - freezedry: ["9L1"], - }, - }, - bishaten: { - learnset: { - acrobatics: ["9M"], - aerialace: ["9M"], - agility: ["9M"], - aurasphere: ["9M"], - recycle: ["9M"], - flash: ["9M"], - chipaway: ["9L1"], - snatch: ["9L1"], - astonish: ["9L1"], - attract: ["9M"], - forcepalm: ["9L1"], - stuffcheeks: ["9M"], - devour: ["9L1"], - batonpass: ["9M"], - bounce: ["9T"], - skyuppercut: ["9T"], - mossbomb: ["9T"], - brickbreak: ["9M"], - confide: ["9M"], - covet: ["9T"], - dig: ["9M"], - doubleedge: ["9M"], - doublehit: ["9L32"], - doubleteam: ["9M"], - endeavor: ["9M"], - endure: ["9M"], - extremespeed: ["9M"], - facade: ["9M"], - fakeout: ["9M"], - firepunch: ["9M"], - fling: ["9M"], - focuspunch: ["9M"], - foulplay: ["9M"], - furycutter: ["9T"], - furyswipes: ["9L18"], - gigaimpact: ["9M"], - grassknot: ["9M"], - gunkshot: ["9M"], - headbutt: ["9T"], - helpinghand: ["9M"], - honeclaws: ["9M"], - hyperbeam: ["9M"], - irontail: ["9T"], - knockoff: ["9M"], - lastresort: ["9L43"], - leechseed: ["9M"], - lowkick: ["9M"], - lowsweep: ["9M"], - metronome: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - nastyplot: ["9M"], - nuzzle: ["9M"], - payback: ["9M"], - playrough: ["9M"], - poisonpowder: ["9M"], - powergem: ["9M"], - protect: ["9M"], - rest: ["9M"], - retaliate: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - roleplay: ["9T"], - round: ["9M"], - sandattack: ["9L1"], - scratch: ["9L1"], - screech: ["9L25"], - seedbomb: ["9M"], - shadowball: ["9M"], - shadowclaw: ["9M"], - slackoff: ["9M"], - sleeppowder: ["9M"], - smackdown: ["9M"], - snore: ["9T"], - strength: ["9M"], - stunspore: ["9M"], - substitute: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tailwhip: ["9L1"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - throatchop: ["9M"], - tickle: ["9L15"], - trailblaze: ["9M"], - tripleaxel: ["9M"], - upperhand: ["9M"], - uproar: ["9T"], - uturn: ["9M"], - workup: ["9M"], - tailslap: ["9L1"], - }, - }, - daimyohermitaur: { - learnset: { - amnesia: ["9M"], - ancientpower: ["9T"], - crushclaw: ["9L1"], - chipaway: ["9L1"], - attract: ["9M"], - bodyslam: ["9M"], - bodypress: ["9M"], - brickbreak: ["9M"], - brine: ["9M"], - brutalswing: ["9M"], - bubblebeam: ["9L20"], - confide: ["9M"], - crabhammer: ["9L54"], - curse: ["9M"], - dig: ["9M"], - dive: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - endure: ["9M"], - facade: ["9M"], - falseswipe: ["9M"], - flail: ["9L31"], - furycutter: ["9M"], - gigaimpact: ["9M"], - guillotine: ["9L60"], - hammerarm: ["9L1"], - harden: ["9L1"], - highhorsepower: ["9M"], - honeclaws: ["9M"], - hydropump: ["9M"], - hyperbeam: ["9M"], - icebeam: ["9M"], - irondefense: ["9M"], - knockoff: ["9T"], - leer: ["9L1"], - liquidation: ["9M"], - metalclaw: ["9L1"], - mudshot: ["9M"], - mudslap: ["9M"], - protect: ["9M"], - quash: ["9M"], - raindance: ["9M"], - recover: ["9M"], - rapidspin: ["9M"], - rest: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - scald: ["9M"], - shellsmash: ["9M"], - shelter: ["9M"], - slam: ["9L42"], - stomp: ["9L24"], - stompingtantrum: ["9M"], - strength: ["9M"], - substitute: ["9M"], - superpower: ["9M"], - surf: ["9M"], - swagger: ["9M"], - takedown: ["9M"], - thief: ["9M"], - visegrip: ["9M"], - watergun: ["9L1"], - waterpulse: ["9T"], - whirlpool: ["9M"], - wideguard: ["9L1"], - xscissor: ["9M"], - terablast: ["9L1"], - }, - }, - jyuratodus : { - learnset: { - aquaring: ["9T"], - aquatail: ["9T"], - astonish: ["9M"], - bulldoze: ["9M"], - confide: ["9M",], - curse: ["9M"], - shoreup: ["9L1"], - coldsnap: ["9L1"], - dig: ["9M"], - doubleteam: ["9M"], - earthpower: ["9M"], - earthquake: ["9M"], - endeavor: ["9T"], - endure: ["9M"], - facade: ["9M"], - fissure: ["9L55"], - flail: ["9L50"], - icebeam: ["9T"], - liquidation: ["9T"], - muddywater: ["9M"], - mudshot: ["9M"], - mudslap: ["9L1"], - painsplit: ["9M"], - payback: ["9M"], - protect: ["9M"], - recover: ["9M"], - rest: ["9M"], - rocktomb: ["9M"], - sandstorm: ["9M"], - scald: ["9M"], - sludgebomb: ["9M"], - sludgewave: ["9M"], - snore: ["9M"], - stompingtantrum: ["9M"], - substitute: ["9M"], - surf: ["9M"], - surgingstrikes: ["9L25"], - swagger: ["9M"], - tackle: ["9L1"], - uproar: ["9M"], - watergun: ["9L1"], - waterpulse: ["9T"], - flipturn: ["9M"], - terablast: ["9L1"], - }, - }, - pukeipukei: { - learnset: { - acrobatics: ["9L1"], - aerialace: ["9L1"], - strengthsap: ["9L1"], - naturalgift: ["9L1"], - aircutter: ["9L1"], - roost: ["9L1"], - airslash: ["9L1"], - defog: ["9L1"], - hurricane: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - tailwind: ["9L1"], - mossbomb: ["9L1"], - absorb: ["9L1"], - astonish: ["9L1"], - attract: ["9M"], - bodyslam: ["9M"], - bulletseed: ["9M"], - clearsmog: ["9L20"], - confide: ["9M"], - tailslap: ["9M"], - weatherball: ["9M"], - camouflage: ["9M"], - lick: ["9M"], - sweetlick: ["9M"], - doubleteam: ["9M"], - endure: ["9M"], - energyball: ["9M"], - facade: ["9M"], - firstimpression: ["9M"], - foulplay: ["9M"], - gastroacid: ["9T"], - gigadrain: ["9M"], - grassknot: ["9M"], - grassyterrain: ["9M"], - growth: ["9L1"], - hex: ["9M"], - ingrain: ["9L32"], - knockoff: ["9M"], - leafstorm: ["9M"], - leechseed: ["9M"], - magicalleaf: ["9M"], - megadrain: ["9L12"], - memento: ["9M"], - payback: ["9M"], - poisonfang: ["9M"], - poisontail: ["9M"], - pollenpuff: ["9M"], - protect: ["9M"], - rest: ["9M"], - round: ["9M"], - scaryface: ["9M"], - seedbomb: ["9M"], - sludgebomb: ["9M"], - snore: ["9M"], - solarbeam: ["9M"], - stunspore: ["9L1"], - spitup: ["9M"], - stockpile: ["9M"], - swallow: ["9M"], - substitute: ["9M"], - swagger: ["9M"], - sweetscent: ["9L24"], - terablast: ["9M"], - toxic: ["9M"], - uturn: ["9M"], - venoshock: ["9M"], - worryseed: ["9T"], - }, - }, - somnacanth: { - learnset: { - alluringvoice: ["9M"], - aquajet: ["9M"], - aquaring: ["9L12"], - flash: ["9M"], - aquatail: ["9L32"], - coldsnap: ["9L1"], - attract: ["9L16"], - batonpass: ["9M"], - bind: ["9T"], - bodyslam: ["9M"], - brine: ["9M"], - arcticshriek: ["9L1"], - brutalswing: ["9M"], - calmmind: ["9M"], - chillingwater: ["9M"], - coil: ["9L48"], - confide: ["9M"], - confuseray: ["9M"], - disarmingvoice: ["9M"], - dive: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dragoncheer: ["9M"], - dragondance: ["9M"], - dragonpulse: ["9M"], - drainingkiss: ["9M"], - endure: ["9M"], - flail: ["9L1"], - flipturn: ["9M"], - gigaimpact: ["9M"], - glare: ["9M"], - haze: ["9M"], - helpinghand: ["9M"], - hydropump: ["9M"], - hyperbeam: ["9M"], - hypnosis: ["9M"], - icebeam: ["9M"], - icywind: ["9M"], - imprison: ["9M"], - lifedew: ["9L20"], - lightscreen: ["9M"], - mirrorcoat: ["9S3"], - moonblast: ["9M"], - muddywater: ["9M"], - mudshot: ["9M"], - mudslap: ["9T"], - perishsong: ["9M"], - protect: ["9M"], - psychic: ["9M"], - psychup: ["9M"], - raindance: ["9M"], - recover: ["9L28"], - rest: ["9M"], - round: ["9M"], - safeguard: ["9L36"], - scald: ["9M"], - snore: ["9M"], - sparklingaria: ["9M"], - splash: ["9L1"], - substitute: ["9M"], - surf: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tackle: ["9L1"], - takedown: ["9M"], - terablast: ["9M"], - toxic: ["9M"], - twister: ["9L8"], - waterfall: ["9M"], - watergun: ["9L1"], - waterpulse: ["9M"], - whirlpool: ["9M"], - wish: ["9M"], - powderkeg: ["9L1"], - wrap: ["9L1"], - facade: ["9L1"], - shadowball: ["9L1"], - hex: ["9L1"], - bittermalice: ["9L1"], - ominouswind: ["9L1"], - destinybond: ["9L1"], - }, - }, - tobikadachi: { - learnset: { - acupressure: ["9M"], - agility: ["9M"], - attract: ["9M"], - batonpass: ["9M"], - bite: ["9L1"], - bodyslam: ["9M"], - charge: ["9M"], - chargebeam: ["9M"], - charm: ["9M"], - confide: ["9M"], - copycat: ["9L1"], - covet: ["9L1"], - detect: ["9M"], - dig: ["9M"], - discharge: ["9L40"], - doubleteam: ["9M"], - echoedvoice: ["9M"], - eerieimpulse: ["9M"], - electricterrain: ["9M"], - electroball: ["9M"], - electroweb: ["9M"], - endure: ["9M"], - facade: ["9M"], - falseswipe: ["9M"], - focusenergy: ["9M"], - gigaimpact: ["9M"], - glare: ["9M"], - growl: ["9L1"], - headbutt: ["9M"], - helpinghand: ["9M"], - hyperbeam: ["9M"], - hypervoice: ["9M"], - irontail: ["9M"], - lastresort: ["9L55"], - lightscreen: ["9M"], - magnetrise: ["9T"], - metalsound: ["9M"], - mimic: ["9M"], - mudslap: ["9M"], - partingshot: ["9M"], - pinmissile: ["9L35"], - protect: ["9M"], - quickattack: ["9L10"], - fakeout: ["9L10"], - rapidspin: ["9M"], - rest: ["9M"], - retaliate: ["9M"], - risingvoltage: ["9T"], - roar: ["9M"], - rocksmash: ["9M"], - round: ["9M"], - sandattack: ["9L5"], - shockwave: ["9T"], - snore: ["9M"], - spikes: ["9M"], - strength: ["9M"], - substitute: ["9M"], - supercellslam: ["9M"], - swagger: ["9M"], - swift: ["9M"], - swordsdance: ["9M"], - tackle: ["9L1"], - tailwhip: ["9L1"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thunder: ["9M"], - thunderbolt: ["9M"], - thunderfang: ["9M"], - thundershock: ["9L0"], - thunderwave: ["9M"], - toxic: ["9M"], - trick: ["9M"], - voltswitch: ["9M"], - volttackle: ["9M"], - wildcharge: ["9M"], - workup: ["9M"], - zapcannon: ["9M"], - }, - }, - volvidon: { - learnset: { - acidspray: ["9M"], - amnesia: ["9M", "9L0"], - belch: ["9M"], - bodypress: ["9M"], - rollout: ["9M"], - defensecurl: ["9M"], - sweetlick: ["9M"], - lick: ["9M"], - bodyslam: ["9M"], - bulldoze: ["9M"], - crushclaw: ["9L1"], - corrosivegas: ["9M"], - curse: ["9M"], - dig: ["9M"], - doubleedge: ["9M"], - earthpower: ["9M"], - earthquake: ["9M", "9L48"], - endure: ["9M"], - facade: ["9M"], - fakeout: ["9M"], - gastroacid: ["9M"], - gigaimpact: ["9M"], - gunkshot: ["9M"], - haze: ["9M"], - heavyslam: ["9M"], - helpinghand: ["9M"], - highhorsepower: ["9M"], - hyperbeam: ["9M"], - icespinner: ["9M"], - muddywater: ["9M"], - mudshot: ["9M", "9L8"], - mudslap: ["9M"], - nuzzle: ["9M"], - poisonjab: ["9M", "9L24"], - poisonsting: ["9L1"], - rapidspin: ["9L1"], - protect: ["9M"], - rest: ["9M"], - rockslide: ["9M"], - rocktomb: ["9M"], - snatch: ["9L1"], - sandstorm: ["9M"], - slam: ["9L16"], - sludgebomb: ["9M"], - spikes: ["9M"], - stealthrock: ["9M"], - stompingtantrum: ["9M"], - substitute: ["9M"], - tailwhip: ["9L1"], - takedown: ["9M"], - terablast: ["9M"], - toxic: ["9M", "9L40"], - toxicspikes: ["9M", "9L4"], - trailblaze: ["9M"], - trick: ["9M"], - venoshock: ["9M"], - }, - }, - gossharag: { - learnset: { - sharpen: ["9L1"], - acupressure: ["9M"], - stompingtantrum: ["9M"], - assurance: ["9M"], - attract: ["9M"], - blizzard: ["9M"], - block: ["9M"], - bodypress: ["9M"], - bodyslam: ["9M"], - brickbreak: ["9M"], - bulkup: ["9M"], - charm: ["9M"], - closecombat: ["9M"], - confide: ["9M"], - covet: ["9T"], - curse: ["9M"], - cut: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - echoedvoice: ["9M"], - encore: ["9M"], - endeavor: ["9M"], - endure: ["9M"], - facade: ["9M"], - fellstinger: ["9M"], - flail: ["9L24"], - fling: ["9M"], - focusblast: ["9M"], - focuspunch: ["9M"], - frostbreath: ["9L18"], - furyswipes: ["9L1"], - gigaimpact: ["9M"], - glaciallance: ["9M"], - growl: ["9L1"], - guillotine: ["9M"], - hardpress: ["9M"], - hyperbeam: ["9M"], - icebeam: ["9M"], - icepunch: ["9M"], - iceshard: ["9M"], - iciclecrash: ["9L0"], - icywind: ["9M"], - metalclaw: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - playrough: ["9M"], - powdersnow: ["9L1"], - protect: ["9M"], - rest: ["9M"], - reversal: ["9M"], - roar: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - round: ["9M"], - sacredsword: ["9M"], - scaryface: ["9M"], - shadowclaw: ["9M"], - slash: ["9L21"], - snarl: ["9M"], - snore: ["9M"], - snowscape: ["9M"], - strength: ["9M"], - substitute: ["9M"], - superpower: ["9L51"], - swagger: ["9L27"], - swordsdance: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - thrash: ["9L33"], - throatchop: ["9M"], - xscissor: ["9M"], - }, - }, - auroracanth: { - learnset: { - agility: ["9M"], - aquatail: ["9M"], - attract: ["9M"], - aurorabeam: ["9L1"], - auroraveil: ["9L1"], - coldsnap: ["9L1"], - avalanche: ["9M"], - arcticshriek: ["9L1"], - batonpass: ["9M"], - bittermalice: ["9M"], - blizzard: ["9M", "9L1"], - bodyslam: ["9M"], - calmmind: ["9M"], - charm: ["9M"], - chillingwater: ["9M"], - coil: ["9M"], - confide: ["9M"], - confuseray: ["9M", "9L1"], - covet: ["9M"], - darkpulse: ["9M"], - dazzlinggleam: ["9M", "9L0"], - destinybond: ["9M"], - disable: ["9L1"], - disarmingvoice: ["9M"], - doubleteam: ["9M"], - dreameater: ["9M"], - encore: ["9M"], - endure: ["9M"], - extrasensory: ["9L1"], - facade: ["9M"], - faketears: ["9M"], - foulplay: ["9M"], - freezedry: ["9L1"], - frostbreath: ["9M"], - haze: ["9M"], - headbutt: ["9L1"], - healbell: ["9M"], - helpinghand: ["9M"], - hex: ["9M"], - hyperbeam: ["9M"], - hypnosis: ["9L1"], - icebeam: ["9M", "9L1"], - iceshard: ["9L1"], - iciclespear: ["9M"], - icywind: ["9M", "9L1"], - imprison: ["9M", "9L1"], - irontail: ["9M"], - memento: ["9M"], - mist: ["9L1"], - nastyplot: ["9M", "9L1"], - painsplit: ["9M"], - payback: ["9M"], - perishsong: ["9M"], - playrough: ["9M"], - poltergeist: ["9M"], - powdersnow: ["9L1"], - protect: ["9M"], - psychup: ["9M"], - rest: ["9M"], - roar: ["9M"], - roleplay: ["9M"], - round: ["9M"], - safeguard: ["9M", "9L1"], - shadowball: ["9M"], - sheercold: ["9L1"], - snarl: ["9M"], - snore: ["9M"], - snowscape: ["9M"], - spite: ["9M", "9L1"], - storedpower: ["9M"], - substitute: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tackle: ["9L1"], - tailwhip: ["9L1"], - takedown: ["9M"], - terablast: ["9M"], - tripleaxel: ["9M"], - waterpulse: ["9M"], - weatherball: ["9M"], - }, - }, - almudron: { - learnset: { - accelerock: ["9M"], - attract: ["9M"], - shoreup: ["9L1"], - bodypress: ["9M"], - bodyslam: ["9M"], - tailslap: ["9L1"], - bulldoze: ["9M", "9L12"], - coil: ["9M"], - confide: ["9M"], - counter: ["9L24"], - curse: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - earthpower: ["9M"], - earthquake: ["9M", "9L40"], - endeavor: ["9M"], - endure: ["9M"], - facade: ["9M"], - focusblast: ["9M"], - gigaimpact: ["9M"], - glare: ["9M"], - headlongrush: ["9M"], - heavyslam: ["9M", "9L34"], - highhorsepower: ["9M", "9L28"], - hyperbeam: ["9M"], - irondefense: ["9M", "9L1"], - ironhead: ["9M"], - knockoff: ["9M"], - lashout: ["9M"], - liquidation: ["9M"], - lowkick: ["9M"], - lowsweep: ["9M"], - mudshot: ["9M"], - mudslap: ["9M", "9L1"], - payback: ["9M"], - powergem: ["9M"], - protect: ["9M"], - rapidspin: ["9M"], - rest: ["9M"], - roar: ["9M"], - rockpolish: ["9M"], - rockslide: ["9M"], - rocksmash: ["9L1"], - rocktomb: ["9M"], - flipturn: ["9M"], - round: ["9M"], - sandstorm: ["9M"], - sandtomb: ["9M"], - scaryface: ["9M"], - scorchingsands: ["9M"], - smackdown: ["9M"], - snore: ["9M"], - spinout: ["9M"], - stealthrock: ["9M"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - strength: ["9L20"], - substitute: ["9M"], - suckerpunch: ["9M"], - superpower: ["9L52", "9M"], - swagger: ["9M"], - takedown: ["9M"], - terablast: ["9M"], - toxic: ["9M"], - }, - }, - orangaten: { - learnset: { - acrobatics: ["9M", "9L52"], - aerialace: ["9M"], - agility: ["9M"], - skyuppercut: ["9T"], - attract: ["9M"], - doublehit: ["9L1"], - snatch: ["9L1"], - forcepalm: ["9L1"], - aurasphere: ["9M"], - devour: ["9L1"], - stuffcheeks: ["9M"], - seedbomb: ["9M"], - blastburn: ["9M"], - pyroball: ["9L1"], - blazekick: ["9M"], - blazeball: ["9L1"], - bodyslam: ["9M"], - brickbreak: ["9M"], - bulkup: ["9M"], - mossbomb: ["9M"], - burningjealousy: ["9M"], - closecombat: ["9M", "9L0"], - coaching: ["9M"], - confide: ["9M"], - covet: ["9T"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - drainpunch: ["9M"], - earthquake: ["9M"], - ember: ["9L1"], - encore: ["9M"], - endeavor: ["9M"], - endure: ["9M"], - facade: ["9M"], - fakeout: ["9M"], - faketears: ["9M"], - feint: ["9L26"], - firepunch: ["9M"], - firespin: ["9M", "9L42"], - flamecharge: ["9M"], - flamethrower: ["9M"], - flamewheel: ["9L19"], - flareblitz: ["9M", "9L47"], - fling: ["9M"], - focusblast: ["9M"], - focuspunch: ["9M"], - furyswipes: ["9L16"], - gigaimpact: ["9M"], - grassknot: ["9M"], - gunkshot: ["9M"], - headbutt: ["9T"], - heatwave: ["9M"], - helpinghand: ["9M"], - honeclaws: ["9M"], - incinerate: ["9M"], - irontail: ["9T"], - knockoff: ["9M"], - lashout: ["9M"], - leer: ["9L1"], - lowkick: ["9M"], - lowsweep: ["9M"], - machpunch: ["9L1"], - metronome: ["9M"], - mudslap: ["9M"], - nastyplot: ["9M"], - nuzzle: ["9M"], - overheat: ["9M"], - playrough: ["9M"], - poisonjab: ["9M"], - powergem: ["9M"], - protect: ["9M"], - psychup: ["9M"], - ragingfury: ["9L65"], - rest: ["9M"], - retaliate: ["9M"], - reversal: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - roleplay: ["9T"], - rollout: ["9T"], - round: ["9M"], - scaryface: ["9M"], - scratch: ["9L1"], - shadowclaw: ["9M"], - slackoff: ["9L1"], - smackdown: ["9M"], - snore: ["9T"], - stealthrock: ["9M"], - stoneedge: ["9M"], - strength: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - swagger: ["9M"], - swift: ["9M"], - swordsdance: ["9M"], - takedown: ["9M"], - taunt: ["9M", "9L1"], - temperflare: ["9M"], - terablast: ["9M"], - thief: ["9M"], - throatchop: ["9M"], - torment: ["9L29", "9M"], - toxic: ["9M"], - upperhand: ["9M"], - uproar: ["9M"], - uturn: ["9M"], - vacuumwave: ["9M"], - willowisp: ["9M"], - workup: ["9M"], - tailslap: ["9L1"], - }, - }, - diablos: { - learnset: { - ancientpower: ["9T"], - attract: ["9M"], - bite: ["9L9"], - block: ["9T"], - bodyslam: ["9M"], - brutalswing: ["9M"], - bulldoze: ["9M"], - confide: ["9M"], - crunch: ["9M", "9L27"], - curse: ["9M"], - detect: ["9M"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dragonclaw: ["9M"], - earthquake: ["9M", "9L33"], - endure: ["9M"], - facade: ["9M"], - fellstinger: ["9L1"], - fling: ["9M"], - focusblast: ["9M"], - focusenergy: ["9M"], - furycutter: ["9M"], - gigaimpact: ["9M", "9L59"], - headcharge: ["9L1"], - headbutt: ["9M"], - headlongrush: ["9M"], - headsmash: ["9M"], - helpinghand: ["9M"], - highhorsepower: ["9M"], - honeclaws: ["9M"], - hyperbeam: ["9M", "9L52"], - irondefense: ["9M", "9L1"], - ironhead: ["9M"], - irontail: ["9M"], - knockoff: ["9M"], - lashout: ["9M"], - leer: ["9L1"], - megahorn: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - pursuit: ["9L1"], - outrage: ["9M"], - payback: ["9L1", "9M"], - powergem: ["9M"], - protect: ["9M"], - rest: ["9M"], - retaliate: ["9M"], - roar: ["9M"], - rockpolish: ["9M"], - rockslide: ["9M", "9L15"], - rocksmash: ["9M"], - rockthrow: ["9L1"], - rocktomb: ["9M"], - round: ["9M"], - sandstorm: ["9M", "9L47"], - sandtomb: ["9M"], - scaryface: ["9M", "9L12"], - screech: ["9L21", "9M"], - shadowclaw: ["9M"], - smackdown: ["9M", "9L24"], - snarl: ["9M"], - snore: ["9M"], - spite: ["9M"], - stealthrock: ["9M"], - stompingtantrum: ["9M", "9L18"], - stoneedge: ["9M", "9L37"], - strength: ["9M"], - substitute: ["9M"], - superpower: ["9M"], - swagger: ["9M"], - swordsdance: ["9M"], - tackle: ["9L1"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thrash: ["9L42"], - torment: ["9M"], - uproar: ["9M"], - }, - }, - garangolm : { - learnset: { - accelerock: ["9M"], - assurance: ["9M"], - attract: ["9M"], - bodypress: ["9M"], - shoreup: ["9L1"], - bodyslam: ["9M"], - boulderpunch: ["9L1"], - branchpoke: ["9L1"], - steamroller: ["9L1"], - brickbreak: ["9M"], - brutalswing: ["9M"], - bulkup: ["9M"], - bulldoze: ["9M"], - bulletseed: ["9M"], - closecombat: ["9M"], - doubleedge: ["9M"], - doublehit: ["9L1"], - drainpunch: ["9M"], - drumbeating: ["9L0", "9L0"], - earthpower: ["9M"], - earthquake: ["9M"], - endeavor: ["9M", "9L54"], - endure: ["9M"], - facade: ["9M"], - falseswipe: ["9M"], - firepunch: ["9M"], - fling: ["9M"], - focusblast: ["9M"], - focusenergy: ["9M"], - focuspunch: ["9M"], - frenzyplant: ["9M"], - gigadrain: ["9M"], - gigaimpact: ["9M"], - grassknot: ["9M"], - grasspledge: ["9M"], - grassyglide: ["9M"], - grassyterrain: ["9M", "9L1"], - growl: ["9L1"], - highhorsepower: ["9M"], - hyperbeam: ["9M"], - icepunch: ["9M"], - junglehealing: ["9M"], - knockoff: ["9M", "9L24"], - liquidation: ["9M"], - lowkick: ["9M"], - magicalleaf: ["9M"], - megapunch: ["9M"], - mudshot: ["9M"], - nobleroar: ["9L1"], - protect: ["9M"], - razorleaf: ["9L12"], - rest: ["9M"], - rockslide: ["9M"], - rocktomb: ["9M"], - rockwrecker: ["9M"], - round: ["9M"], - scaryface: ["9M"], - screech: ["9L19", "9M"], - seedbomb: ["9M"], - slam: ["9L30"], - snarl: ["9M"], - snore: ["9M"], - solarblade: ["9M"], - stealthrock: ["9M"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - swordsdance: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - thunderpunch: ["9M"], - trailblaze: ["9M"], - uproar: ["9M"], - woodhammer: ["9L46"], - workup: ["9M"], - zenheadbutt: ["9M"], - }, - }, - mizutsune: { - learnset: { - acrobatics: ["9M"], - alluringvoice: ["9M"], - amnesia: ["9M"], - tailslap: ["9L1"], - aquajet: ["9L9"], - aquatail: ["9T"], - attract: ["9M"], - babydolleyes: ["9L12"], - bewitchedbubble: ["9L12"], - bodyslam: ["9M"], - brine: ["9M"], - bubblebeam: ["9L25"], - calmmind: ["9M"], - charm: ["9M"], - chillingwater: ["9M"], - coil: ["9M"], - confide: ["9M"], - covet: ["9T"], - dazzlinggleam: ["9M"], - disarmingvoice: ["9M", "9L1"], - dive: ["9M"], - doubleteam: ["9M"], - drainingkiss: ["9M"], - echoedvoice: ["9M"], - encore: ["9M", "9L30"], - flipturn: ["9M"], - gigaimpact: ["9M"], - glare: ["9M"], - growl: ["9L1"], - haze: ["9M"], - healbell: ["9M"], - helpinghand: ["9M"], - hydrocannon: ["9M"], - hydropump: ["9M", "9L58"], - hyperbeam: ["9M"], - hypervoice: ["9M", "9L44"], - icebeam: ["9M"], - icywind: ["9M", "9L15"], - lifedew: ["9M"], - lightscreen: ["9M"], - liquidation: ["9M"], - mistball: ["9M"], - mistyexplosion: ["9M"], - mistyterrain: ["9M", "9L37"], - moonblast: ["9L51"], - perishsong: ["9M"], - playrough: ["9M"], - pound: ["9L1"], - powerwhip: ["9M"], - protect: ["9M"], - psychic: ["9M"], - psychicnoise: ["9M"], - psychup: ["9M"], - raindance: ["9M"], - reflect: ["9M"], - relicsong: ["9M"], - rest: ["9M"], - round: ["9M"], - scald: ["9M"], - sing: ["9M"], - shadowball: ["9M"], - snipeshot: ["9M"], - snore: ["9M"], - sparklingaria: ["9L0"], - springtidestorm: ["9L0"], - storedpower: ["9M"], - substitute: ["9M"], - surf: ["9M"], - swift: ["9M"], - terablast: ["9M"], - tidyup: ["9M"], - uproar: ["9M"], - waterfall: ["9M"], - watergun: ["9L1"], - waterpledge: ["9M"], - waterpulse: ["9M"], - weatherball: ["9M"], - whirlpool: ["9M"], - wish: ["9M"], - workup: ["9M"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - nargacuga: { - learnset: { - acrobatics: ["9L1"], - thousandblades: ["9L1"], - tailslap: ["9L1"], - snatch: ["9L1"], - cutwingbarrage: ["9L1"], - defog: ["9L1"], - mirrormove: ["9L1"], - featherdance: ["9L1"], - aerialace: ["9M"], - assurance: ["9L25", "9M"], - attract: ["9M"], - beatup: ["9M"], - bulletpunch: ["9M"], - ceaselessedge: ["9M"], - confide: ["9M"], - cut: ["9M"], - dig: ["9M"], - doubleteam: ["9M"], - endure: ["9M"], - extremespeed: ["9M"], - facade: ["9M"], - falseswipe: ["9M"], - flashcannon: ["9M"], - fling: ["9M"], - focusblast: ["9M"], - foulplay: ["9M"], - furycutter: ["9L1"], - gigaimpact: ["9M"], - guillotine: ["9L71"], - honeclaws: ["9M"], - hyperbeam: ["9M"], - icespinner: ["9M"], - irondefense: ["9M", "9L45"], - ironhead: ["9M", "9L57"], - knockoff: ["9T"], - kowtowcleave: ["9M"], - lashout: ["9M"], - leer: ["9L1"], - lowkick: ["9M"], - lowsweep: ["9M"], - metalburst: ["9L1"], - metalclaw: ["9M", "9L1"], - metalsound: ["9M", "9L30"], - meteormash: ["9M"], - nightslash: ["9L40"], - payback: ["9M"], - protect: ["9M"], - psychocut: ["9M"], - pursuit: ["9L1"], - rest: ["9M"], - retaliate: ["9L50", "9M"], - reversal: ["9M"], - rockpolish: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - round: ["9M"], - sacredsword: ["9M"], - scaryface: ["9M", "9L20"], - scratch: ["9L1"], - screech: ["9M"], - shadowclaw: ["9M"], - slash: ["9L35"], - smartstrike: ["9M"], - snarl: ["9M"], - snore: ["9M"], - spikes: ["9M"], - spinout: ["9M"], - spite: ["9M"], - steelbeam: ["9M"], - substitute: ["9M"], - suckerpunch: ["9M"], - swagger: ["9M"], - swordsdance: ["9M", "9L64"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - torment: ["9L15"], - xscissor: ["9M"], - }, - }, - rathalos: { - learnset: { - acrobatics: ["9M", "9S11"], - aerialace: ["9M"], - tailslap: ["9L1"], - aircutter: ["9M"], - airslash: ["9M", "9L0"], - attract: ["9M"], - beatup: ["9M"], - blastburn: ["9M"], - bodyslam: ["9M"], - bravebird: ["9M"], - breakingswipe: ["9M"], - blazeball: ["9L1"], - brutalswing: ["9M"], - confide: ["9M"], - crosspoison: ["9M"], - crunch: ["9M", "9S11"], - defensecurl: ["9M"], - defog: ["9T"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dragonbreath: ["9L12"], - dragoncheer: ["9M"], - dragonclaw: ["9M", "9L1"], - dragondance: ["9M"], - dragonpulse: ["9M"], - dragontail: ["9M"], - dualwingbeat: ["9T"], - earthquake: ["9M"], - echoedvoice: ["9M"], - ember: ["9L1"], - endure: ["9M"], - facade: ["9M"], - falseswipe: ["9M"], - fireblast: ["9M"], - firefang: ["9M", "9L19"], - firepledge: ["9M"], - firespin: ["9M", "9L46"], - fissure: ["9L1"], - flamecharge: ["9M"], - flamethrower: ["9M", "9L30"], - flareblitz: ["9M", "9L62"], - fling: ["9M"], - fly: ["9M"], - focusblast: ["9M"], - furycutter: ["9M"], - furyswipes: ["9M"], - gigaimpact: ["9M"], - growl: ["9L1"], - headbutt: ["9M"], - heatcrash: ["9M"], - heatwave: ["9M", "9L1"], - helpinghand: ["9M"], - honeclaws: ["9M"], - hurricane: ["9M"], - hyperbeam: ["9M"], - incinerate: ["9M"], - inferno: ["9L54"], - irontail: ["9M"], - leer: ["9M"], - metalclaw: ["9L1"], - mimic: ["9M"], - mudslap: ["9M"], - nobleroar: ["9M"], - outrage: ["9M"], - overheat: ["9M"], - protect: ["9M"], - rest: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - roost: ["9M"], - round: ["9M"], - scaryface: ["9M", "9L39"], - scratch: ["9L1"], - seismictoss: ["9M"], - skyattack: ["9M"], - slash: ["9L24"], - smokescreen: ["9L1"], - snore: ["9M"], - solarbeam: ["9M"], - steelwing: ["9M"], - strength: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - swagger: ["9M"], - swift: ["9M"], - swordsdance: ["9M"], - tailwind: ["9T"], - takedown: ["9M"], - temperflare: ["9M"], - terablast: ["9M"], - twister: ["9T"], - weatherball: ["9M"], - willowisp: ["9M"], - wingattack: ["9M"], - workup: ["9M"], - cutwingbarrage: ["9M"], - blazingtorque: ["9M"], - }, - }, - rathian: { - learnset: { - aerialace: ["9M"], - tailslap: ["9L1"], - attract: ["9M"], - bravebird: ["9M"], - beatup: ["9M"], - bite: ["9L1"], - bodypress: ["9M"], - bodyslam: ["9M"], - bubblebeam: ["9M"], - bulldoze: ["9M"], - charm: ["9M"], - confide: ["9M"], - counter: ["9M"], - crosspoison: ["9M"], - crunch: ["9M", "9L1"], - curse: ["9M"], - defensecurl: ["9M"], - detect: ["9M"], - dig: ["9M"], - direclaw: ["9M"], - doubleedge: ["9M"], - doublekick: ["9L1"], - doubleteam: ["9M"], - dragonpulse: ["9M"], - dragontail: ["9M"], - dualwingbeat: ["9M"], - earthpower: ["9M", "9L1"], - earthquake: ["9M"], - echoedvoice: ["9M"], - endure: ["9M"], - blazeball: ["9L1"], - facade: ["9M"], - fireblast: ["9M"], - fissure: ["9M"], - flatter: ["9L1"], - fling: ["9M"], - focusblast: ["9M"], - focusenergy: ["9M"], - foulplay: ["9M"], - furycutter: ["9M"], - furyswipes: ["9L1"], - gigaimpact: ["9M"], - growl: ["9L1"], - gunkshot: ["9M"], - headbutt: ["9M"], - heatwave: ["9M"], - helpinghand: ["9M", "9L1"], - hex: ["9M"], - highhorsepower: ["9M"], - honeclaws: ["9M"], - horndrill: ["9M"], - hyperbeam: ["9M"], - incinerate: ["9M"], - irontail: ["9M"], - mimic: ["9M"], - mortalspin: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - nobleroar: ["9M"], - outrage: ["9M"], - poisonjab: ["9M"], - poisonsting: ["9L1"], - poisontail: ["9L1"], - protect: ["9M"], - quash: ["9M"], - rest: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - round: ["9M"], - sandstorm: ["9M"], - sandtomb: ["9M"], - scorchingsands: ["9T"], - scratch: ["9L1"], - shadowclaw: ["9M"], - shockwave: ["9T"], - slackoff: ["9M"], - sludgebomb: ["9M"], - sludgewave: ["9M"], - smackdown: ["9M"], - snore: ["9M"], - spikes: ["9M"], - spikyshield: ["9M"], - stompingtantrum: ["9M"], - strength: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - superfang: ["9T"], - supersonic: ["9M"], - swagger: ["9M"], - tackle: ["9M"], - tailwhip: ["9L1"], - takedown: ["9M"], - taunt: ["9M"], - thief: ["9M"], - torment: ["9M"], - toxic: ["9L1"], - toxicspikes: ["9M", "9L1"], - uproar: ["9M"], - venoshock: ["9M"], - uturn: ["9M"], - terablast: ["9L1"], - }, - }, - shogunceanataur: { - learnset: { - sharpen: ["9L1"], - aquacutter: ["9M"], - aquajet: ["9L15"], - attract: ["9M"], - aurasphere: ["9M", "9L42"], - bodyslam: ["9M"], - bounce: ["9L49", "9M"], - bubblebeam: ["9L20"], - chillingwater: ["9M"], - confide: ["9M"], - crabhammer: ["9L63"], - cut: ["9M"], - dig: ["9M"], - dive: ["9M"], - doubleteam: ["9M"], - endure: ["9M"], - facade: ["9M"], - flail: ["9L1"], - flipturn: ["9M"], - furycutter: ["9M"], - gigaimpact: ["9M"], - guillotine: ["9M"], - helpinghand: ["9M"], - honeclaws: ["9L25"], - hydropump: ["9M"], - hyperbeam: ["9M"], - liquidation: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - pounce: ["9M"], - protect: ["9M"], - psychocut: ["9M"], - raindance: ["9M"], - rapidspin: ["9M"], - razorshell: ["9M"], - rest: ["9M"], - rockslide: ["9M"], - round: ["9M"], - scaryface: ["9M"], - shellsmash: ["9M"], - slash: ["9M"], - snore: ["9M"], - splash: ["9L1"], - substitute: ["9M"], - surf: ["9M"], - swagger: ["9M"], - swordsdance: ["9M", "9L35"], - takedown: ["9M"], - terablast: ["9M"], - thief: ["9M"], - tripleaxel: ["9M"], - uturn: ["9M"], - visegrip: ["9L1"], - waterfall: ["9M"], - watergun: ["9L1"], - waterpulse: ["9M", "9L30"], - watershuriken: ["9M"], - xscissor: ["9M"], - }, - }, - zinogre: { - learnset: { - agility: ["9M"], - attract: ["9M"], - aurasphere: ["9M"], - megapunch: ["9L1"], - crushclaw: ["9L1"], - bugbuzz: ["9M"], - megakick: ["9M"], - bodyslam: ["9M"], - bulkup: ["9M"], - workup: ["9M"], - charge: ["9L42"], - chargebeam: ["9M"], - confide: ["9M"], - thunderrush: ["9L1"], - crunch: ["9M"], - discharge: ["9L36"], - doubleedge: ["9T"], - doubleteam: ["9M"], - drainpunch: ["9M"], - eerieimpulse: ["9M"], - electricterrain: ["9M", "9L60"], - electroball: ["9M"], - electrodrift: ["9L1"], - endure: ["9M"], - extremespeed: ["9L20"], - facade: ["9M"], - firefang: ["9M", "9L1"], - gigaimpact: ["9M"], - headbutt: ["9T"], - howl: ["9L1"], - hyperbeam: ["9M"], - icefang: ["9M"], - infestation: ["9M"], - irontail: ["9M"], - leer: ["9L1"], - lightscreen: ["9M"], - magnetrise: ["9T"], - mimic: ["9T"], - nobleroar: ["9M"], - nuzzle: ["9L20"], - overheat: ["9M"], - paraboliccharge: ["9M"], - plasmafists: ["9L1"], - playrough: ["9L20"], - protect: ["9M"], - quickattack: ["9L12"], - rest: ["9M"], - risingvoltage: ["9T"], - roar: ["9L30", "9M"], - round: ["9M"], - scaryface: ["9M"], - shockwave: ["9L16"], - snarl: ["9M"], - snore: ["9M"], - spark: ["9L13"], - strength: ["9M"], - substitute: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tackle: ["9L1"], - terablast: ["9L20"], - thief: ["9M"], - thunder: ["9M", "9L54"], - thunderbolt: ["9M"], - thundercage: ["9M"], - thunderclap: ["9M"], - thunderfang: ["9M", "9L24"], - thunderpunch: ["9M"], - thunderwave: ["9M", "9L1"], - uproar: ["9M"], - voltswitch: ["9M"], - volttackle: ["9M"], - wildcharge: ["9M", "9L48"], - attackorder: ["9L1"], - defendorder: ["9L1"], - healorder: ["9L1"], - }, - }, - astalos: { - learnset: { - acrobatics: ["9M"], - agility: ["9M", "9L57"], - airslash: ["9M"], - attract: ["9M"], - batonpass: ["9M"], - bite: ["9L15"], - thundercage: ["9M"], - bugbite: ["9M"], - bugbuzz: ["9M"], - charge: ["9M", "9L1"], - chargebeam: ["9M"], - reversal: ["9M"], - confide: ["9M"], - dazzlinggleam: ["9L1"], - dig: ["9M", "9L1"], - discharge: ["9L1"], - doubleteam: ["9M"], - dualwingbeat: ["9M"], - eerieimpulse: ["9M"], - electricterrain: ["9M"], - electroball: ["9M"], - electroshot: ["9M"], - electroweb: ["9M"], - endure: ["9M"], - energyball: ["9M"], - extremespeed: ["9M"], - fellstinger: ["9L1"], - firstimpression: ["9L1"], - fly: ["9M", "9L50"], - gigaimpact: ["9M"], - hyperbeam: ["9M"], - lightscreen: ["9M"], - lunge: ["9M"], - magnetrise: ["9M"], - megahorn: ["9L1"], - mudshot: ["9M"], - mudslap: ["9M"], - paraboliccharge: ["9L1"], - poisonjab: ["9M"], - pounce: ["9M"], - protect: ["9M"], - rest: ["9M"], - risingvoltage: ["9M"], - round: ["9M"], - screech: ["9M"], - shadowball: ["9L1"], - shockwave: ["9M"], - skittersmack: ["9M"], - snore: ["9M"], - solarbeam: ["9M"], - spark: ["9L23"], - stringshot: ["9L1"], - strugglebug: ["9M"], - substitute: ["9M"], - supercellslam: ["9M"], - swagger: ["9M"], - swift: ["9M"], - biocharge: ["9L1"], - takedown: ["9M"], - taunt: ["9L1"], - terablast: ["9M"], - thunder: ["9M"], - thunderbolt: ["9M", "9L0"], - thunderclap: ["9L1"], - thunderwave: ["9M"], - uturn: ["9L1"], - visegrip: ["9L1"], - voltswitch: ["9M"], - wildcharge: ["9M"], - xscissor: ["9M"], - zapcannon: ["9L64"], - facade: ["9L1"], - }, - }, - espinas: { - learnset: { - absorb: ["9L1"], - acupressure: ["9M"], - twineedle: ["9L1"], - attract: ["9M"], - barbbarrage: ["9M"], - bodyslam: ["9M"], - bulletseed: ["9M"], - confide: ["9M"], - covet: ["9M"], - cut: ["9M"], - doubleteam: ["9M"], - endure: ["9M"], - facade: ["9M"], - fellstinger: ["9L1"], - firespin: ["9L1"], - blazeball: ["9L1"], - ficklebeam: ["9M"], - frenzyplant: ["9M"], - furycutter: ["9T"], - gigadrain: ["9M"], - gigaimpact: ["9M"], - grassknot: ["9M"], - grassyterrain: ["9M", "9L1"], - growth: ["9L1"], - gunkshot: ["9M"], - hornleech: ["9M"], - ingrain: ["9L1"], - leafstorm: ["9M"], - leechseed: ["9L1"], - magicalleaf: ["9M", "9L1"], - megadrain: ["9L1"], - megahorn: ["9M"], - mudslap: ["9T"], - petalblizzard: ["9L1"], - petaldance: ["9L1"], - pinmissile: ["9M"], - poisonjab: ["9M"], - poisonsting: ["9L1"], - poisontail: ["9M"], - pollenpuff: ["9M"], - powerwhip: ["9M"], - protect: ["9M"], - psychup: ["9M"], - rest: ["9M"], - round: ["9M"], - slackoff: ["9M"], - sludgebomb: ["9M"], - snore: ["9M"], - solarbeam: ["9M"], - spikyshield: ["9M"], - stunspore: ["9L1"], - substitute: ["9M"], - sunnyday: ["9M"], - swagger: ["9M"], - sweetscent: ["9L1"], - swift: ["9M"], - synthesis: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9M"], - uproar: ["9M"], - venoshock: ["9M"], - weatherball: ["9M"], - worryseed: ["9L1"], - uturn: ["9M"], - terablast: ["9L1"], - }, - }, - goremagala: { - learnset: { - aurasphere: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - calmmind: ["9L1"], - brutalswing: ["9L1"], - cosmicpower: ["9L1"], - clangingscales: ["9L1"], - crunch: ["9L1"], - darkpulse: ["9L1"], - defog: ["9L1"], - dracometeor: ["9L1"], - dragonbreath: ["9L1"], - dragoncheer: ["9L1"], - dragonclaw: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - frenzyslam: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - magiccoat: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - scaryface: ["9L1"], - shadowball: ["9L1"], - snarl: ["9L1"], - strengthsap: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - torment: ["9L1"], - uturn: ["9L1"], - }, - }, - lunagaron: { - learnset: { - assurance: ["9L1"], - attract: ["9M"], - crushclaw: ["9L1"], - avalanche: ["9M"], - batonpass: ["9M"], - beatup: ["9L1"], - pursuit: ["9L1"], - blizzard: ["9M"], - brickbreak: ["9M"], - confide: ["9M"], - crunch: ["9M"], - cut: ["9M"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - endure: ["9M"], - facade: ["9M"], - fakeout: ["9M"], - faketears: ["9M"], - falseswipe: ["9M"], - fling: ["9M"], - foulplay: ["9M"], - furycutter: ["9M"], - furyswipes: ["9L30"], - gigaimpact: ["9M"], - headbutt: ["9M"], - helpinghand: ["9M"], - honeclaws: ["9L36"], - howl: ["9M"], - hyperbeam: ["9M"], - icebeam: ["9M"], - icepunch: ["9M"], - iceshard: ["9L1"], - icespinner: ["9M"], - iciclecrash: ["9M"], - iciclespear: ["9M"], - icywind: ["9M", "9L24"], - irontail: ["9M"], - knockoff: ["9M"], - kowtowcleave: ["9M"], - lashout: ["9M"], - leer: ["9L1"], - lowkick: ["9M"], - lowsweep: ["9M"], - metalclaw: ["9M"], - metronome: ["9M"], - mudslap: ["9M"], - nightslash: ["9L60"], - payback: ["9M"], - poisonjab: ["9M"], - protect: ["9M"], - psychocut: ["9M"], - psychup: ["9M"], - quickattack: ["9L1"], - reflect: ["9M"], - rest: ["9M"], - retaliate: ["9M"], - reversal: ["9M"], - rocksmash: ["9M"], - round: ["9M"], - scaryface: ["9M"], - scratch: ["9L1"], - screech: ["9L54"], - shadowclaw: ["9M"], - slash: ["9L1"], - snarl: ["9M"], - snore: ["9M"], - snowscape: ["9M"], - spite: ["9M"], - strength: ["9M"], - substitute: ["9M"], - swagger: ["9M"], - swift: ["9M"], - swordsdance: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - throatchop: ["9M"], - torment: ["9M"], - trailblaze: ["9M"], - tripleaxel: ["9M"], - uturn: ["9M"], - xscissor: ["9M"], - }, - }, - magmadron: { - learnset: { - amnesia: ["9M"], - ancientpower: ["9M"], - attract: ["9M"], - tailslap: ["9L1"], - bodypress: ["9M"], - bodyslam: ["9M"], - bulldoze: ["9M"], - charm: ["9M"], - coil: ["9M"], - confide: ["9M"], - curse: ["9M"], - defensecurl: ["9M"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - earthpower: ["9M"], - echoedvoice: ["9M"], - ember: ["9L1"], - endeavor: ["9M"], - endure: ["9M"], - explosion: ["9M"], - firespin: ["9M"], - fissure: ["9L1"], - flareblitz: ["9M"], - focusenergy: ["9L1"], - gigaimpact: ["9M"], - growl: ["9L1"], - headbutt: ["9M"], - heatcrash: ["9M"], - heavyslam: ["9M"], - helpinghand: ["9M"], - highhorsepower: ["9M"], - hyperbeam: ["9M"], - incinerate: ["9L15"], - lavaplume: ["9L22"], - magmastorm: ["9M"], - magmasurge: ["9L1"], - mimic: ["9M"], - mudshot: ["9M"], - mudslap: ["9M"], - protect: ["9M"], - rapidspin: ["9M"], - rest: ["9M"], - roar: ["9M"], - rockpolish: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - rollout: ["9M"], - round: ["9M"], - sandsearstorm: ["9M"], - sandstorm: ["9M"], - scald: ["9M"], - scaryface: ["9M"], - scorchingsands: ["9M"], - smackdown: ["9M"], - snore: ["9M"], - spinout: ["9M"], - stealthrock: ["9M"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - strength: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - swagger: ["9M"], - tackle: ["9L1"], - takedown: ["9M"], - temperflare: ["9M"], - terablast: ["9M"], - willowisp: ["9M"], - zenheadbutt: ["9M"], - facade: ["9L1"], - }, - }, - magnamalo: { - learnset: { - acrobatics: ["9M"], - assurance: ["9M"], - attract: ["9M"], - blastbite: ["9L1"], - batonpass: ["9M"], - bite: ["9L15"], - blazekick: ["9M"], - bodyslam: ["9M"], - brutalswing: ["9M"], - bulkup: ["9M"], - bulldoze: ["9M"], - burningjealousy: ["9M"], - confide: ["9M"], - covet: ["9M"], - crunch: ["9M"], - curse: ["9M"], - darkpulse: ["9M"], - doubleedge: ["9M"], - doublekick: ["9L20"], - doubleteam: ["9M"], - ember: ["9L1"], - endure: ["9M"], - facade: ["9M"], - fakeout: ["9L1"], - fireblast: ["9M"], - firepledge: ["9M"], - firespin: ["9M"], - flamecharge: ["9M"], - flamethrower: ["9M"], - flareblitz: ["9M"], - fling: ["9M"], - furyswipes: ["9L12"], - gigaimpact: ["9M"], - growl: ["9L1"], - heatcrash: ["9M"], - helpinghand: ["9M"], - hyperbeam: ["9M"], - ironhead: ["9M"], - knockoff: ["9M"], - kowtowcleave: ["9M"], - leer: ["9L11"], - lick: ["9L1"], - lowkick: ["9M"], - magnalance: ["9M"], - nastyplot: ["9M"], - outrage: ["9M"], - overheat: ["9M"], - partingshot: ["9M"], - phantomforce: ["9M"], - protect: ["9M"], - quash: ["9M"], - rest: ["9M"], - reversal: ["9M"], - roar: ["9M"], - round: ["9M"], - scaryface: ["9M"], - scratch: ["9L1"], - shadowball: ["9M"], - shadowpunch: ["9M"], - snarl: ["9M"], - snore: ["9M"], - stompingtantrum: ["9M"], - substitute: ["9M"], - suckerpunch: ["9M"], - sunnyday: ["9M"], - superpower: ["9M"], - swagger: ["9L32"], - swordsdance: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - temperflare: ["9M"], - terablast: ["9M"], - thief: ["9M"], - thrash: ["9L51"], - torment: ["9M"], - uturn: ["9M"], - willowisp: ["9M"], - infernalparade: ["9L1"], - bittermalice: ["9L1"], - shadowclaw: ["9L1"], - workup: ["9M"], - hellfirerifle: ["9M"], - }, - }, - raknakadaki: { - learnset: { - absorb: ["9L1"], - spiderweb: ["9L1"], - acidspray: ["9M"], - attackorder: ["9M"], - attract: ["9M"], - batonpass: ["9M"], - bodyslam: ["9M"], - willowisp: ["9M"], - heatwave: ["9M"], - creepynoise: ["9L1"], - bugbite: ["9M"], - bugbuzz: ["9M"], - confide: ["9M"], - healorder: ["9L1"], - crosspoison: ["9L50"], - curse: ["9L1"], - defendorder: ["9M"], - dig: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - electroweb: ["9M"], - endure: ["9M"], - facade: ["9M"], - fellstinger: ["9L1"], - firstimpression: ["9M"], - focusenergy: ["9L1"], - foulplay: ["9M"], - furyswipes: ["9L23"], - gigadrain: ["9M"], - gigaimpact: ["9M"], - hex: ["9M"], - honeclaws: ["9M"], - hyperbeam: ["9M"], - infestation: ["9L8"], - knockoff: ["9M"], - leechlife: ["9M"], - lunge: ["9M"], - mimic: ["9M"], - nightshade: ["9M"], - pinmissile: ["9L35"], - poisonjab: ["9M"], - poisonsting: ["9L1"], - pollenpuff: ["9M"], - poltergeist: ["9M"], - pounce: ["9M"], - protect: ["9M"], - psychic: ["9M"], - quiverdance: ["9M"], - rapidspin: ["9M"], - rest: ["9M"], - round: ["9M"], - scaryface: ["9M"], - screech: ["9L1"], - shadowball: ["9M"], - shadowsneak: ["9L19"], - silktrap: ["9M"], - skittersmack: ["9M"], - sludgebomb: ["9M"], - smartstrike: ["9M"], - snore: ["9M"], - solarbeam: ["9M"], - spectralthief: ["9M"], - spiritshackle: ["9M"], - spite: ["9M"], - stickyweb: ["9L54"], - stringshot: ["9L1"], - strugglebug: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - swagger: ["9M"], - terablast: ["9M"], - thief: ["9M"], - toxic: ["9M"], - toxicspikes: ["9M"], - toxicthread: ["9L59"], - trailblaze: ["9M"], - trick: ["9M"], - uturn: ["9M"], - venoshock: ["9M"], - xscissor: ["9M"], - }, - }, - pyrekadaki: { - learnset: { - absorb: ["9L1"], - amnesia: ["9M"], - attackorder: ["9M"], - spiderweb: ["9L1"], - attract: ["9M"], - bodyslam: ["9M"], - searingshot: ["9L1"], - bugbite: ["9M"], - magmasurge: ["9L1"], - creepynoise: ["9L1"], - healorder: ["9L1"], - bugbuzz: ["9M"], - calmmind: ["9M"], - confide: ["9M"], - defendorder: ["9M"], - defog: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - ember: ["9L1"], - endure: ["9M"], - facade: ["9M"], - fierydance: ["9L1"], - fireblast: ["9M"], - firelash: ["9M"], - firespin: ["9M", "9L1"], - firstimpression: ["9M", "9L1"], - flamecharge: ["9M", "9L1"], - flamethrower: ["9M"], - flamewheel: ["9L18"], - flareblitz: ["9M"], - gigaimpact: ["9M"], - heatwave: ["9M", "9L48"], - hyperbeam: ["9M"], - incinerate: ["9M"], - infestation: ["9M"], - leechlife: ["9M"], - lightscreen: ["9M"], - lunge: ["9M"], - mysticalfire: ["9M"], - overheat: ["9M"], - pounce: ["9M"], - protect: ["9M"], - quiverdance: ["9L0"], - ragepowder: ["9L78"], - rest: ["9M"], - round: ["9M"], - safeguard: ["9M"], - screech: ["9L30"], - silktrap: ["9M"], - skittersmack: ["9M"], - snore: ["9M"], - solarbeam: ["9M"], - stickyweb: ["9M"], - stringshot: ["9L1"], - strugglebug: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - swagger: ["9M"], - takedown: ["9M"], - terablast: ["9M"], - thrash: ["9L1"], - toxic: ["9M"], - uturn: ["9M"], - powderkeg: ["9L1"], - willowisp: ["9M"], - }, - }, - seregios: { - learnset: { - sharpen: ["9L1"], - acrobatics: ["9M"], - cutwingbarrage: ["9L1"], - thousandblades: ["9L1"], - roughhouse: ["9L1"], - acupressure: ["9M"], - uturn: ["9M"], - pursuit: ["9M"], - megakick: ["9M"], - ceaselessedge: ["9M"], - aerialace: ["9M"], - agility: ["9M", "9L16"], - aircutter: ["9M"], - airslash: ["9M"], - assurance: ["9M"], - attract: ["9M"], - axekick: ["9M"], - barbbarrage: ["9M"], - blazekick: ["9M"], - bodypress: ["9M"], - bravebird: ["9M", "9L52"], - confide: ["9M"], - counter: ["9T"], - crunch: ["9M"], - curse: ["9M"], - cut: ["9M"], - detect: ["9M"], - doubleedge: ["9T"], - doubleteam: ["9M"], - drillpeck: ["9L36"], - drillrun: ["9M"], - dualwingbeat: ["9M"], - endure: ["9M"], - facade: ["9M"], - feint: ["9M"], - filletaway: ["9M"], - fly: ["9M"], - flyingpress: ["9M"], - furyattack: ["9L8"], - furycutter: ["9T"], - gigaimpact: ["9M"], - highjumpkick: ["9M"], - hyperbeam: ["9M"], - irondefense: ["9M"], - ironhead: ["9M"], - leer: ["9L1"], - metalclaw: ["9M"], - metalsound: ["9M"], - mimic: ["9T"], - mudslap: ["9M"], - nightslash: ["9M"], - payback: ["9L32"], - protect: ["9M"], - rest: ["9M"], - reversal: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - roost: ["9M"], - round: ["9M"], - sandattack: ["9L4"], - sandstorm: ["9M"], - sandtomb: ["9M"], - scaleshot: ["9M"], - skyattack: ["9M"], - slash: ["9L24"], - smartstrike: ["9M"], - snore: ["9M"], - spikes: ["9M"], - spikyshield: ["9M"], - steelwing: ["9L28", "9M"], - substitute: ["9M"], - swagger: ["9M"], - swift: ["9M"], - swordsdance: ["9M"], - tailwind: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thief: ["9M"], - torment: ["9M"], - twister: ["9M"], - whirlwind: ["9M"], - wingattack: ["9L20"], - }, - }, - tigrex: { - learnset: { - astonish: ["9L1"], - stuffcheeks: ["9L1"], - attract: ["9M"], - arcticshriek: ["9L1"], - headcharge: ["9L1"], - crushclaw: ["9L1"], - avalanche: ["9M"], - bite: ["9L1"], - bodyslam: ["9M"], - boomburst: ["9L72"], - breakingswipe: ["9M"], - brickbreak: ["9M"], - bulkup: ["9M"], - bulldoze: ["9M"], - clangoroussoul: ["9M"], - closecombat: ["9M"], - confide: ["9M"], - counter: ["9M"], - crunch: ["9M"], - defensecurl: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - earthquake: ["9M"], - echoedvoice: ["9L1", "9M"], - endeavor: ["9M"], - endure: ["9M"], - facade: ["9M"], - faketears: ["9M"], - firefang: ["9M"], - fling: ["9M"], - focusblast: ["9M"], - gigaimpact: ["9M"], - headbutt: ["9M"], - howl: ["9L1"], - hyperbeam: ["9M", "9L81"], - hypervoice: ["9M", "9L63"], - jawlock: ["9M"], - lastresort: ["9M"], - lowkick: ["9M"], - megapunch: ["9M"], - mimic: ["9M"], - mudslap: ["9M"], - nobleroar: ["9M"], - outrage: ["9M"], - overdrive: ["9M"], - perishsong: ["9M"], - pound: ["9L1"], - protect: ["9M"], - psychup: ["9M"], - pursuit: ["9L1"], - rest: ["9M", "9L15"], - retaliate: ["9M"], - roar: ["9L29", "9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - rollout: ["9M"], - round: ["9M"], - screech: ["9M", "9L54"], - seismictoss: ["9M"], - smackdown: ["9M"], - snarl: ["9M"], - snore: ["9M"], - stomp: ["9L23"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - strength: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - superfang: ["9M"], - supersonic: ["9L36"], - swagger: ["9M"], - taunt: ["9M"], - torment: ["9M"], - uproar: ["9M", "9L45"], - workup: ["9M"], - uturn: ["9M"], - terablast: ["9L1"], - }, - }, - bazelgeuse: { - learnset: { - chipaway: ["9L1"], - acrobatics: ["9M"], - aerialace: ["9M"], - aircutter: ["9M"], - armorcannon: ["9M"], - attract: ["9M"], - beakblast: ["9L0"], - bravebird: ["9M"], - bulletseed: ["9M", "9L40"], - burnup: ["9M", "9L40"], - clangingscales: ["9M"], - confide: ["9M"], - defog: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dragondance: ["9M"], - dragonrush: ["9M"], - drillpeck: ["9L34"], - dualwingbeat: ["9M"], - echoedvoice: ["9L1", "9M"], - encore: ["9M"], - endeavor: ["9M"], - endure: ["9M"], - explosion: ["9M"], - facade: ["9M"], - flamecharge: ["9M"], - flareblitz: ["9M"], - fly: ["9M"], - furyattack: ["9L24"], - gigaimpact: ["9M"], - growl: ["9L1"], - glidebomb: ["9L1"], - gunkshot: ["9M"], - heatwave: ["9M"], - helpinghand: ["9M"], - hyperbeam: ["9M"], - knockoff: ["9M"], - overheat: ["9M"], - partingshot: ["9L1"], - peck: ["9L1"], - pinmissile: ["9M"], - pluck: ["9L16"], - protect: ["9M"], - psychup: ["9M"], - rest: ["9M"], - rockblast: ["9M", "9L1"], - rocksmash: ["9L1"], - roost: ["9L21", "9M"], - round: ["9M"], - scaleshot: ["9M"], - scaryface: ["9M"], - screech: ["9L30"], - skyattack: ["9M"], - smackdown: ["9M"], - snore: ["9M"], - spikes: ["9M"], - steelwing: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - supersonic: ["9L13"], - swagger: ["9M"], - swift: ["9M"], - pyroball: ["9M"], - takedown: ["9M"], - temperflare: ["9M"], - terablast: ["9M"], - thief: ["9M"], - uproar: ["9M"], - uturn: ["9M"], - willowisp: ["9M"], - workup: ["9M"], - }, - }, - chameleos: { - learnset: { - acidspray: ["9M"], - astonish: ["9L1"], - slimyspit: ["9L1"], - sweetlick: ["9L1"], - tailslap: ["9L1"], - batonpass: ["9M"], - snatch: ["9L1"], - bodyslam: ["9M"], - courtchange: ["9M"], - defensecurl: ["9L1"], - defog: ["9M"], - dracometeor: ["9L1"], - dragonclaw: ["9M"], - dragonpulse: ["9M"], - endure: ["9M"], - fakeout: ["9M", "9L24"], - faketears: ["9M", "9L24"], - firelash: ["9M"], - foulplay: ["9M"], - gunkshot: ["9M"], - hex: ["9M"], - imprison: ["9M"], - malignantchain: ["9L48"], - memento: ["9L1"], - nastyplot: ["9M"], - nightshade: ["9M"], - outrage: ["9M"], - partingshot: ["9L32"], - phantomforce: ["9M"], - poisongas: ["9L1"], - poisontail: ["9L1"], - thief: ["9L1"], - poltergeist: ["9M"], - protect: ["9M"], - psychic: ["9M"], - recover: ["9L72"], - rest: ["9M"], - rollout: ["9L1"], - shadowball: ["9M"], - sludgebomb: ["9M"], - sludgewave: ["9M"], - smog: ["9L1"], - spite: ["9M"], - substitute: ["9M"], - terablast: ["9M"], - toxic: ["9M", "9L56"], - toxicspikes: ["9M"], - triattack: ["9M"], - trick: ["9M"], - venoshock: ["9M"], - wish: ["9M"], - taunt: ["9L8"], - knockoff: ["9L8"], - darkpulse: ["9L8"], - snarl: ["9L8"], - spectralthief: ["9L8"], - facade: ["9L1"], - }, - }, - kushaladaora: { - learnset: { - aerialace: ["9M"], - aircutter: ["9M"], - arcticshriek: ["9L1"], - airslash: ["9M"], - assurance: ["9M"], - attract: ["9M"], - bleakwindstorm: ["9M"], - blizzard: ["9M"], - bodypress: ["9M"], - bodyslam: ["9M"], - chillyreception: ["9M"], - defog: ["9M"], - dracometeor: ["9M"], - dragonpulse: ["9M"], - drillpeck: ["9L34"], - dualwingbeat: ["9M"], - endure: ["9M"], - faketears: ["9M"], - flashcannon: ["9M"], - fly: ["9M"], - focusenergy: ["9M"], - furyattack: ["9L12"], - gigaimpact: ["9M"], - heavyslam: ["9M"], - hurricane: ["9M"], - hyperbeam: ["9M"], - icebeam: ["9M"], - irondefense: ["9M"], - ironhead: ["9M"], - leer: ["9L1"], - metalclaw: ["9M"], - metalsound: ["9M"], - mirrorcoat: ["9M"], - nastyplot: ["9M"], - outrage: ["9M"], - payback: ["9M"], - peck: ["9L1"], - pluck: ["9L16"], - protect: ["9M"], - rest: ["9M"], - retaliate: ["9M"], - reversal: ["9M"], - roost: ["9M"], - round: ["9M"], - scaryface: ["9M", "9L28"], - screech: ["9L1", "9M"], - shedtail: ["9M"], - steelbeam: ["9M"], - steelwing: ["9L0"], - substitute: ["9M"], - swift: ["9M"], - tailwind: ["9M"], - takedown: ["9M"], - terablast: ["9M"], - thief: ["9M"], - weatherball: ["9M"], - workup: ["9M"], - facade: ["9L1"], - }, - }, - rushaladaora: { - learnset: { - bodypress: ["9L1"], - bodyslam: ["9L1"], - bulkup: ["9L1"], - curse: ["9L1"], - defog: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragontail: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flashcannon: ["9L1"], - gigaimpact: ["9L1"], - glaciate: ["9L1"], - gyroball: ["9L1"], - heavyslam: ["9L1"], - honeclaws: ["9L1"], - icespinner: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - meteormash: ["9L1"], - mountaingale: ["9L1"], - outrage: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - rototiller: ["9L1"], - scaleshot: ["9L1"], - shedtail: ["9L1"], - spikes: ["9L1"], - steelbeam: ["9L1"], - steelroller: ["9L1"], - steelwing: ["9L1"], - stomp: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - whirlwind: ["9L1"], - wideguard: ["9L1"], - oxideairstrike: ["9L1"], - }, - }, - teostra: { - learnset: { - ancientpower: ["9L1"], - bite: ["9L21"], - blazekick: ["9L1"], - blastbite: ["9L1"], - bodyslam: ["9M"], - breakingswipe: ["9M"], - bulldoze: ["9M"], - burningbulwark: ["9L49"], - crunch: ["9M"], - crushclaw: ["9L35"], - doubleedge: ["9M"], - dracometeor: ["9M"], - dragoncheer: ["9M"], - dragonclaw: ["9M", "9L28"], - dragondance: ["9M"], - dragonpulse: ["9M"], - dragonrush: ["9L56"], - dragontail: ["9M"], - earthquake: ["9M"], - endure: ["9M"], - explosion: ["9M"], - facade: ["9M"], - fireblast: ["9M", "9L63"], - firefang: ["9M", "9L7"], - firespin: ["9M"], - flamecharge: ["9M"], - flamethrower: ["9M"], - flareblitz: ["9M", "9L84"], - gigaimpact: ["9M"], - heatcrash: ["9M"], - heatwave: ["9M"], - howl: ["9L14"], - hyperbeam: ["9M"], - incinerate: ["9L1"], - leer: ["9L1"], - morningsun: ["9L42"], - nobleroar: ["9L1"], - outrage: ["9M", "9L77"], - overheat: ["9M"], - protect: ["9M"], - psychicfangs: ["9M"], - ragingfury: ["9L91"], - rest: ["9M"], - reversal: ["9M"], - roar: ["9M"], - sacredfire: ["9M"], - scaleshot: ["9M"], - scaryface: ["9M"], - scorchingsands: ["9M"], - snarl: ["9M"], - stomp: ["9L1"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - substitute: ["9M"], - sunnyday: ["9M", "9L1"], - swagger: ["9L42", "9L42"], - swordsdance: ["9M"], - takedown: ["9M"], - temperflare: ["9M"], - terablast: ["9M"], - weatherball: ["9M"], - powderkeg: ["9L1"], - }, - }, - flaminas: { - learnset: { - acupressure: ["9M"], - bite: ["9L4"], - blastburn: ["9M"], - bulletseed: ["9M", "9L21"], - burningjealousy: ["9M"], - blazeball: ["9L1"], - crunch: ["9M", "9L38"], - endeavor: ["9M"], - endure: ["9M"], - twineedle: ["9L1"], - explosion: ["9M"], - facade: ["9M"], - fireblast: ["9M"], - firefang: ["9M", "9L1"], - flamethrower: ["9M", "9L0"], - flareblitz: ["9M"], - gigadrain: ["9M"], - gigaimpact: ["9M"], - grassknot: ["9M"], - grassyterrain: ["9M"], - growth: ["9L10"], - headbutt: ["9L24"], - helpinghand: ["9M"], - hornleech: ["9M"], - hyperbeam: ["9M"], - lashout: ["9M"], - lavaplume: ["9M"], - leafage: ["9L1"], - leafblade: ["9M"], - leafstorm: ["9M"], - leer: ["9L1"], - magicalleaf: ["9M"], - magmastorm: ["9M"], - matchagotcha: ["9L1"], - megahorn: ["9M"], - overheat: ["9M", "9L48"], - poisontail: ["9M"], - protect: ["9M"], - razorleaf: ["9L13"], - rest: ["9M"], - scaryface: ["9M"], - seedbomb: ["9M", "9L44"], - seedflare: ["9M"], - slackoff: ["9M"], - solarbeam: ["9M", "9L48"], - spicyextract: ["9L0"], - stompingtantrum: ["9M"], - substitute: ["9M"], - sunnyday: ["9M", "9L17"], - takedown: ["9M"], - temperflare: ["9M"], - terablast: ["9M"], - thief: ["9M"], - toxicspikes: ["9M"], - trailblaze: ["9M"], - willowisp: ["9M"], - worryseed: ["9L33"], - toxic: ["9M"], - }, - }, - malzeno: { - learnset: { - sharpen: ["9L1"], - acupressure: ["9M"], - agility: ["9M"], - astonish: ["9L1"], - healorder: ["9L1"], - attackorder: ["9L1"], - defendorder: ["9L1"], - bloodmoon: ["9M"], - calmmind: ["9M"], - apexburst: ["9L1"], - charm: ["9M"], - confuseray: ["9M", "9L1"], - darkpulse: ["9M"], - dazzlinggleam: ["9M", "9L35"], - disarmingvoice: ["9M"], - dragonclaw: ["9M"], - dragonpulse: ["9M"], - drainingkiss: ["9M"], - endure: ["9M"], - gigaimpact: ["9M"], - helpinghand: ["9M"], - hex: ["9M"], - hyperbeam: ["9M"], - hyperspacefury: ["9M"], - hypervoice: ["9M"], - imprison: ["9M"], - leechseed: ["9M"], - meanlook: ["9L14"], - memento: ["9L21"], - mistyterrain: ["9M"], - moonblast: ["9L84", "9S1"], - mysticalfire: ["9L49"], - nastyplot: ["9M"], - nightshade: ["9M"], - outrage: ["9M"], - painsplit: ["9M", "9L77"], - perishsong: ["9L91"], - phantomforce: ["9M", "9L70"], - poltergeist: ["9M"], - protect: ["9M"], - psybeam: ["9M", "9L7"], - psyshock: ["9M", "9L63"], - rest: ["9M"], - shadowball: ["9M"], - spiritbreak: ["9M"], - spite: ["9M", "9L1"], - storedpower: ["9M"], - substitute: ["9M"], - suckerpunch: ["9M"], - swift: ["9M"], - taunt: ["9M"], - teleport: ["9M"], - terablast: ["9M"], - wish: ["9L28"], - facade: ["9L1"], - }, - }, - primozeno: { - learnset: { - acupressure: ["9L1"], - agility: ["9L1"], - apexburst: ["9L1"], - aurasphere: ["9L1"], - bloodmoon: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - calmmind: ["9L1"], - charm: ["9L1"], - cosmicpower: ["9L1"], - cutwingbarrage: ["9L1"], - dazzlinggleam: ["9L1"], - disarmingvoice: ["9L1"], - doubleironbash: ["9L1"], - dracometeor: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragondarts: ["9L1"], - dragonrush: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - drainingkiss: ["9L1"], - drillrun: ["9L1"], - dualwingbeat: ["9L1"], - esperwing: ["9L1"], - flashcannon: ["9L1"], - focusblast: ["9L1"], - heavyslam: ["9L1"], - horndrill: ["9L1"], - hyperbeam: ["9L1"], - hyperdrill: ["9L1"], - hypervoice: ["9L1"], - irondefense: ["9L1"], - irontail: ["9L1"], - lowsweep: ["9L1"], - lunarblessing: ["9L1"], - lunardance: ["9L1"], - meanlook: ["9L1"], - meteormash: ["9L1"], - mistyterrain: ["9L1"], - moonblast: ["9L1"], - moonlight: ["9L1"], - outrage: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - sacredsword: ["9L1"], - secretsword: ["9L1"], - spiritbreak: ["9L1"], - steelwing: ["9L1"], - swift: ["9L1"], - swordsdance: ["9L1"], - teleport: ["9L1"], - terablast: ["9L1"], - vacuumwave: ["9L1"], - wish: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - substitute: ["9L1"], - }, - }, - rajang: { - learnset: { - ancientpower: ["9L1"], - bellydrum: ["9M"], - reversal: ["9M"], - snatch: ["9L1"], - megapunch: ["9L1"], - chipaway: ["9L1"], - bodyslam: ["9M"], - breakingswipe: ["9M"], - brickbreak: ["9M"], - bulkup: ["9M"], - submission: ["9L1"], - thunderrush: ["9L1"], - forcepalm: ["9L1"], - charge: ["9M", "9L7"], - chargebeam: ["9M"], - closecombat: ["9M"], - doubleedge: ["9M"], - doubleshock: ["9M"], - dragonhammer: ["9L56"], - drainpunch: ["9M"], - eerieimpulse: ["9M"], - electricterrain: ["9M", "9L21"], - electroball: ["9M"], - endure: ["9M"], - facade: ["9M"], - gigaimpact: ["9M"], - heavyslam: ["9M"], - hyperbeam: ["9M"], - hypervoice: ["9M"], - machpunch: ["9M"], - noretreat: ["9M"], - outrage: ["9M"], - plasmafists: ["9M"], - pursuit: ["9L1"], - protect: ["9M"], - rest: ["9M"], - risingvoltage: ["9L63"], - roar: ["9M"], - rockslide: ["9M"], - scaryface: ["9M"], - shockwave: ["9L1"], - snarl: ["9M"], - stomp: ["9L1"], - stompingtantrum: ["9M"], - supercellslam: ["9M"], - takedown: ["9M"], - taunt: ["9M"], - terablast: ["9M"], - thunder: ["9M", "9L91"], - thunderbolt: ["9M"], - thunderclap: ["9L49"], - thunderpunch: ["9M"], - voltswitch: ["9M"], - volttackle: ["9M"], - wildcharge: ["9M"], - zapcannon: ["9L77"], - substitute: ["9L1"], - }, - }, - shagarumagala: { - learnset: { - apexburst: ["9L1"], - dazzlinggleam: ["9L1"], - extrasensory: ["9L1"], - frenzypulse: ["9L1"], - futuresight: ["9L1"], - moonblast: ["9L1"], - psychic: ["9L1"], - swift: ["9L1"], - aurorabeam: ["9L1"], - mistyexplosion: ["9L1"], - roaroftime: ["9L1"], - healingwish: ["9L1"], - teleport: ["9L1"], - wish: ["9L1"], - }, - }, - chaoticgore: { - learnset: { - acupressure: ["9M"], - aerialace: ["9M"], - aurasphere: ["9M"], - block: ["9M"], - submission: ["9L1"], - bodyslam: ["9M"], - bulkup: ["9M"], - confide: ["9M"], - frenzypulse: ["9L1"], - frenzyslam: ["9L1"], - darkpulse: ["9M", "9L40"], - dazzlinggleam: ["9M"], - defog: ["9M"], - destinybond: ["9M"], - disable: ["9L15"], - doomdesire: ["9M"], - doubleteam: ["9L1"], - dracometeor: ["9M"], - dragonclaw: ["9M"], - dragonrush: ["9L65"], - dreameater: ["9M"], - endure: ["9M"], - facade: ["9M"], - ficklebeam: ["9M"], - focusblast: ["9M"], - foulplay: ["9M"], - gigaimpact: ["9M"], - gust: ["9L1"], - heartswap: ["9M"], - honeclaws: ["9M"], - hyperbeam: ["9M", "9L85"], - knockoff: ["9M"], - lashout: ["9M"], - magiccoat: ["9M"], - moonblast: ["9M"], - nastyplot: ["9M"], - obstruct: ["9M"], - outrage: ["9M"], - partingshot: ["9M"], - payback: ["9M"], - phantomforce: ["9M", "9L55"], - playrough: ["9M"], - powertrip: ["9M", "9L45"], - protect: ["9M"], - psychic: ["9M", "9L45"], - rest: ["9M"], - round: ["9M"], - shadowball: ["9M"], - shadowclaw: ["9M"], - snarl: ["9M"], - snore: ["9M"], - spiritbreak: ["9M"], - strangesteam: ["9M"], - substitute: ["9M"], - suckerpunch: ["9L20"], - superpower: ["9M"], - swagger: ["9M"], - swift: ["9M"], - taunt: ["9M"], - thief: ["9M"], - topsyturvy: ["9M"], - torment: ["9M"], - trick: ["9M"], - uturn: ["9M"], - }, - }, - velkhana: { - learnset: { - alluringvoice: ["9M"], - ancientpower: ["9M"], - attract: ["9M"], - aurorabeam: ["9M"], - avalanche: ["9M"], - blizzard: ["9M"], - arcticshriek: ["9L1"], - block: ["9M"], - calmmind: ["9M"], - charm: ["9M"], - chillingwater: ["9M"], - coldsnap: ["9M"], - confide: ["9M"], - confuseray: ["9M"], - curse: ["9M"], - disarmingvoice: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dracometeor: ["9M"], - dragonbreath: ["9M"], - dragoncheer: ["9M"], - dragondance: ["9M"], - dragonpulse: ["9M"], - dragontail: ["9M"], - dreameater: ["9M"], - echoedvoice: ["9M"], - endure: ["9M"], - facade: ["9M"], - fissure: ["9M"], - freezedry: ["9M"], - freezingglare: ["9M"], - frostbreath: ["9M"], - gigaimpact: ["9M"], - growl: ["9L1"], - haze: ["9M"], - headbutt: ["9M"], - healbell: ["9M"], - helpinghand: ["9M"], - horndrill: ["9M"], - hyperbeam: ["9M"], - hypervoice: ["9M"], - icebeam: ["9M", "9L45"], - iceburn: ["9M"], - iceshard: ["9L20"], - iciclespear: ["9M"], - icywind: ["9M"], - megahorn: ["9M"], - mimic: ["9M"], - mist: ["9L10"], - outrage: ["9M"], - perishsong: ["9L60"], - protect: ["9M"], - psychic: ["9M"], - psywave: ["9M"], - reflect: ["9M"], - rest: ["9M"], - roar: ["9M"], - rocksmash: ["9M"], - round: ["9M"], - safeguard: ["9M"], - sheercold: ["9L65"], - smartstrike: ["9M"], - snore: ["9M"], - snowscape: ["9M"], - strength: ["9M"], - substitute: ["9M"], - swagger: ["9M"], - takedown: ["9M"], - terablast: ["9M"], - weatherball: ["9M"], - }, - }, - vizutsune: { - learnset: { - blastburn: ["9M"], - bodyslam: ["9M"], - bulldoze: ["9M"], - blazeball: ["9L1"], - burningjealousy: ["9M"], - calmmind: ["9M"], - coil: ["9M"], - tailslap: ["9L1"], - confuseray: ["9M"], - curse: ["9M"], - dazzlinggleam: ["9M"], - defensecurl: ["9L24"], - destinybond: ["9M"], - dig: ["9M"], - doubleedge: ["9M", "9L1"], - ember: ["9L1"], - endeavor: ["9M"], - endure: ["9M"], - facade: ["9M"], - fierydance: ["9M"], - fireblast: ["9M"], - firepledge: ["9M"], - firespin: ["9M"], - flamecharge: ["9M", "9L35"], - flamethrower: ["9M", "9L48"], - flamewheel: ["9L20"], - focusblast: ["9M"], - glare: ["9M"], - hex: ["9M"], - hyperbeam: ["9M"], - infernalparade: ["9L0"], - leer: ["9L1"], - mysticalfire: ["9M"], - nastyplot: ["9M"], - nightshade: ["9M"], - perishsong: ["9M"], - playrough: ["9M"], - protect: ["9M"], - quickattack: ["9L13"], - relicsong: ["9M"], - rest: ["9M"], - reversal: ["9M"], - roar: ["9M"], - scald: ["9M"], - smokescreen: ["9L1"], - spite: ["9M"], - substitute: ["9M"], - sunnyday: ["9M"], - swift: ["9M", "9L31"], - tackle: ["9L1"], - takedown: ["9M"], - terablast: ["9M"], - willowisp: ["9M"], - }, - }, - lucacuga: { - learnset: { - acidspray: ["9M"], - agility: ["9M"], - assurance: ["9L10"], - barbbarrage: ["9M"], - behemothblade: ["9M"], - bodyslam: ["9M"], - snatch: ["9L1"], - cut: ["9L1"], - tailslap: ["9L1"], - bulldoze: ["9M"], - crosspoison: ["9M"], - doubleedge: ["9M"], - endeavor: ["9M"], - endure: ["9M"], - facade: ["9M"], - flashcannon: ["9M"], - gigaimpact: ["9M"], - gyroball: ["9M", "9L17"], - hardpress: ["9M"], - haze: ["9M"], - headbutt: ["9L21"], - heavyslam: ["9M"], - hyperbeam: ["9M"], - irondefense: ["9M"], - ironhead: ["9M", "9L28"], - lashout: ["9M"], - lick: ["9L1"], - magnetrise: ["9L1"], - metalsound: ["9M"], - meteormash: ["9M"], - phantomforce: ["9M"], - poisonjab: ["9M", "9L36"], - poisontail: ["9M"], - poltergeist: ["9M"], - protect: ["9M"], - pursuit: ["9L1"], - rest: ["9M"], - sandstorm: ["9M"], - scaryface: ["9M"], - screech: ["9L25"], - shadowball: ["9M"], - shadowclaw: ["9M"], - shadowsneak: ["9M"], - spectralthief: ["9M"], - spinout: ["9L52"], - steelbeam: ["9M"], - substitute: ["9M"], - swagger: ["9L32"], - swordsdance: ["9M"], - takedown: ["9M"], - taunt: ["9M", "9L7"], - teleport: ["9M"], - temperflare: ["9M"], - terablast: ["9M"], - thief: ["9M"], - toxic: ["9M"], - toxicspikes: ["9M"], - uproar: ["9M", "9L46"], - uturn: ["9M"], - zenheadbutt: ["9M"], - }, - }, - ibushi: { - learnset: { - aerialace: ["9M"], - aeroblast: ["9M"], - chipaway: ["9L1"], - dracophage: ["9L1"], - airslash: ["9M"], - ancientpower: ["9L1"], - avalanche: ["9M"], - blizzard: ["9M"], - bodyslam: ["9M"], - bravebird: ["9M"], - breakingswipe: ["9M"], - brutalswing: ["9M"], - coil: ["9M"], - confide: ["9M"], - coldsnap: ["9L1"], - cosmicpower: ["9M"], - crunch: ["9M", "9L9"], - defog: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dracometeor: ["9M"], - dragonascent: ["9L1"], - dragoncheer: ["9M"], - dragonclaw: ["9M"], - dragondance: ["9M", "9L18"], - dragonpulse: ["9M", "9L36"], - dragontail: ["9M"], - earthpower: ["9M"], - echoedvoice: ["9M"], - endure: ["9M"], - extremespeed: ["9L27"], - facade: ["9M"], - fly: ["9M", "9L63"], - focusblast: ["9M"], - furycutter: ["9M"], - gigaimpact: ["9M"], - healbell: ["9M"], - healingwish: ["9M"], - heatwave: ["9M"], - helpinghand: ["9M"], - honeclaws: ["9M"], - hurricane: ["9M"], - hyperbeam: ["9M", "9L90"], - hypervoice: ["9M", "9L45"], - irontail: ["9M"], - memento: ["9M"], - meteorbeam: ["9M"], - oblivionwing: ["9M"], - outrage: ["9M", "9L81"], - powergem: ["9M"], - protect: ["9M"], - psychup: ["9M"], - raindance: ["9M"], - rest: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - roost: ["9M"], - round: ["9M"], - scaleshot: ["9M"], - scaryface: ["9M"], - shockwave: ["9M"], - snore: ["9M"], - stealthrock: ["9M"], - stoneedge: ["9M"], - strength: ["9M"], - substitute: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tailwind: ["9M"], - takedown: ["9M"], - terablast: ["9M"], - thunder: ["9M"], - thunderbolt: ["9M"], - thunderwave: ["9M"], - twister: ["9L1"], - uproar: ["9M"], - uturn: ["9M"], - wish: ["9M"], - }, - }, - narwa: { - learnset: { - ancientpower: ["9L1"], - airslash: ["9L1"], - bodyslam: ["9M"], - boltstrike: ["9L88"], - bleakwindstorm: ["9M"], - brutalswing: ["9M"], - charge: ["9M"], - chargebeam: ["9M"], - clangingscales: ["9M"], - coil: ["9M"], - confide: ["9M"], - crunch: ["9M", "9L16"], - defog: ["9M"], - doubleedge: ["9M"], - doubleteam: ["9M"], - dracometeor: ["9M"], - dragonbreath: ["9L1"], - dragoncheer: ["9M"], - dragonclaw: ["9M", "9L32"], - dragondance: ["9M"], - dragonpulse: ["9M"], - dragontail: ["9M"], - dragonator: ["9M"], - earthpower: ["9M"], - echoedvoice: ["9M"], - electricterrain: ["9M"], - electroball: ["9M"], - endure: ["9M"], - facade: ["9M"], - fling: ["9M"], - fly: ["9M"], - focusblast: ["9M"], - gigaimpact: ["9M"], - helpinghand: ["9M"], - honeclaws: ["9M"], - hyperbeam: ["9M"], - hypervoice: ["9M", "9L56"], - magnetrise: ["9M"], - outrage: ["9M", "9L80"], - payback: ["9M"], - protect: ["9M"], - raindance: ["9M"], - rest: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocksmash: ["9M"], - rocktomb: ["9M"], - roost: ["9M"], - round: ["9M"], - safeguard: ["9M"], - scaryface: ["9M"], - shockwave: ["9M"], - slash: ["9L8"], - snore: ["9M"], - steelwing: ["9M"], - stoneedge: ["9M"], - strength: ["9M"], - substitute: ["9M"], - supercellslam: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tailwind: ["9M"], - takedown: ["9M"], - terablast: ["9M"], - thunder: ["9M"], - thunderbolt: ["9M"], - thunderfang: ["9M"], - thunderwave: ["9M"], - voltswitch: ["9M"], - weatherball: ["9M"], - wildboltstorm: ["9M"], - wildcharge: ["9M"], - wish: ["9M"], - }, - }, - amatsu: { - learnset: { - aeroblast: ["9M"], - airslash: ["9M"], - ancientpower: ["9L1"], - bewitchedbubble: ["9L1"], - aquaring: ["9L54"], - aquatail: ["9L9"], - bleakwindstorm: ["9M"], - blizzard: ["9M"], - block: ["9M"], - bodyslam: ["9M"], - bravebird: ["9M"], - brine: ["9M"], - calmmind: ["9M", "9L18"], - chillyreception: ["9M"], - confide: ["9M"], - defensecurl: ["9M"], - defog: ["9M"], - dive: ["9M"], - doubleedge: ["9M", "9L81"], - doubleteam: ["9M"], - dracometeor: ["9M"], - dragonpulse: ["9M"], - endure: ["9M"], - facade: ["9M"], - gigaimpact: ["9M"], - headbutt: ["9M"], - helpinghand: ["9M"], - hurricane: ["9M"], - hydropump: ["9M", "9L72"], - hyperbeam: ["9M"], - icebeam: ["9M", "9L36"], - mimic: ["9T"], - muddywater: ["9M", "9L27"], - mudslap: ["9T"], - outrage: ["9L1", "9L63"], - protect: ["9M"], - psychup: ["9M"], - raindance: ["9M"], - recover: ["9M"], - rest: ["9M"], - roar: ["9M"], - rocksmash: ["9M"], - round: ["9M"], - safeguard: ["9M"], - scald: ["9M"], - scaryface: ["9M"], - snore: ["9M"], - strength: ["9M"], - substitute: ["9M"], - surf: ["9M"], - swagger: ["9M"], - swift: ["9M"], - tailwind: ["9M"], - takedown: ["9M"], - terablast: ["9M"], - thunder: ["9M"], - thunderbolt: ["9M"], - thunderwave: ["9M"], - uproar: ["9M"], - uturn: ["9M"], - waterpulse: ["9M", "9L1"], - waterspout: ["9L90"], - whirlpool: ["9M"], - }, - }, - gaismagorm: { - learnset: { - amnesia: ["9M"], - belch: ["9L60"], - bite: ["9L1"], - bodypress: ["9M"], - bodyslam: ["9M", "9L35"], - devour: ["9L1"], - breakingswipe: ["9M"], - brutalswing: ["9M"], - bulldoze: ["9M"], - corrosivegas: ["9M"], - cosmicpower: ["9M"], - crunch: ["9M"], - darkpulse: ["9M"], - doubleteam: ["9M"], - dracometeor: ["9M"], - dragonenergy: ["9M"], - dragonpulse: ["9M"], - dragonrush: ["9L55"], - dragontail: ["9L1", "9M"], - drainpunch: ["9M"], - earthpower: ["9M"], - earthquake: ["9M"], - endure: ["9M"], - facade: ["9M"], - fireblast: ["9M"], - flamethrower: ["9M"], - foulplay: ["9M"], - gastroacid: ["9L40"], - gigaimpact: ["9M"], - hammerarm: ["9L45"], - healorder: ["9M"], - attackorder: ["9M"], - defendorder: ["9M"], - heavyslam: ["9M", "9L50"], - hyperbeam: ["9M"], - knockoff: ["9L10"], - lashout: ["9T"], - lastresort: ["9T"], - outrage: ["9M"], - payback: ["9M"], - protect: ["9M"], - rest: ["9M"], - roar: ["9M"], - rockslide: ["9M"], - rocktomb: ["9M"], - round: ["9M"], - ruination: ["9M"], - shadowclaw: ["9M"], - sludgebomb: ["9M"], - smackdown: ["9M"], - snarl: ["9M"], - snore: ["9M"], - spitup: ["9M"], - stockpile: ["9L5"], - stomp: ["9L15"], - stompingtantrum: ["9M"], - stoneedge: ["9M"], - substitute: ["9M"], - swallow: ["9L5"], - thief: ["9M"], - thrash: ["9L65"], - toxic: ["9M"], - abyssaleruption: ["9L25"], - wideguard: ["9L25"], - }, - }, - greatmaccao: { - learnset: { - absorb: ["9L1"], - aerialace: ["9L1"], - afteryou: ["9L1"], - agility: ["9L1"], - axekick: ["9L1"], - bodyslam: ["9L1"], - takedown: ["9L1"], - bravebird: ["9L1"], - megakick: ["9M"], - chipaway: ["9L1"], - breakingswipe: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - bulletseed: ["9L1"], - closecombat: ["9L1"], - counter: ["9L1"], - courtchange: ["9L1"], - drainpunch: ["9L1"], - dynamicpunch: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - faketears: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - fling: ["9L1"], - focuspunch: ["9L1"], - gigaimpact: ["9L1"], - grassknot: ["9L1"], - grassyglide: ["9L1"], - growth: ["9L1"], - headbutt: ["9L1"], - highjumpkick: ["9L1"], - leechseed: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - machpunch: ["9L1"], - megadrain: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - poisonjab: ["9L1"], - poisonpowder: ["9L1"], - poisontail: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - seedbomb: ["9L1"], - stompingtantrum: ["9L1"], - stunspore: ["9L1"], - sunnyday: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderouskick: ["9L1"], - trailblaze: ["9L1"], - tropkick: ["9L1"], - worryseed: ["9L1"], - endure: ["9L1"], - doubleedge: ["9L1"], - woodhammer: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - }, - }, - agnaktor: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - chipaway: ["9L1"], - hyperdrill: ["9L1"], - megakick: ["9M"], - drillpeck: ["9L1"], - heatbeam: ["9L1"], - amnesia: ["9L1"], - armorcannon: ["9L1"], - beakblast: ["9L1"], - blazingtorque: ["9L1"], - breakingswipe: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - burnup: ["9L1"], - circlethrow: ["9L1"], - curse: ["9L1"], - darkestlariat: ["9L1"], - dig: ["9L1"], - drillrun: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - firelash: ["9L1"], - firespin: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - fling: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - heatcrash: ["9L1"], - honeclaws: ["9L1"], - knockoff: ["9L1"], - lick: ["9L1"], - lowkick: ["9L1"], - nightslash: ["9L1"], - partingshot: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - rollingkick: ["9L1"], - shadowclaw: ["9L1"], - shelltrap: ["9L1"], - slash: ["9L1"], - spiritbreak: ["9L1"], - spitup: ["9L1"], - magmasurge: ["9L1"], - stockpile: ["9L1"], - stompingtantrum: ["9L1"], - suckerpunch: ["9L1"], - sunnyday: ["9L1"], - swallow: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - tickle: ["9L1"], - triplekick: ["9L1"], - wakeupslap: ["9L1"], - willowisp: ["9L1"], - endure: ["9L1"], - protect: ["9L1"], - substitute: ["9L1"], - }, - }, - ahtalka: { - learnset: { - acupressure: ["9L1"], - assurance: ["9L1"], - attackorder: ["9L1"], - attract: ["9L1"], - decayduster: ["9L1"], - snatch: ["9L1"], - batonpass: ["9L1"], - behemothblade: ["9L1"], - bugbite: ["9L1"], - bugbuzz: ["9L1"], - bulletpunch: ["9L1"], - confide: ["9L1"], - courtchange: ["9L1"], - covet: ["9L1"], - crushclaw: ["9L1"], - defendorder: ["9L1"], - drillrun: ["9L1"], - dragonator: ["9L1"], - embargo: ["9L1"], - encore: ["9L1"], - facade: ["9L1"], - fellstinger: ["9L1"], - firstimpression: ["9L1"], - geargrind: ["9L1"], - growl: ["9L1"], - healorder: ["9L1"], - irondefense: ["9L1"], - irontail: ["9L1"], - knockoff: ["9L1"], - leafblade: ["9L1"], - leechlife: ["9L1"], - leer: ["9L1"], - lockon: ["9L1"], - lowkick: ["9L1"], - mefirst: ["9L1"], - megahorn: ["9L1"], - mirrorcoat: ["9L1"], - painsplit: ["9L1"], - pounce: ["9L1"], - powergem: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psychocut: ["9L1"], - quickguard: ["9L1"], - rapidspin: ["9L1"], - recycle: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockblast: ["9L1"], - rototiller: ["9L1"], - shiftgear: ["9L1"], - signalbeam: ["9L1"], - silktrap: ["9L1"], - skittersmack: ["9L1"], - smartstrike: ["9L1"], - steelroller: ["9L1"], - stickyweb: ["9L1"], - stringshot: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - trick: ["9L1"], - xscissor: ["9L1"], - endure: ["9L1"], - }, - }, - akantor: { - learnset: { - amnesia: ["9L1"], - attract: ["9L1"], - dracophage: ["9L1"], - aurasphere: ["9L1"], - bellydrum: ["9L1"], - supremacysquall: ["9L1"], - bite: ["9L1"], - blueflare: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - earthpower: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - dig: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragonpulse: ["9L1"], - earthquake: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - focusblast: ["9L1"], - growl: ["9L1"], - headlongrush: ["9L1"], - heatcrash: ["9L1"], - heavyslam: ["9L1"], - hyperdrill: ["9L1"], - magmastorm: ["9L1"], - aeroblast: ["9L1"], - landswrath: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - morningsun: ["9L1"], - nastyplot: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - ruination: ["9L1"], - sandsearstorm: ["9L1"], - scaryface: ["9L1"], - scorchingsands: ["9L1"], - seismictoss: ["9L1"], - snarl: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - torment: ["9L1"], - endure: ["9L1"], - }, - }, - alatreon: { - learnset: { - agility: ["9L1"], - bulkup: ["9L1"], - nastyplot: ["9L1"], - willowisp: ["9L1"], - thunderwave: ["9L1"], - airslash: ["9L1"], - ancientpower: ["9L1"], - aquaring: ["9L1"], - attract: ["9L1"], - blazeball: ["9L1"], - blizzard: ["9L1"], - boltstrike: ["9L1"], - breakingswipe: ["9L1"], - calmmind: ["9L1"], - chillingwater: ["9L1"], - chillyreception: ["9L1"], - darkpulse: ["9L1"], - discharge: ["9L1"], - doubleedge: ["9L1"], - dracometeor: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - earthquake: ["9L1"], - eerieimpulse: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - focusblast: ["9L1"], - freezeshock: ["9L1"], - growl: ["9L1"], - heavyslam: ["9L1"], - hurricane: ["9L1"], - icebeam: ["9L1"], - iceburn: ["9L1"], - iciclecrash: ["9L1"], - iciclespear: ["9L1"], - inferno: ["9L1"], - judgment: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - magnetrise: ["9L1"], - meanlook: ["9L1"], - muddywater: ["9L1"], - multiattack: ["9L1"], - nightslash: ["9L1"], - outrage: ["9L1"], - overheat: ["9L1"], - protect: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - soak: ["9L1"], - spiritbreak: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - spacialrend: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thunderbolt: ["9L1"], - triattack: ["9L1"], - voltswitch: ["9L1"], - coldsnap: ["9L1"], - volttackle: ["9L1"], - dracophage: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - banbaro: { - learnset: { - agility: ["9L1"], - chipaway: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - beatup: ["9L1"], - bodyslam: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - coaching: ["9L1"], - combattorque: ["9L1"], - confide: ["9L1"], - counter: ["9L1"], - doubleedge: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - headcharge: ["9L1"], - headlongrush: ["9L1"], - helpinghand: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - milkdrink: ["9L1"], - noretreat: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - tripleaxel: ["9L1"], - zenheadbutt: ["9L1"], - avalanche: ["9L1"], - noxioustorque: ["9L1"], - blazingtorque: ["9L1"], - soak: ["9L1"], - woodhammer: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - beotodus: { - learnset: { - agility: ["9L1"], - aquajet: ["9L1"], - aquastep: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - beatup: ["9L1"], - confide: ["9L1"], - extremespeed: ["9L1"], - filletaway: ["9L1"], - firstimpression: ["9L1"], - flipturn: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - snowscape: ["9L1"], - headbutt: ["9L1"], - iceball: ["9L1"], - icefang: ["9L1"], - icespinner: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - psychocut: ["9L1"], - rest: ["9L1"], - smartstrike: ["9L1"], - spinout: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - tripleaxel: ["9L1"], - tripledive: ["9L1"], - watersport: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - blangonga: { - learnset: { - megapunch: ["9L1"], - assurance: ["9L1"], - snatch: ["9L1"], - snowballcannon: ["9L1"], - submission: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - reversal: ["9M"], - beatup: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - chipaway: ["9L1"], - coaching: ["9L1"], - confide: ["9L1"], - covet: ["9L1"], - doubleedge: ["9L1"], - drainpunch: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - faketears: ["9L1"], - forcepalm: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - icefang: ["9L1"], - icepunch: ["9L1"], - iceshard: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - meanlook: ["9L1"], - mountaingale: ["9L1"], - playrough: ["9L1"], - populationbomb: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - screech: ["9L1"], - seismictoss: ["9L1"], - snarl: ["9L1"], - snowscape: ["9L1"], - stoneedge: ["9L1"], - stormthrow: ["9L1"], - substitute: ["9L1"], - superfang: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - throatchop: ["9L1"], - trick: ["9L1"], - tripleaxel: ["9L1"], - uturn: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - brachydios: { - learnset: { - acidarmor: ["9L1"], - chipaway: ["9L1"], - megapunch: ["9L1"], - agility: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - banefulbunker: ["9L1"], - batonpass: ["9L1"], - beatup: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - bulletpunch: ["9L1"], - closecombat: ["9L1"], - coaching: ["9L1"], - counter: ["9L1"], - dizzypunch: ["9L1"], - dragonrush: ["9L1"], - drainpunch: ["9L1"], - dynamicpunch: ["9L1"], - encore: ["9L1"], - firepunch: ["9L1"], - flamecharge: ["9L1"], - focusblast: ["9L1"], - focuspunch: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - headbutt: ["9L1"], - headsmash: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - machpunch: ["9L1"], - mortalspin: ["9L1"], - powertrip: ["9L1"], - poweruppunch: ["9L1"], - noretreat: ["9L1"], - protect: ["9L1"], - ragingfury: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - seismictoss: ["9L1"], - shadowpunch: ["9L1"], - skyuppercut: ["9L1"], - smackdown: ["9L1"], - smog: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - upperhand: ["9L1"], - willowisp: ["9L1"], - slimepunch: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - bulldrome: { - learnset: { - stomp: ["9L1"], - agility: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - bodyslam: ["9L1"], - bulkup: ["9L1"], - charm: ["9L1"], - collisioncourse: ["9L1"], - doubleedge: ["9L1"], - drillrun: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - flareblitz: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - headcharge: ["9L1"], - headsmash: ["9L1"], - helpinghand: ["9L1"], - highhorsepower: ["9L1"], - hyperdrill: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - mefirst: ["9L1"], - outrage: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rollout: ["9L1"], - skullbash: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thrash: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - wickedtorque: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - ceadeus: { - learnset: { - acidspray: ["9L1"], - dracophage: ["9L1"], - alluringvoice: ["9L1"], - ancientpower: ["9L1"], - aquaring: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - blizzard: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - cyclonerend: ["9L1"], - curse: ["9L1"], - dracometeor: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - flipturn: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - headbutt: ["9L1"], - headcharge: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - lifedew: ["9L1"], - luckychant: ["9L1"], - megahorn: ["9L1"], - muddywater: ["9L1"], - nobleroar: ["9L1"], - originpulse: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - purify: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - safeguard: ["9L1"], - scaleshot: ["9L1"], - shedtail: ["9L1"], - soak: ["9L1"], - spite: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - watersport: ["9L1"], - waterspout: ["9L1"], - wavecrash: ["9L1"], - whirlpool: ["9L1"], - wish: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - cephadrome: { - learnset: { - afteryou: ["9L1"], - stomp: ["9L1"], - agility: ["9L1"], - assurance: ["9L1"], - astonish: ["9L1"], - tailslap: ["9L1"], - attract: ["9L1"], - wildcharge: ["9L1"], - shoreup: ["9L1"], - beatup: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - confide: ["9L1"], - thunderrush: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - faketears: ["9L1"], - feintattack: ["9L1"], - flipturn: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - headlongrush: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - lick: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - mefirst: ["9L1"], - painsplit: ["9L1"], - payback: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rototiller: ["9L1"], - round: ["9L1"], - snatch: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - nuzzle: ["9L1"], - tickle: ["9L1"], - trick: ["9L1"], - uturn: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - congalala: { - learnset: { - acid: ["9L1"], - acidarmor: ["9L1"], - acidspray: ["9L1"], - stinkbomb: ["9L1"], - flamethrower: ["9L1"], - attract: ["9L1"], - reversal: ["9M"], - belch: ["9L1"], - bellydrum: ["9L1"], - bodyslam: ["9L1"], - circlethrow: ["9L1"], - devour: ["9L1"], - clearsmog: ["9L1"], - coaching: ["9L1"], - confide: ["9L1"], - covet: ["9L1"], - crosschop: ["9L1"], - crunch: ["9L1"], - direclaw: ["9L1"], - disable: ["9L1"], - disarmingvoice: ["9L1"], - drumbeating: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - fling: ["9L1"], - growl: ["9L1"], - ingrain: ["9L1"], - leechseed: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - nastyplot: ["9L1"], - naturalgift: ["9L1"], - poisongas: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - pollenpuff: ["9L1"], - protect: ["9L1"], - recycle: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - screech: ["9L1"], - seedbomb: ["9L1"], - seismictoss: ["9L1"], - slackoff: ["9L1"], - sleeppowder: ["9L1"], - sludge: ["9L1"], - sludgebomb: ["9L1"], - snarl: ["9L1"], - snatch: ["9L1"], - spiritbreak: ["9L1"], - stuffcheeks: ["9L1"], - stunspore: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - switcheroo: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - venomdrench: ["9L1"], - powderkeg: ["9L1"], - endure: ["9L1"], - }, - }, - dahrenmohran: { - learnset: { - acupressure: ["9L1"], - attract: ["9L1"], - bulkup: ["9L1"], - ceaselessedge: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - dig: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragonrush: ["9L1"], - drillrun: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - fling: ["9L1"], - growl: ["9L1"], - gyroball: ["9L1"], - headcharge: ["9L1"], - headlongrush: ["9L1"], - heavyslam: ["9L1"], - hyperdrill: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - kowtowcleave: ["9L1"], - leer: ["9L1"], - mefirst: ["9L1"], - megahorn: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - meteorassault: ["9L1"], - mightycleave: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - sandstorm: ["9L1"], - shoreup: ["9L1"], - snarl: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thousandarrows: ["9L1"], - uturn: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - dalamadur: { - learnset: { - astralbarrage: ["9L1"], - solarbeam: ["9L1"], - thunderbolt: ["9L1"], - attract: ["9L1"], - bittermalice: ["9L1"], - bodypress: ["9L1"], - bulkup: ["9L1"], - calmmind: ["9L1"], - clangingscales: ["9L1"], - coil: ["9L1"], - coreenforcer: ["9L1"], - cosmicpower: ["9L1"], - curse: ["9L1"], - diamondstorm: ["9L1"], - dig: ["9L1"], - dracometeor: ["9L1"], - dragonbreath: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - eternabeam: ["9L1"], - facade: ["9L1"], - firelash: ["9L1"], - glare: ["9L1"], - growl: ["9L1"], - heavyslam: ["9L1"], - imprison: ["9L1"], - jawlock: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - metalsound: ["9L1"], - meteorassault: ["9L1"], - moonlight: ["9L1"], - mountaingale: ["9L1"], - mysticalpower: ["9L1"], - nastyplot: ["9L1"], - outrage: ["9L1"], - powergem: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - sandtomb: ["9L1"], - scaleshot: ["9L1"], - scorchingsands: ["9L1"], - steelroller: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - terastarstorm: ["9L1"], - thousandarrows: ["9L1"], - thunder: ["9L1"], - thunderwave: ["9L1"], - wish: ["9L1"], - endure: ["9L1"], - }, - }, - deviljho: { - learnset: { - agility: ["9L1"], - recycle: ["9L1"], - chipaway: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - axekick: ["9L1"], - devilsjaw: ["9L1"], - knockoff: ["9L1"], - stuffcheeks: ["9L1"], - submission: ["9L1"], - slimyspit: ["9L1"], - bellydrum: ["9L1"], - blazekick: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - devour: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - doubleedge: ["9L1"], - doublekick: ["9L1"], - dragondance: ["9L1"], - dragonenergy: ["9L1"], - dragonpulse: ["9L1"], - facade: ["9L1"], - finalgambit: ["9L1"], - firefang: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - headbutt: ["9L1"], - headsmash: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - playrough: ["9L1"], - poisonfang: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - pursuit: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - shedtail: ["9L1"], - slackoff: ["9L1"], - snarl: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superfang: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderfang: ["9L1"], - thunderouskick: ["9L1"], - triplekick: ["9L1"], - endure: ["9L1"], - }, - }, - diremiralis: { - learnset: { - aquatail: ["9L1"], - overheat: ["9L1"], - attract: ["9L1"], - bodypress: ["9L1"], - spacialrend: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - burningbulwark: ["9L1"], - cosmicpower: ["9L1"], - crunch: ["9L1"], - dracometeor: ["9L1"], - dragonclaw: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - earthquake: ["9L1"], - eruption: ["9L1"], - facade: ["9L1"], - fierywrath: ["9L1"], - finalgambit: ["9L1"], - fireblast: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - blazeball: ["9L1"], - flareblitz: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - heavyslam: ["9L1"], - inferno: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - meteorbeam: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - scald: ["9L1"], - slackoff: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - steameruption: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - waterspout: ["9L1"], - willowisp: ["9L1"], - endure: ["9L1"], - }, - }, - dodogama: { - learnset: { - assurance: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - belch: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - devour: ["9L1"], - confide: ["9L1"], - curse: ["9L1"], - firefang: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - highhorsepower: ["9L1"], - honeclaws: ["9L1"], - ironhead: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - mudbomb: ["9L1"], - rockslide: ["9L1"], - painsplit: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - quash: ["9L1"], - recycle: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rocksmash: ["9L1"], - sandstorm: ["9L1"], - sandtomb: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - stuffcheeks: ["9M"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superfang: ["9L1"], - tackle: ["9L1"], - tarshot: ["9L1"], - terablast: ["9L1"], - thunderfang: ["9L1"], - tidyup: ["9L1"], - blastbite: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - duramboros: { - learnset: { - acrobatics: ["9L1"], - aircutter: ["9L1"], - aromatherapy: ["9L1"], - chipaway: ["9L1"], - mossbomb: ["9L1"], - attract: ["9L1"], - bleakwindstorm: ["9L1"], - bodyslam: ["9L1"], - bounce: ["9L1"], - bravebird: ["9L1"], - breakingswipe: ["9L1"], - bulkup: ["9L1"], - confide: ["9L1"], - cottonguard: ["9L1"], - cottonspore: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - doubleedge: ["9L1"], - energyball: ["9L1"], - faketears: ["9L1"], - fly: ["9L1"], - gigadrain: ["9L1"], - grassyglide: ["9L1"], - growl: ["9L1"], - growth: ["9L1"], - headbutt: ["9L1"], - hurricane: ["9L1"], - ingrain: ["9L1"], - junglehealing: ["9L1"], - lashout: ["9L1"], - leafstorm: ["9L1"], - leer: ["9L1"], - milkdrink: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - skyattack: ["9L1"], - snaptrap: ["9L1"], - solarbeam: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - stunspore: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - synthesis: ["9L1"], - syrupbomb: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - whirlwind: ["9L1"], - woodhammer: ["9L1"], - zenheadbutt: ["9L1"], - bodypress: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - eruzerion: { - learnset: { - arcticshriek: ["9L1"], - aviniasblessing: ["9L1"], - ignitionflare: ["9L1"], - armorcannon: ["9L1"], - blastbite: ["9L1"], - aurorabeam: ["9L1"], - auroraveil: ["9L1"], - avalanche: ["9L1"], - bitterblade: ["9L1"], - blastburn: ["9L1"], - blazeball: ["9L1"], - blazekick: ["9L1"], - blazingtorque: ["9L1"], - blizzard: ["9L1"], - blueflare: ["9L1"], - burningbulwark: ["9L1"], - burningjealousy: ["9L1"], - burnup: ["9L1"], - chillyreception: ["9L1"], - crimsondawn: ["9L1"], - coldsnap: ["9L1"], - ember: ["9L1"], - eruption: ["9L1"], - fierydance: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - firelash: ["9L1"], - firepledge: ["9L1"], - firepunch: ["9L1"], - firespin: ["9L1"], - flameburst: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flamewheel: ["9L1"], - flareblitz: ["9L1"], - freezedry: ["9L1"], - freezeshock: ["9L1"], - frostbreath: ["9L1"], - fusionflare: ["9L1"], - glaciallance: ["9L1"], - glaciate: ["9L1"], - glidebomb: ["9L1"], - haze: ["9L1"], - heatbeam: ["9L1"], - heatcrash: ["9L1"], - heatwave: ["9L1"], - iceball: ["9L1"], - icebeam: ["9L1"], - iceburn: ["9L1"], - icefang: ["9L1"], - icehammer: ["9L1"], - icepunch: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - iciclecrash: ["9L1"], - iciclespear: ["9L1"], - icywind: ["9L1"], - incinerate: ["9L1"], - inferno: ["9L1"], - lavaplume: ["9L1"], - magmastorm: ["9L1"], - magmasurge: ["9L1"], - magnalance: ["9L1"], - convection: ["9L1"], - convectionnova: ["9L1"], - mindblown: ["9L1"], - mist: ["9L1"], - mountaingale: ["9L1"], - mysticalfire: ["9L1"], - overheat: ["9L1"], - powdersnow: ["9L1"], - pyroball: ["9L1"], - ragingfury: ["9L1"], - sacredfire: ["9L1"], - searingshot: ["9L1"], - sheercold: ["9L1"], - shelltrap: ["9L1"], - sizzlyslide: ["9L1"], - snowscape: ["9L1"], - sunnyday: ["9L1"], - temperflare: ["9L1"], - torchsong: ["9L1"], - tripleaxel: ["9L1"], - vcreate: ["9L1"], - willowisp: ["9L1"], - seraphicshift: ["9L1"], - frozencleave: ["9L1"], - }, - }, - fatalis: { - learnset: { - attract: ["9L1"], - spacialrend: ["9L1"], - blueflare: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - blazeball: ["9L1"], - burningjealousy: ["9L1"], - calmmind: ["9L1"], - crunch: ["9L1"], - dracometeor: ["9L1"], - dragonascent: ["9L1"], - dragonclaw: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - dragonenergy: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - earthquake: ["9L1"], - eruption: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - fierywrath: ["9L1"], - fireblast: ["9L1"], - firelash: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - foulplay: ["9L1"], - fusionflare: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - hammerarm: ["9L1"], - inferno: ["9L1"], - leer: ["9L1"], - lowsweep: ["9L1"], - magmastorm: ["9L1"], - meanlook: ["9L1"], - morningsun: ["9L1"], - nastyplot: ["9L1"], - outrage: ["9L1"], - overheat: ["9L1"], - protect: ["9L1"], - pyroball: ["9L1"], - ragingfury: ["9L1"], - recover: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - roaroftime: ["9L1"], - ruination: ["9L1"], - sacredfire: ["9L1"], - seismictoss: ["9L1"], - snarl: ["9L1"], - swordsdance: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - vcreate: ["9L1"], - willowisp: ["9L1"], - wish: ["9L1"], - crimsondawn: ["9S0"], - powderkeg: ["9L1"], - ancestralthunder: ["9S1"], - endure: ["9L1"], - }, - eventData: [ - {generation: 9, level: 70, moves: ["crimsondawn"]}, - {generation: 9, level: 70, moves: ["ancestralthunder"]}, - ], - eventOnly: true, - }, - fuljanath: { - learnset: { - agility: ["9L1"], - attract: ["9L1"], - bellydrum: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - tailslap: ["9L1"], - stuffcheeks: ["9M"], - bulkup: ["9L1"], - chargebeam: ["9L1"], - closecombat: ["9L1"], - crunch: ["9L1"], - devour: ["9L1"], - thunderrush: ["9L1"], - curse: ["9L1"], - discharge: ["9L1"], - doubleedge: ["9L1"], - doubleshock: ["9L1"], - dragondance: ["9L1"], - dragontail: ["9L1"], - pursuit: ["9L1"], - electricterrain: ["9L1"], - facade: ["9L1"], - growl: ["9L1"], - heavyslam: ["9L1"], - highhorsepower: ["9L1"], - irontail: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - magneticflux: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - shockwave: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - supercellslam: ["9L1"], - superfang: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderbolt: ["9L1"], - thunderclap: ["9L1"], - thunderfang: ["9L1"], - thunderwave: ["9L1"], - trailblaze: ["9L1"], - volttackle: ["9L1"], - wildcharge: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - gammoth: { - learnset: { - alluringvoice: ["9L1"], - avalanche: ["9L1"], - attract: ["9L1"], - auroraveil: ["9L1"], - behemothbash: ["9L1"], - blizzard: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - coldsnap: ["9L1"], - bulkup: ["9L1"], - curse: ["9L1"], - doubleedge: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - growl: ["9L1"], - hammerarm: ["9L1"], - haze: ["9L1"], - headbutt: ["9L1"], - headcharge: ["9L1"], - headsmash: ["9L1"], - heavyslam: ["9L1"], - helpinghand: ["9L1"], - iceball: ["9L1"], - icebeam: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - iciclecrash: ["9L1"], - irondefense: ["9L1"], - leer: ["9L1"], - milkdrink: ["9L1"], - mist: ["9L1"], - mountaingale: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - psyshieldbash: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - snowscape: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - snowballcannon: ["9L1"], - endure: ["9L1"], - }, - }, - gendrome: { - learnset: { - afteryou: ["9L1"], - agility: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - stomp: ["9L1"], - bodyslam: ["9L1"], - boneclub: ["9L1"], - brickbreak: ["9L1"], - confide: ["9L1"], - crosschop: ["9L1"], - crunch: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - drillpeck: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - fling: ["9L1"], - followme: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - ironhead: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - mightycleave: ["9L1"], - mudsport: ["9L1"], - nuzzle: ["9L1"], - playrough: ["9L1"], - populationbomb: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rollout: ["9L1"], - round: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - tickle: ["9L1"], - trick: ["9L1"], - wideguard: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - giadrome: { - learnset: { - afteryou: ["9L1"], - agility: ["9L1"], - assurance: ["9L1"], - stomp: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - confide: ["9L1"], - coldsnap: ["9L1"], - crosschop: ["9L1"], - crunch: ["9L1"], - doublekick: ["9L1"], - drillpeck: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - fakeout: ["9L1"], - fling: ["9L1"], - followme: ["9L1"], - frostbreath: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - icefang: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - ironhead: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - playrough: ["9L1"], - populationbomb: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - tickle: ["9L1"], - trick: ["9L1"], - tripleaxel: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - gigginox: { - learnset: { - acid: ["9L1"], - acidarmor: ["9L1"], - biocharge: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - belch: ["9L1"], - brutalswing: ["9L1"], - clearsmog: ["9L1"], - coil: ["9L1"], - confide: ["9L1"], - confuseray: ["9L1"], - crosspoison: ["9L1"], - darkpulse: ["9L1"], - dig: ["9L1"], - disable: ["9L1"], - embargo: ["9L1"], - faketears: ["9L1"], - falsesurrender: ["9L1"], - feintattack: ["9L1"], - firelash: ["9L1"], - fling: ["9L1"], - foulplay: ["9L1"], - gastroacid: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - hex: ["9L1"], - honeclaws: ["9L1"], - infestation: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - mortalspin: ["9L1"], - nightshade: ["9L1"], - nightslash: ["9L1"], - painsplit: ["9L1"], - partingshot: ["9L1"], - payback: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - punishment: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - shadowsneak: ["9L1"], - sludgebomb: ["9L1"], - snarl: ["9L1"], - snatch: ["9L1"], - spiritbreak: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - throatchop: ["9L1"], - topsyturvy: ["9L1"], - toxic: ["9L1"], - trick: ["9L1"], - venomdrench: ["9L1"], - venoshock: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - glavenus: { - learnset: { - sharpen: ["9L1"], - accelerock: ["9L1"], - attract: ["9L1"], - brimstoneblade: ["9L1"], - behemothblade: ["9L1"], - bitterblade: ["9L1"], - bulkup: ["9L1"], - circlethrow: ["9L1"], - crunch: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - growl: ["9L1"], - kowtowcleave: ["9L1"], - leer: ["9L1"], - lowsweep: ["9L1"], - metalburst: ["9L1"], - mightycleave: ["9L1"], - nightslash: ["9L1"], - protect: ["9L1"], - psyblade: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockblast: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - sacredsword: ["9L1"], - secretsword: ["9L1"], - smartstrike: ["9L1"], - stealthrock: ["9L1"], - superpower: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - tarshot: ["9L1"], - terablast: ["9L1"], - vcreate: ["9L1"], - wideguard: ["9L1"], - endure: ["9L1"], - }, - }, - gobul: { - learnset: { - acidspray: ["9L1"], - alluringvoice: ["9L1"], - aquaring: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - brine: ["9L1"], - devour: ["9L1"], - calmmind: ["9L1"], - chillingwater: ["9L1"], - clamp: ["9L1"], - coldsnap: ["9L1"], - stuffcheeks: ["9M"], - clearsmog: ["9L1"], - confide: ["9L1"], - confuseray: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - wretchedwater: ["9L1"], - darkpulse: ["9L1"], - dazzlinggleam: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - discharge: ["9L1"], - dive: ["9L1"], - finalgambit: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - hex: ["9L1"], - hydropump: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - lifedew: ["9L1"], - lightscreen: ["9L1"], - meanlook: ["9L1"], - mirrorcoat: ["9L1"], - mistyexplosion: ["9L1"], - nastyplot: ["9L1"], - painsplit: ["9L1"], - phantomforce: ["9L1"], - poltergeist: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychicnoise: ["9L1"], - psychup: ["9L1"], - quickguard: ["9L1"], - raindance: ["9L1"], - recover: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - roleplay: ["9L1"], - scaryface: ["9L1"], - shadowball: ["9L1"], - shadowsneak: ["9L1"], - skillswap: ["9L1"], - snarl: ["9L1"], - soak: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - surf: ["9L1"], - tackle: ["9L1"], - tailglow: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thundershock: ["9L1"], - toxicspikes: ["9L1"], - trickroom: ["9L1"], - watershuriken: ["9L1"], - whirlpool: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - gogmazios: { - learnset: { - acupressure: ["9L1"], - anchorshot: ["9L1"], - armorcannon: ["9L1"], - heatbeam: ["9L1"], - armthrust: ["9L1"], - attract: ["9L1"], - bittermalice: ["9L1"], - frenzyslam: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - clearsmog: ["9L1"], - corrosivegas: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - curse: ["9L1"], - darkpulse: ["9L1"], - destinybond: ["9L1"], - dragonator: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - dynamaxcannon: ["9L1"], - earthquake: ["9L1"], - embargo: ["9L1"], - explosion: ["9L1"], - fierywrath: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - flamethrower: ["9L1"], - flashcannon: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - healingwish: ["9L1"], - heatwave: ["9L1"], - heavyslam: ["9L1"], - honeclaws: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - metalsound: ["9L1"], - mindblown: ["9L1"], - mirrorshot: ["9L1"], - mist: ["9L1"], - morningsun: ["9L1"], - nastyplot: ["9L1"], - nightslash: ["9L1"], - outrage: ["9L1"], - painsplit: ["9L1"], - partingshot: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rototiller: ["9L1"], - ruination: ["9L1"], - seismictoss: ["9L1"], - sludgebomb: ["9L1"], - smackdown: ["9L1"], - snarl: ["9L1"], - stealthrock: ["9L1"], - steamroller: ["9L1"], - steelbeam: ["9L1"], - steelroller: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - tackle: ["9L1"], - tarshot: ["9L1"], - temperflare: ["9L1"], - terablast: ["9L1"], - wickedtorque: ["9L1"], - wideguard: ["9L1"], - willowisp: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - gravios: { - learnset: { - amnesia: ["9L1"], - armorcannon: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - dragonpulse: ["9L1"], - expandingforce: ["9L1"], - fireblast: ["9L1"], - futuresight: ["9L1"], - gravity: ["9L1"], - heatbeam: ["9L1"], - hypnosis: ["9L1"], - magmastorm: ["9L1"], - mirrorcoat: ["9L1"], - overheat: ["9L1"], - psychic: ["9L1"], - scorchingsands: ["9L1"], - shelltrap: ["9L1"], - storedpower: ["9L1"], - sunnyday: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - }, - }, - greatgirros: { - learnset: { - agility: ["9L1"], - attract: ["9L1"], - bodyslam: ["9L1"], - chipaway: ["9L1"], - boltbeak: ["9L1"], - bulkup: ["9L1"], - chargebeam: ["9L1"], - takedown: ["9L1"], - confide: ["9L1"], - discharge: ["9L1"], - endeavor: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - nuzzle: ["9L1"], - painsplit: ["9L1"], - paraboliccharge: ["9L1"], - playrough: ["9L1"], - populationbomb: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - rest: ["9L1"], - screech: ["9L1"], - snarl: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderfang: ["9L1"], - thunderwave: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - greatjaggi: { - learnset: { - acrobatics: ["9L1"], - chipaway: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - confide: ["9L1"], - crushclaw: ["9L1"], - doubleedge: ["9L1"], - endeavor: ["9L1"], - takedown: ["9L1"], - facade: ["9L1"], - grassknot: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - ironhead: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - lunge: ["9L1"], - nastyplot: ["9L1"], - noretreat: ["9L1"], - playrough: ["9L1"], - populationbomb: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - psychup: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - screech: ["9L1"], - snarl: ["9L1"], - snatch: ["9L1"], - skillswap: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - tripleaxel: ["9L1"], - endure: ["9L1"], - }, - }, - greatjagras: { - learnset: { - assurance: ["9L1"], - attract: ["9L1"], - beatup: ["9L1"], - chipaway: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - takedown: ["9L1"], - devour: ["9L1"], - bulkup: ["9L1"], - confide: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - darkpulse: ["9L1"], - doubleedge: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - feintattack: ["9L1"], - fling: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - honeclaws: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - memento: ["9L1"], - nastyplot: ["9L1"], - partingshot: ["9L1"], - payback: ["9L1"], - playrough: ["9L1"], - populationbomb: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - screech: ["9L1"], - snarl: ["9L1"], - stoneedge: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - endure: ["9L1"], - }, - }, - gureadomosu: { - learnset: { - aquatail: ["9L1"], - attract: ["9L1"], - wavecrash: ["9L1"], - calmmind: ["9L1"], - chloroblast: ["9L1"], - cottonguard: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - energyball: ["9L1"], - flowertrick: ["9L1"], - gigadrain: ["9L1"], - grasswhistle: ["9L1"], - growl: ["9L1"], - growth: ["9L1"], - haze: ["9L1"], - healbell: ["9L1"], - hydropump: ["9L1"], - ingrain: ["9L1"], - junglehealing: ["9L1"], - leafstorm: ["9L1"], - leechseed: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - muddywater: ["9L1"], - nastyplot: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - psychicnoise: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - seismictoss: ["9L1"], - snipeshot: ["9L1"], - solarbeam: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - waterfall: ["9L1"], - waterspout: ["9L1"], - weatherball: ["9L1"], - wretchedwater: ["9L1"], - hydrosteam: ["9L1"], - aquastep: ["9L1"], - steameruption: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - gypceros: { - learnset: { - acidarmor: ["9L1"], - acidspray: ["9L1"], - tailslap: ["9L1"], - snatch: ["9L1"], - acrobatics: ["9L1"], - agility: ["9L1"], - chipaway: ["9L1"], - flash: ["9M"], - airslash: ["9L1"], - attract: ["9L1"], - batonpass: ["9L1"], - bodyslam: ["9L1"], - reversal: ["9M"], - bounce: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - clearsmog: ["9L1"], - confide: ["9L1"], - courtchange: ["9L1"], - covet: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - darkestlariat: ["9L1"], - darkpulse: ["9L1"], - destinybond: ["9L1"], - direclaw: ["9L1"], - doubleedge: ["9L1"], - drillpeck: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - falsesurrender: ["9L1"], - flail: ["9L1"], - grassknot: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - mefirst: ["9L1"], - memento: ["9L1"], - mortalspin: ["9L1"], - nastyplot: ["9L1"], - nuzzle: ["9L1"], - painsplit: ["9L1"], - poisontail: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psychup: ["9L1"], - ragepowder: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - slackoff: ["9L1"], - snarl: ["9L1"], - spiritbreak: ["9L1"], - stompingtantrum: ["9L1"], - submission: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - thunderwave: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - triplekick: ["9L1"], - endure: ["9L1"], - }, - }, - harudomerugu: { - learnset: { - sharpen: ["9L1"], - acupressure: ["9L1"], - anchorshot: ["9L1"], - attract: ["9L1"], - cut: ["9L1"], - autotomize: ["9L1"], - behemothbash: ["9L1"], - behemothblade: ["9L1"], - bulkup: ["9L1"], - combattorque: ["9L1"], - dracometeor: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - flashcannon: ["9L1"], - gigatonhammer: ["9L1"], - growl: ["9L1"], - hammerarm: ["9L1"], - heavyslam: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - kingsshield: ["9L1"], - leer: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - mirrorshot: ["9L1"], - nastyplot: ["9L1"], - outrage: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - psyblade: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - scaleshot: ["9L1"], - psychicfangs: ["9L1"], - smartstrike: ["9L1"], - snarl: ["9L1"], - steelbeam: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tachyoncutter: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - endure: ["9L1"], - steelwing: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - hypnocatrice: { - learnset: { - agility: ["9L1"], - astonish: ["9L1"], - attract: ["9L1"], - psychocrush: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - courtchange: ["9L1"], - covet: ["9L1"], - cloakingglow: ["9L1"], - curse: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - dreameater: ["9L1"], - drillpeck: ["9L1"], - esperwing: ["9L1"], - expandingforce: ["9L1"], - futuresight: ["9L1"], - growl: ["9L1"], - heartswap: ["9L1"], - hex: ["9L1"], - hypnosis: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - lovelykiss: ["9L1"], - luminacrash: ["9L1"], - lunarblessing: ["9L1"], - lunardance: ["9L1"], - mefirst: ["9L1"], - memento: ["9L1"], - mindreader: ["9L1"], - mirrorcoat: ["9L1"], - mysticalfire: ["9L1"], - nastyplot: ["9L1"], - painsplit: ["9L1"], - playrough: ["9L1"], - powershift: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychicnoise: ["9L1"], - psychup: ["9L1"], - psyshock: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roleplay: ["9L1"], - shadowball: ["9L1"], - shadowsneak: ["9L1"], - skillswap: ["9L1"], - slackoff: ["9L1"], - snarl: ["9L1"], - snatch: ["9L1"], - spite: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thunderwave: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - twinbeam: ["9L1"], - uturn: ["9L1"], - wish: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - iodrome: { - learnset: { - acid: ["9L1"], - acidarmor: ["9L1"], - acidspray: ["9L1"], - stomp: ["9L1"], - afteryou: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - belch: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - clearsmog: ["9L1"], - confide: ["9L1"], - corrosivegas: ["9L1"], - crosschop: ["9L1"], - crosspoison: ["9L1"], - crunch: ["9L1"], - doublekick: ["9L1"], - drillpeck: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - fling: ["9L1"], - followme: ["9L1"], - gastroacid: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - helpinghand: ["9L1"], - hex: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - mortalspin: ["9L1"], - nuzzle: ["9L1"], - playrough: ["9L1"], - poisonfang: ["9L1"], - poisongas: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - populationbomb: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - shadowball: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - tickle: ["9L1"], - toxic: ["9L1"], - trick: ["9L1"], - venomdrench: ["9L1"], - venoshock: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - jhenmohran: { - learnset: { - acupressure: ["9L1"], - attract: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - diamondstorm: ["9L1"], - dragonrush: ["9L1"], - drillrun: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - fissure: ["9L1"], - growl: ["9L1"], - headcharge: ["9L1"], - headlongrush: ["9L1"], - heavyslam: ["9L1"], - honeclaws: ["9L1"], - hyperdrill: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - knockoff: ["9L1"], - landswrath: ["9L1"], - leer: ["9L1"], - mefirst: ["9L1"], - meteorassault: ["9L1"], - obstruct: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - rototiller: ["9L1"], - saltcure: ["9L1"], - shoreup: ["9L1"], - smartstrike: ["9L1"], - snarl: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thousandwaves: ["9L1"], - uturn: ["9L1"], - wideguard: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - kechawacha: { - learnset: { - waterpulse: ["9L1"], - aurasphere: ["9L1"], - healpulse: ["9L1"], - phlegmshot: ["9L1"], - darkpulse: ["9L1"], - partingshot: ["9L1"], - uturn: ["9L1"], - chipaway: ["9L1"], - aquatail: ["9L1"], - attract: ["9L1"], - snatch: ["9L1"], - wretchedwater: ["9L1"], - batonpass: ["9L1"], - bellydrum: ["9L1"], - bodyslam: ["9L1"], - confide: ["9L1"], - courtchange: ["9L1"], - covet: ["9L1"], - dive: ["9L1"], - encore: ["9L1"], - fakeout: ["9L1"], - flail: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - helpinghand: ["9L1"], - icebeam: ["9L1"], - leer: ["9L1"], - liquidation: ["9L1"], - mist: ["9L1"], - painsplit: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - recycle: ["9L1"], - rest: ["9L1"], - smackdown: ["9L1"], - snarl: ["9L1"], - soak: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - tearfullook: ["9L1"], - terablast: ["9L1"], - tidyup: ["9L1"], - trick: ["9L1"], - tripleaxel: ["9L1"], - brine: ["9L1"], - hydropump: ["9L1"], - chillingwater: ["9L1"], - snipeshot: ["9L1"], - watershuriken: ["9L1"], - aquaring: ["9L1"], - frostbreath: ["9L1"], - hurricane: ["9L1"], - swift: ["9L1"], - airslash: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - kingshakalaka: { - learnset: { - acupressure: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - sedativespine: ["9L1"], - batonpass: ["9L1"], - bellydrum: ["9L1"], - brickbreak: ["9L1"], - bulletseed: ["9L1"], - burningjealousy: ["9L1"], - chloroblast: ["9L1"], - clearsmog: ["9L1"], - confide: ["9L1"], - cottonspore: ["9L1"], - covet: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - fierydance: ["9L1"], - fierywrath: ["9L1"], - finalgambit: ["9L1"], - fireblast: ["9L1"], - firelash: ["9L1"], - flail: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flowertrick: ["9L1"], - followme: ["9L1"], - gigadrain: ["9L1"], - grassyglide: ["9L1"], - growl: ["9L1"], - growth: ["9L1"], - haze: ["9L1"], - healingwish: ["9L1"], - honeclaws: ["9L1"], - infernalparade: ["9L1"], - junglehealing: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - leechseed: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - luckychant: ["9L1"], - matchagotcha: ["9L1"], - memento: ["9L1"], - morningsun: ["9L1"], - mysticalfire: ["9L1"], - partingshot: ["9L1"], - playrough: ["9L1"], - pollenpuff: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - pyroball: ["9L1"], - quickguard: ["9L1"], - recycle: ["9L1"], - rest: ["9L1"], - rollingkick: ["9L1"], - scaryface: ["9L1"], - seedbomb: ["9L1"], - skittersmack: ["9L1"], - snaptrap: ["9L1"], - solarbeam: ["9L1"], - solarblade: ["9L1"], - spiritbreak: ["9L1"], - stompingtantrum: ["9L1"], - strengthsap: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - temperflare: ["9L1"], - terablast: ["9L1"], - tidyup: ["9L1"], - trick: ["9L1"], - triplearrows: ["9L1"], - uturn: ["9L1"], - victorydance: ["9L1"], - ivycudgel: ["9L1"], - dragonhammer: ["9L1"], - icehammer: ["9L1"], - woodhammer: ["9L1"], - endure: ["9L1"], - }, - }, - kirin: { - learnset: { - agility: ["9L1"], - astralbarrage: ["9L1"], - attract: ["9L1"], - chargebeam: ["9L1"], - discharge: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - electricterrain: ["9L1"], - electrodrift: ["9L1"], - extremespeed: ["9L1"], - flamecharge: ["9L1"], - focusblast: ["9L1"], - growl: ["9L1"], - highhorsepower: ["9L1"], - highjumpkick: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - megahorn: ["9L1"], - mistball: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - secretsword: ["9L1"], - shadowball: ["9L1"], - snarl: ["9L1"], - substitute: ["9L1"], - supercellslam: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderbolt: ["9L1"], - thunderclap: ["9L1"], - thunderwave: ["9L1"], - voltswitch: ["9L1"], - volttackle: ["9L1"], - zapcannon: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - kulvetaroth: { - learnset: { - fireblast: ["9L1"], - flamethrower: ["9L1"], - searingshot: ["9L1"], - magmastorm: ["9L1"], - willowisp: ["9L1"], - sunnyday: ["9L1"], - attract: ["9L1"], - autotomize: ["9L1"], - breakingswipe: ["9L1"], - clangingscales: ["9L1"], - cosmicpower: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - diamondstorm: ["9L1"], - doomdesire: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - flashcannon: ["9L1"], - growl: ["9L1"], - healbell: ["9L1"], - imprison: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - kingsshield: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - lowsweep: ["9L1"], - makeitrain: ["9L1"], - metalsound: ["9L1"], - mysticalfire: ["9L1"], - nightslash: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - safeguard: ["9L1"], - scorchingsands: ["9L1"], - seismictoss: ["9L1"], - steelbeam: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - lagiacrus: { - learnset: { - agility: ["9L1"], - darkpulse: ["9L1"], - crunch: ["9L1"], - nethercurrent: ["9L1"], - chillingwater: ["9L1"], - boltbreath: ["9L1"], - cyclonerend: ["9L1"], - discharge: ["9L1"], - electroshot: ["9L1"], - hydropump: ["9L1"], - nastyplot: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - aquaring: ["9L1"], - raindance: ["9L1"], - embargo: ["9L1"], - roar: ["9L1"], - snipeshot: ["9L1"], - substitute: ["9L1"], - glare: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - thundercage: ["9L1"], - thunderwave: ["9L1"], - voltswitch: ["9L1"], - wretchedwater: ["9L1"], - attract: ["9L1"], - chargebeam: ["9L1"], - faketears: ["9L1"], - growl: ["9L1"], - leer: ["9L1"], - risingvoltage: ["9L1"], - meanlook: ["9L1"], - swagger: ["9L1"], - whirlpool: ["9L1"], - supercellslam: ["9L1"], - soak: ["9L1"], - charge: ["9L1"], - dragonpulse: ["9L1"], - waterpulse: ["9L1"], - electroball: ["9L1"], - dive: ["9L1"], - tripledive: ["9L1"], - jawlock: ["9L1"], - aquajet: ["9L1"], - paraboliccharge: ["9L1"], - icywind: ["9L1"], - icebeam: ["9L1"], - haze: ["9L1"], - snarl: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - laoshanlung: { - learnset: { - attract: ["9L1"], - behemothbash: ["9L1"], - dracophage: ["9L1"], - bellydrum: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - devour: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - calmmind: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - doubleedge: ["9L1"], - dracometeor: ["9L1"], - dragonenergy: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - drainpunch: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - finalgambit: ["9L1"], - firefang: ["9L1"], - flamethrower: ["9L1"], - followme: ["9L1"], - gigaimpact: ["9L1"], - growl: ["9L1"], - hammerarm: ["9L1"], - headlongrush: ["9L1"], - headsmash: ["9L1"], - heavyslam: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - meteorassault: ["9L1"], - nobleroar: ["9L1"], - noretreat: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - reflect: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - ruination: ["9L1"], - scaleshot: ["9L1"], - seismictoss: ["9L1"], - slackoff: ["9L1"], - stealthrock: ["9L1"], - stompingtantrum: ["9L1"], - stoneaxe: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderouskick: ["9L1"], - trailblaze: ["9L1"], - weatherball: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - lavasioth: { - learnset: { - agility: ["9L1"], - attract: ["9L1"], - blazekick: ["9L1"], - tailslap: ["9L1"], - lavaplume: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - burningjealousy: ["9L1"], - confide: ["9L1"], - eruption: ["9L1"], - facade: ["9L1"], - magmasurge: ["9L1"], - fireblast: ["9L1"], - firelash: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - blazeball: ["9L1"], - growl: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - morningsun: ["9L1"], - overheat: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - uturn: ["9L1"], - willowisp: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - legiana: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - airslash: ["9L1"], - attract: ["9L1"], - aurasphere: ["9L1"], - bleakwindstorm: ["9L1"], - blizzard: ["9L1"], - arcticshriek: ["9L1"], - bravebird: ["9L1"], - calmmind: ["9L1"], - chillyreception: ["9L1"], - coldsnap: ["9L1"], - clearsmog: ["9L1"], - drillpeck: ["9L1"], - echoedvoice: ["9L1"], - dualwingbeat: ["9L1"], - esperwing: ["9L1"], - extrasensory: ["9L1"], - facade: ["9L1"], - freezedry: ["9L1"], - glaciate: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - helpinghand: ["9L1"], - hypervoice: ["9L1"], - hurricane: ["9L1"], - icebeam: ["9L1"], - icywind: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - mysticalpower: ["9L1"], - painsplit: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - screech: ["9L1"], - shadowball: ["9L1"], - storedpower: ["9L1"], - substitute: ["9L1"], - swift: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - uturn: ["9L1"], - vacuumwave: ["9L1"], - endure: ["9L1"], - }, - }, - malfestio: { - learnset: { - agility: ["9L1"], - airslash: ["9L1"], - allyswitch: ["9L1"], - mentalload: ["9L1"], - attract: ["9L1"], - snatch: ["9L1"], - psychocrush: ["9L1"], - cloakingglow: ["9L1"], - bleakwindstorm: ["9L1"], - bravebird: ["9L1"], - calmmind: ["9L1"], - confuseray: ["9L1"], - cosmicpower: ["9L1"], - darkpulse: ["9L1"], - darkvoid: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - dreameater: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - esperwing: ["9L1"], - expandingforce: ["9L1"], - fling: ["9L1"], - fly: ["9L1"], - freezingglare: ["9L1"], - futuresight: ["9L1"], - gravity: ["9L1"], - growl: ["9L1"], - guardsplit: ["9L1"], - guardswap: ["9L1"], - haze: ["9L1"], - healblock: ["9L1"], - healpulse: ["9L1"], - heartswap: ["9L1"], - heatwave: ["9L1"], - helpinghand: ["9L1"], - hex: ["9L1"], - hurricane: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - lockon: ["9L1"], - meanlook: ["9L1"], - memento: ["9L1"], - mindreader: ["9L1"], - miracleeye: ["9L1"], - mirrorcoat: ["9L1"], - mirrorshot: ["9L1"], - mysticalpower: ["9L1"], - nastyplot: ["9L1"], - nightshade: ["9L1"], - nightslash: ["9L1"], - ominouswind: ["9L1"], - partingshot: ["9L1"], - powersplit: ["9L1"], - powerswap: ["9L1"], - powertrick: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychicnoise: ["9L1"], - psychup: ["9L1"], - psyshock: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roleplay: ["9L1"], - roost: ["9L1"], - shadowball: ["9L1"], - shadowsneak: ["9L1"], - skillswap: ["9L1"], - snarl: ["9L1"], - speedswap: ["9L1"], - spiritbreak: ["9L1"], - storedpower: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - whirlwind: ["9L1"], - willowisp: ["9L1"], - wish: ["9L1"], - teleport: ["9L1"], - wonderroom: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - monoblos: { - learnset: { - acupressure: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bulldoze: ["9L1"], - closecombat: ["9L1"], - doubleedge: ["9L1"], - dragonrush: ["9L1"], - drillrun: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - growl: ["9L1"], - headcharge: ["9L1"], - headlongrush: ["9L1"], - headsmash: ["9L1"], - highhorsepower: ["9L1"], - ironhead: ["9L1"], - leer: ["9L1"], - lockon: ["9L1"], - megahorn: ["9L1"], - mightycleave: ["9L1"], - nightslash: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - psyshieldbash: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - skullbash: ["9L1"], - spiritbreak: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - najarala: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - alluringvoice: ["9L1"], - tailslap: ["9L1"], - aquaring: ["9L1"], - attract: ["9L1"], - boomburst: ["9L1"], - calmmind: ["9L1"], - clangingscales: ["9L1"], - psychocrush: ["9L1"], - clangoroussoul: ["9L1"], - coil: ["9L1"], - craftyshield: ["9L1"], - curse: ["9L1"], - dazzlinggleam: ["9L1"], - dragonclaw: ["9L1"], - dragonpulse: ["9L1"], - drainingkiss: ["9L1"], - drillpeck: ["9L1"], - encore: ["9L1"], - ficklebeam: ["9L1"], - firelash: ["9L1"], - floralhealing: ["9L1"], - focusblast: ["9L1"], - glare: ["9L1"], - growl: ["9L1"], - hypervoice: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - luckychant: ["9L1"], - lunardance: ["9L1"], - magicaltorque: ["9L1"], - magiccoat: ["9L1"], - mysticalfire: ["9L1"], - outrage: ["9L1"], - partingshot: ["9L1"], - perishsong: ["9L1"], - powergem: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychicnoise: ["9L1"], - psychup: ["9L1"], - psyshock: ["9L1"], - quiverdance: ["9L1"], - rapidspin: ["9L1"], - reflect: ["9L1"], - relicsong: ["9L1"], - rest: ["9L1"], - scaleshot: ["9L1"], - seismictoss: ["9L1"], - shedtail: ["9L1"], - snarl: ["9L1"], - spinout: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - torchsong: ["9L1"], - tripleaxel: ["9L1"], - wish: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - nakarkos: { - learnset: { - acidarmor: ["9L1"], - acidspray: ["9L1"], - acupressure: ["9L1"], - dracophage: ["9L1"], - attract: ["9L1"], - aurasphere: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - boneclub: ["9L1"], - bonemerang: ["9L1"], - bonerush: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - calmmind: ["9L1"], - clearsmog: ["9L1"], - counter: ["9L1"], - crosschop: ["9L1"], - curse: ["9L1"], - darkestlariat: ["9L1"], - darkpulse: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - dracometeor: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - drillrun: ["9L1"], - dynamaxcannon: ["9L1"], - earthpower: ["9L1"], - eeriespell: ["9L1"], - eternabeam: ["9L1"], - fireblast: ["9L1"], - firelash: ["9L1"], - flamethrower: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - hammerarm: ["9L1"], - haze: ["9L1"], - heavyslam: ["9L1"], - hex: ["9L1"], - irondefense: ["9L1"], - knockoff: ["9L1"], - lastrespects: ["9L1"], - leechlife: ["9L1"], - leer: ["9L1"], - lifedew: ["9L1"], - lightscreen: ["9L1"], - lunge: ["9L1"], - matblock: ["9L1"], - meanlook: ["9L1"], - metalsound: ["9L1"], - meteorbeam: ["9L1"], - meteormash: ["9L1"], - moongeistbeam: ["9L1"], - nightslash: ["9L1"], - obstruct: ["9L1"], - octolock: ["9L1"], - painsplit: ["9L1"], - poltergeist: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - reflect: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - risingvoltage: ["9L1"], - rockslide: ["9L1"], - roleplay: ["9L1"], - scaleshot: ["9L1"], - scaryface: ["9L1"], - shadowball: ["9L1"], - shadowbone: ["9L1"], - shadowforce: ["9L1"], - skillswap: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - smackdown: ["9L1"], - snarl: ["9L1"], - snatch: ["9L1"], - spectralthief: ["9L1"], - spiritshackle: ["9L1"], - strugglebug: ["9L1"], - substitute: ["9L1"], - superfang: ["9L1"], - surf: ["9L1"], - switcheroo: ["9L1"], - swordsdance: ["9L1"], - boltbreath: ["9L1"], - tackle: ["9L1"], - teleport: ["9L1"], - terablast: ["9L1"], - thunderbolt: ["9L1"], - thunderwave: ["9L1"], - trick: ["9L1"], - triplearrows: ["9L1"], - slimepunch: ["9L1"], - whirlpool: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - namielle: { - learnset: { - acid: ["9L1"], - acidarmor: ["9L1"], - aquaring: ["9L1"], - aquatail: ["9L1"], - wretchedwater: ["9L1"], - bewitchedbubble: ["9L1"], - attract: ["9L1"], - aurawheel: ["9L1"], - bodyslam: ["9L1"], - calmmind: ["9L1"], - chargebeam: ["9L1"], - chillingwater: ["9L1"], - confuseray: ["9L1"], - cosmicpower: ["9L1"], - discharge: ["9L1"], - doubleshock: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - drainingkiss: ["9L1"], - electroshot: ["9L1"], - expandingforce: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - hex: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - icywind: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - liquidation: ["9L1"], - mirrorcoat: ["9L1"], - mistyexplosion: ["9L1"], - moonblast: ["9L1"], - muddywater: ["9L1"], - outrage: ["9L1"], - overdrive: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - risingvoltage: ["9L1"], - scald: ["9L1"], - snipeshot: ["9L1"], - soak: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - thundercage: ["9L1"], - thunderwave: ["9L1"], - voltswitch: ["9L1"], - raindance: ["9L1"], - wavecrash: ["9L1"], - wildcharge: ["9L1"], - wish: ["9L1"], - zapcannon: ["9L1"], - zingzap: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - nergigante: { - learnset: { - acupressure: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - axekick: ["9L1"], - roughhouse: ["9L1"], - spikecannon: ["9L1"], - megakick: ["9M"], - barbbarrage: ["9L1"], - bellydrum: ["9L1"], - bodyslam: ["9L1"], - submission: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - circlethrow: ["9L1"], - closecombat: ["9L1"], - counter: ["9L1"], - crushclaw: ["9L1"], - curse: ["9L1"], - darkestlariat: ["9L1"], - detect: ["9L1"], - doubleedge: ["9L1"], - dragondance: ["9L1"], - dragonhammer: ["9L1"], - drainpunch: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - finalgambit: ["9L1"], - flyingpress: ["9L1"], - gigaimpact: ["9L1"], - growl: ["9L1"], - heavyslam: ["9L1"], - highhorsepower: ["9L1"], - honeclaws: ["9L1"], - howl: ["9L1"], - ironhead: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - meanlook: ["9L1"], - outrage: ["9L1"], - pursuit: ["9L1"], - protect: ["9L1"], - quickguard: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - scaleshot: ["9L1"], - scaryface: ["9L1"], - seismictoss: ["9L1"], - shadowforce: ["9L1"], - shadowpunch: ["9L1"], - snarl: ["9L1"], - spikes: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - throatchop: ["9L1"], - trick: ["9L1"], - triplekick: ["9L1"], - wickedblow: ["9L1"], - glaiverush: ["9L1"], - endure: ["9L1"], - }, - }, - nefgarmat: { - learnset: { - agility: ["9L1"], - amnesia: ["9L1"], - ancientpower: ["9L1"], - bulldoze: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - craftyshield: ["9L1"], - dazzlinggleam: ["9L1"], - defog: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endeavor: ["9L1"], - endure: ["9L1"], - extrasensory: ["9L1"], - facade: ["9L1"], - fairywind: ["9L1"], - flashcannon: ["9L1"], - futuresight: ["9L1"], - gravity: ["9L1"], - healblock: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - imprison: ["9L1"], - landswrath: ["9L1"], - lightscreen: ["9L1"], - metalsound: ["9L1"], - meteorbeam: ["9L1"], - mirrorshot: ["9L1"], - mistyterrain: ["9L1"], - moonblast: ["9L1"], - mudbomb: ["9L1"], - mudshot: ["9L1"], - nastyplot: ["9L1"], - playrough: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - quicksandbreath: ["9L1"], - relicsong: ["9L1"], - rest: ["9L1"], - rockpolish: ["9L1"], - sandtomb: ["9L1"], - sandstorm: ["9L1"], - scorchingsands: ["9L1"], - smellingsalts: ["9L1"], - snarl: ["9L1"], - stealthrock: ["9L1"], - storedpower: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - teleport: ["9L1"], - terrainpulse: ["9L1"], - weatherball: ["9L1"], - wideguard: ["9L1"], - wish: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - nerscylla: { - learnset: { - twineedle: ["9L1"], - acupressure: ["9L1"], - attackorder: ["9L1"], - spiderweb: ["9L1"], - attract: ["9L1"], - sedativespine: ["9L1"], - banefulbunker: ["9L1"], - bugbite: ["9L1"], - bugbuzz: ["9L1"], - clearsmog: ["9L1"], - crosspoison: ["9L1"], - defendorder: ["9L1"], - destinybond: ["9L1"], - electroweb: ["9L1"], - furycutter: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - haze: ["9L1"], - healorder: ["9L1"], - infestation: ["9L1"], - leer: ["9L1"], - malignantchain: ["9L1"], - memento: ["9L1"], - mortalspin: ["9L1"], - nastyplot: ["9L1"], - partingshot: ["9L1"], - poisonjab: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - quiverdance: ["9L1"], - rest: ["9L1"], - safeguard: ["9L1"], - silktrap: ["9L1"], - skittersmack: ["9L1"], - sludgebomb: ["9L1"], - smog: ["9L1"], - spikes: ["9L1"], - stickyweb: ["9L1"], - stringshot: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - toxicspikes: ["9L1"], - toxicthread: ["9L1"], - trick: ["9L1"], - tripleaxel: ["9L1"], - uturn: ["9L1"], - venoshock: ["9L1"], - xscissor: ["9L1"], - barbbarrage: ["9L1"], - harshsting: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - nibelsnarf: { - learnset: { - aquaring: ["9L1"], - attract: ["9L1"], - bleakwindstorm: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bulkup: ["9L1"], - clearsmog: ["9L1"], - crunch: ["9L1"], - dig: ["9L1"], - doubleedge: ["9L1"], - drillrun: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - headsmash: ["9L1"], - hydropump: ["9L1"], - irondefense: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - painsplit: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - quicksandbreath: ["9L1"], - rapidspin: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - saltcure: ["9L1"], - shoreup: ["9L1"], - sludge: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - surf: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - watersport: ["9L1"], - wretchedwater: ["9L1"], - }, - }, - odogaron: { - learnset: { - acrobatics: ["9L1"], - acupressure: ["9L1"], - agility: ["9L1"], - cruelclaw: ["9L1"], - attract: ["9L1"], - bite: ["9L1"], - brutalswing: ["9L1"], - closecombat: ["9L1"], - crunch: ["9L1"], - cut: ["9L1"], - crushclaw: ["9L1"], - darkpulse: ["9L1"], - destinybond: ["9L1"], - devour: ["9L1"], - dragondance: ["9L1"], - embargo: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - falsesurrender: ["9L1"], - fling: ["9L1"], - forcepalm: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - honeclaws: ["9L1"], - howl: ["9L1"], - hyperdrill: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - lunge: ["9L1"], - meanlook: ["9L1"], - metalclaw: ["9L1"], - nastyplot: ["9L1"], - nightslash: ["9L1"], - painsplit: ["9L1"], - poisonjab: ["9L1"], - pounce: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - pursuit: ["9L1"], - quash: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - scaryface: ["9L1"], - shadowsneak: ["9L1"], - snarl: ["9L1"], - spiritbreak: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - throatchop: ["9L1"], - endure: ["9L1"], - }, - }, - paolumu: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - airslash: ["9L1"], - attract: ["9L1"], - babydolleyes: ["9L1"], - batonpass: ["9L1"], - chipaway: ["9L1"], - bellydrum: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - charm: ["9L1"], - circlethrow: ["9L1"], - confide: ["9L1"], - cosmicpower: ["9L1"], - covet: ["9L1"], - crunch: ["9L1"], - defog: ["9L1"], - doubleedge: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - flail: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - healbell: ["9L1"], - helpinghand: ["9L1"], - honeclaws: ["9L1"], - hurricane: ["9L1"], - lastresort: ["9L1"], - leer: ["9L1"], - milkdrink: ["9L1"], - painsplit: ["9L1"], - partingshot: ["9L1"], - playrough: ["9L1"], - pollenpuff: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - safeguard: ["9L1"], - screech: ["9L1"], - seismictoss: ["9L1"], - snarl: ["9L1"], - spiritbreak: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - thunderwave: ["9L1"], - tidyup: ["9L1"], - trick: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - plesioth: { - learnset: { - agility: ["9L1"], - aquaring: ["9L1"], - attract: ["9L1"], - hyperspacefury: ["9L1"], - sedativespine: ["9L1"], - tailslap: ["9L1"], - avalanche: ["9L1"], - coldsnap: ["9L1"], - blizzard: ["9L1"], - aquatail: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - confide: ["9L1"], - fishiousrend: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - icebeam: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - painsplit: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - soak: ["9L1"], - wretchedwater: ["9L1"], - substitute: ["9L1"], - sleeppowder: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderwave: ["9L1"], - trailblaze: ["9L1"], - flipturn: ["9L1"], - watersport: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - qurupeco: { - learnset: { - acrobatics: ["9L1"], - acupressure: ["9L1"], - agility: ["9L1"], - supremacysquall: ["9L1"], - arcticshriek: ["9L1"], - airslash: ["9L1"], - healpulse: ["9L1"], - oblivionwing: ["9L1"], - attract: ["9L1"], - batonpass: ["9L1"], - bulkup: ["9L1"], - courtchange: ["9L1"], - defog: ["9L1"], - disable: ["9L1"], - dragondance: ["9L1"], - dualwingbeat: ["9L1"], - encore: ["9L1"], - entrainment: ["9L1"], - fierydance: ["9L1"], - finalgambit: ["9L1"], - fling: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - healbell: ["9L1"], - heatwave: ["9L1"], - hypervoice: ["9L1"], - leer: ["9L1"], - luckychant: ["9L1"], - mefirst: ["9L1"], - memento: ["9L1"], - painsplit: ["9L1"], - partingshot: ["9L1"], - perishsong: ["9L1"], - protect: ["9L1"], - relicsong: ["9L1"], - rest: ["9L1"], - revelationdance: ["9L1"], - roost: ["9L1"], - sing: ["9L1"], - snarl: ["9L1"], - sparklingaria: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - teeterdance: ["9L1"], - terablast: ["9L1"], - torchsong: ["9L1"], - victorydance: ["9L1"], - whirlwind: ["9L1"], - willowisp: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - radobaan: { - learnset: { - acidarmor: ["9L1"], - acupressure: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - bodyslam: ["9L1"], - steamroller: ["9L1"], - boneclub: ["9L1"], - spinout: ["9L1"], - bonemerang: ["9L1"], - bonerush: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - disable: ["9L1"], - doubleedge: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - gyroball: ["9L1"], - headlongrush: ["9L1"], - heavyslam: ["9L1"], - hex: ["9L1"], - highhorsepower: ["9L1"], - honeclaws: ["9L1"], - icespinner: ["9L1"], - irondefense: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - mightycleave: ["9L1"], - obstruct: ["9L1"], - painsplit: ["9L1"], - phantomforce: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - rollingkick: ["9L1"], - rototiller: ["9L1"], - scaryface: ["9L1"], - shadowball: ["9L1"], - shadowbone: ["9L1"], - shadowsneak: ["9L1"], - spite: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - triplekick: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - uturn: ["9L1"], - endure: ["9L1"], - }, - }, - safijiiva: { - learnset: { - biocharge: ["9L1"], - dracophage: ["9L1"], - mentalload: ["9L1"], - dragonrush: ["9L1"], - earthquake: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - hyperspacehole: ["9L1"], - lusterpurge: ["9L1"], - magicroom: ["9L1"], - nastyplot: ["9L1"], - naturesmadness: ["9L1"], - outrage: ["9L1"], - prismaticlaser: ["9L1"], - psychoboost: ["9L1"], - psychoshift: ["9L1"], - psystrike: ["9L1"], - spacialrend: ["9L1"], - takeheart: ["9L1"], - wonderroom: ["9L1"], - }, - }, - seltas: { - learnset: { - acrobatics: ["9L1"], - acupressure: ["9L1"], - slimyspit: ["9L1"], - chipaway: ["9L1"], - aerialace: ["9L1"], - steamroller: ["9L1"], - agility: ["9L1"], - aircutter: ["9L1"], - airslash: ["9L1"], - attract: ["9L1"], - batonpass: ["9L1"], - coaching: ["9L1"], - dualwingbeat: ["9L1"], - growl: ["9L1"], - cutwingbarrage: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - mefirst: ["9L1"], - megahorn: ["9L1"], - mirrormove: ["9L1"], - nightslash: ["9L1"], - painsplit: ["9L1"], - partingshot: ["9L1"], - firstimpression: ["9L1"], - protect: ["9L1"], - psyblade: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - seltasqueen: { - learnset: { - acidspray: ["9L1"], - aurasphere: ["9L1"], - aquaring: ["9L1"], - attackorder: ["9L1"], - perfumepulse: ["9L1"], - attract: ["9L1"], - bewitchedbubble: ["9L12"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bugbuzz: ["9L1"], - chillingwater: ["9L1"], - crabhammer: ["9L1"], - darkpulse: ["9L1"], - defendorder: ["9L1"], - energyball: ["9L1"], - expandingforce: ["9L1"], - flashcannon: ["9L1"], - fling: ["9L1"], - flipturn: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - healorder: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - irondefense: ["9L1"], - leechlife: ["9L1"], - leer: ["9L1"], - lockon: ["9L1"], - mistball: ["9L1"], - moonblast: ["9L1"], - nastyplot: ["9L1"], - octazooka: ["9L1"], - pinmissile: ["9L1"], - populationbomb: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - revivalblessing: ["9L1"], - snipeshot: ["9L1"], - shellsidearm: ["9L1"], - signalbeam: ["9L1"], - sludgebomb: ["9L1"], - soak: ["9L1"], - strangesteam: ["9L1"], - stringshot: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - surgingstrikes: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - triattack: ["9L1"], - twinbeam: ["9L1"], - watershuriken: ["9L1"], - waterpulse: ["9L1"], - waterspout: ["9L1"], - weatherball: ["9L1"], - withdraw: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - sharaishvalda: { - learnset: { - ancientpower: ["9L1"], - attract: ["9L1"], - bittermalice: ["9L1"], - vacuumwave: ["9L1"], - mentalload: ["9L1"], - boomburst: ["9L1"], - creepynoise: ["9L1"], - clangoroussoul: ["9L1"], - trickroom: ["9L1"], - echoedvoice: ["9L1"], - psychicnoise: ["9L1"], - snarl: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - arcticshriek: ["9L1"], - bulkup: ["9L1"], - calmmind: ["9L1"], - clangingscales: ["9L1"], - cosmicpower: ["9L1"], - curse: ["9L1"], - diamondstorm: ["9L1"], - disable: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - dualchop: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - focusblast: ["9L1"], - growl: ["9L1"], - heavyslam: ["9L1"], - irondefense: ["9L1"], - knockoff: ["9L1"], - landswrath: ["9L1"], - leer: ["9L1"], - meteorbeam: ["9L1"], - mysticalpower: ["9L1"], - outrage: ["9L1"], - painsplit: ["9L1"], - playrough: ["9L1"], - powergem: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychup: ["9L1"], - recover: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - rollout: ["9L1"], - ruination: ["9L1"], - saltcure: ["9L1"], - sandstorm: ["9L1"], - seismictoss: ["9L1"], - shadowball: ["9L1"], - shoreup: ["9L1"], - skillswap: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - teleport: ["9L1"], - terablast: ["9L1"], - thousandwaves: ["9L1"], - wish: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - shengaoren: { - learnset: { - acidspray: ["9L1"], - aquaring: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - megakick: ["9M"], - frenzyslam: ["9L1"], - beatup: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - clearsmog: ["9L1"], - crabhammer: ["9L1"], - crosschop: ["9L1"], - curse: ["9L1"], - darkestlariat: ["9L1"], - darkpulse: ["9L1"], - doubleedge: ["9L1"], - dragondance: ["9L1"], - dragonhammer: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - followme: ["9L1"], - foulplay: ["9L1"], - gigaimpact: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - gyroball: ["9L1"], - heavyslam: ["9L1"], - honeclaws: ["9L1"], - hydropump: ["9L1"], - icehammer: ["9L1"], - irondefense: ["9L1"], - leer: ["9L1"], - lifedew: ["9L1"], - liquidation: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - matblock: ["9L1"], - memento: ["9L1"], - nightslash: ["9L1"], - octazooka: ["9L1"], - octolock: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - screech: ["9L1"], - shadowbone: ["9L1"], - shellsmash: ["9L1"], - smackdown: ["9L1"], - snarl: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - swagger: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - throatchop: ["9L1"], - triplekick: ["9L1"], - withdraw: ["9L1"], - endure: ["9L1"], - }, - }, - tetsucabra: { - learnset: { - acidspray: ["9L1"], - acupressure: ["9L1"], - phlegmshot: ["9L1"], - attract: ["9L1"], - autotomize: ["9L1"], - behemothbash: ["9L1"], - devour: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - growl: ["9L1"], - gyroball: ["9L1"], - haze: ["9L1"], - headlongrush: ["9L1"], - heavyslam: ["9L1"], - highhorsepower: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - metalsound: ["9L1"], - muddywater: ["9L1"], - obstruct: ["9L1"], - playrough: ["9L1"], - poisonfang: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rototiller: ["9L1"], - snarl: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - stealthrock: ["9L1"], - stuffcheeks: ["9L1"], - hyperfang: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - tarshot: ["9L1"], - terablast: ["9L1"], - waterpulse: ["9L1"], - endure: ["9L1"], - }, - }, - tzitziyaku: { - learnset: { - agility: ["9L1"], - alluringvoice: ["9L1"], - attract: ["9L1"], - flash: ["9M"], - aurasphere: ["9L1"], - calmmind: ["9L1"], - cloakingglow: ["9L1"], - charm: ["9L1"], - psychocrush: ["9L1"], - coaching: ["9L1"], - confide: ["9L1"], - confuseray: ["9L1"], - craftyshield: ["9L1"], - darkpulse: ["9L1"], - dazzlinggleam: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - drainingkiss: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - eeriespell: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - fairylock: ["9L1"], - falsesurrender: ["9L1"], - flail: ["9L1"], - flashcannon: ["9L1"], - floralhealing: ["9L1"], - followme: ["9L1"], - geomancy: ["9L1"], - gravity: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - hypnosis: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - lunarblessing: ["9L1"], - lusterpurge: ["9L1"], - magiccoat: ["9L1"], - mefirst: ["9L1"], - metalsound: ["9L1"], - mirrorcoat: ["9L1"], - mistyexplosion: ["9L1"], - mistyterrain: ["9L1"], - moonblast: ["9L1"], - moonlight: ["9L1"], - nightshade: ["9L1"], - nuzzle: ["9L1"], - partingshot: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychicnoise: ["9L1"], - psychup: ["9L1"], - psyshock: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - safeguard: ["9L1"], - shadowball: ["9L1"], - snarl: ["9L1"], - spiritbreak: ["9L1"], - storedpower: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - sweetkiss: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thunderwave: ["9L1"], - tidyup: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - weatherball: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - ukanlos: { - learnset: { - attract: ["9L1"], - snowballcannon: ["9L1"], - avalanche: ["9L1"], - behemothbash: ["9L1"], - blizzard: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - bulkup: ["9L1"], - clangingscales: ["9L1"], - clangoroussoul: ["9L1"], - coldsnap: ["9L1"], - crunch: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - dragontail: ["9L1"], - earthquake: ["9L1"], - glaiverush: ["9L1"], - growl: ["9L1"], - gyroball: ["9L1"], - haze: ["9L1"], - headlongrush: ["9L1"], - headsmash: ["9L1"], - heavyslam: ["9L1"], - highhorsepower: ["9L1"], - iceball: ["9L1"], - icebeam: ["9L1"], - icehammer: ["9L1"], - iceshard: ["9L1"], - iciclecrash: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - leer: ["9L1"], - metalburst: ["9L1"], - metalsound: ["9L1"], - mountaingale: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - psyshieldbash: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - scaryface: ["9L1"], - seismictoss: ["9L1"], - skullbash: ["9L1"], - smackdown: ["9L1"], - smartstrike: ["9L1"], - steelbeam: ["9L1"], - steelroller: ["9L1"], - superpower: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - wideguard: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - uragaan: { - learnset: { - agility: ["9L1"], - blazingtorque: ["9L1"], - combattorque: ["9L1"], - playrough: ["9L1"], - rollout: ["9L1"], - defensecurl: ["9L1"], - noxioustorque: ["9L1"], - wickedtorque: ["9L1"], - attract: ["9L1"], - steamroller: ["9L1"], - bodyslam: ["9L1"], - bulkup: ["9L1"], - doubleedge: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - growl: ["9L1"], - gyroball: ["9L1"], - headlongrush: ["9L1"], - headsmash: ["9L1"], - highhorsepower: ["9L1"], - icespinner: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - rapidspin: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - rollingkick: ["9L1"], - rototiller: ["9L1"], - spinout: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - stealthrock: ["9LA"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - triplekick: ["9L1"], - uturn: ["9L1"], - endure: ["9L1"], - }, - }, - vaalhazak: { - learnset: { - acidarmor: ["9L1"], - acidspray: ["9L1"], - attract: ["9L1"], - banefulbunker: ["9L1"], - barbbarrage: ["9L1"], - bodyslam: ["9L1"], - recover: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - burningjealousy: ["9L1"], - calmmind: ["9L1"], - clearsmog: ["9L1"], - corrosivegas: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - darkpulse: ["9L1"], - destinybond: ["9L1"], - direclaw: ["9L1"], - disable: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - dualchop: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - haze: ["9L1"], - hex: ["9L1"], - jawlock: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - meanlook: ["9L1"], - memento: ["9L1"], - naturesmadness: ["9L1"], - nastyplot: ["9L1"], - outrage: ["9L1"], - painsplit: ["9L1"], - payback: ["9L1"], - phantomforce: ["9L1"], - poisonfang: ["9L1"], - poisongas: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - quash: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - shadowball: ["9L1"], - shadowsneak: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - snarl: ["9L1"], - spiritshackle: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - venomdrench: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - velocidrome: { - learnset: { - acrobatics: ["9L1"], - aerialace: ["9L1"], - afteryou: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - batonpass: ["9L1"], - bodyslam: ["9L1"], - bravebird: ["9L1"], - brickbreak: ["9L1"], - crosschop: ["9L1"], - crunch: ["9L1"], - defog: ["9L1"], - doublekick: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - fling: ["9L1"], - flyingpress: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - hurricane: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - lunge: ["9L1"], - mirrormove: ["9L1"], - playrough: ["9L1"], - populationbomb: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - round: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - tickle: ["9L1"], - trick: ["9L1"], - zenheadbutt: ["9L1"], - endure: ["9L1"], - }, - }, - vespoidqueen: { - learnset: { - agility: ["9L1"], - twineedle: ["9L1"], - airslash: ["9L1"], - attackorder: ["9L1"], - harshsting: ["9L1"], - attract: ["9L1"], - creepynoise: ["9L1"], - batonpass: ["9L1"], - bugbite: ["9L1"], - bugbuzz: ["9L1"], - clearsmog: ["9L1"], - covet: ["9L1"], - defendorder: ["9L1"], - defog: ["9L1"], - fellstinger: ["9L1"], - growl: ["9L1"], - healorder: ["9L1"], - helpinghand: ["9L1"], - hurricane: ["9L1"], - leechlife: ["9L1"], - leer: ["9L1"], - memento: ["9L1"], - painsplit: ["9L1"], - pounce: ["9L1"], - lunge: ["9L1"], - protect: ["9L1"], - quiverdance: ["9L1"], - ragepowder: ["9L1"], - rest: ["9L1"], - stringshot: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderwave: ["9L1"], - toxic: ["9L1"], - uturn: ["9L1"], - wish: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - }, - }, - xenojiiva: { - learnset: { - agility: ["9L1"], - ancientpower: ["9L1"], - calmmind: ["9L1"], - mentalload: ["9L1"], - cloakingglow: ["9L1"], - cosmicpower: ["9L1"], - darkpulse: ["9L1"], - dazzlinggleam: ["9L1"], - discharge: ["9L1"], - dracometeor: ["9L1"], - dragonclaw: ["9L1"], - earthpower: ["9L1"], - electricterrain: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - focusblast: ["9L1"], - futuresight: ["9L1"], - gravity: ["9L1"], - growl: ["9L1"], - healingwish: ["9L1"], - heartswap: ["9L1"], - laserfocus: ["9L1"], - lightscreen: ["9L1"], - photongeyser: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - psyblade: ["9L1"], - psychic: ["9L1"], - psychocrush: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - scaleshot: ["9L1"], - shadowball: ["9L1"], - substitute: ["9L1"], - tachyoncutter: ["9L1"], - teleport: ["9L1"], - terablast: ["9L1"], - triattack: ["9L1"], - trickroom: ["9L1"], - }, - }, - yamatsukami: { - learnset: { - airslash: ["9L1"], - ancientpower: ["9L1"], - appleacid: ["9L1"], - belch: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - boomburst: ["9L1"], - clearsmog: ["9L1"], - cottonguard: ["9L1"], - cottonspore: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - defog: ["9L1"], - doubleedge: ["9L1"], - dracometeor: ["9L1"], - dragonascent: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - foulplay: ["9L1"], - gigadrain: ["9L1"], - grasswhistle: ["9L1"], - grassyglide: ["9L1"], - gravapple: ["9L1"], - growl: ["9L1"], - growth: ["9L1"], - hurricane: ["9L1"], - junglehealing: ["9L1"], - leaftornado: ["9L1"], - leer: ["9L1"], - nastyplot: ["9L1"], - powergem: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - seedflare: ["9L1"], - snaptrap: ["9L1"], - snarl: ["9L1"], - solarbeam: ["9L1"], - spicyextract: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - synthesis: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - twister: ["9L1"], - wish: ["9L1"], - mossbomb: ["9L1"], - leechseed: ["9L1"], - worryseed: ["9L1"], - ingrain: ["9L1"], - aromatherapy: ["9L1"], - recycle: ["9L1"], - creepynoise: ["9L1"], - heatwave: ["9L1"], - woodhammer: ["9L1"], - devour: ["9L1"], - rapidspin: ["9L1"], - endure: ["9L1"], - }, - }, - yiangaruga: { - learnset: { - acidarmor: ["9L1"], - acupressure: ["9L1"], - pursuit: ["9L1"], - agility: ["9L1"], - assurance: ["9L1"], - suckerpunch: ["9L1"], - submission: ["9L1"], - attract: ["9L1"], - barbbarrage: ["9L1"], - beatup: ["9L1"], - frenzyslam: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - confide: ["9L1"], - covet: ["9L1"], - crosspoison: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - darkpulse: ["9L1"], - disable: ["9L1"], - drillpeck: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - highjumpkick: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - lunge: ["9L1"], - meanlook: ["9L1"], - memento: ["9L1"], - nastyplot: ["9L1"], - nightslash: ["9L1"], - painsplit: ["9L1"], - partingshot: ["9L1"], - playrough: ["9L1"], - poisontail: ["9L1"], - pounce: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - shadowsneak: ["9L1"], - snarl: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - tickle: ["9L1"], - toxic: ["9L1"], - trick: ["9L1"], - tripleaxel: ["9L1"], - triplekick: ["9L1"], - venomdrench: ["9L1"], - willowisp: ["9L1"], - fireblast: ["9L1"], - blazeball: ["9L1"], - boomburst: ["9L1"], - endure: ["9L1"], - }, - }, - yiankutku: { - learnset: { - acupressure: ["9L1"], - agility: ["9L1"], - blazekick: ["9L1"], - attract: ["9L1"], - batonpass: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - burningjealousy: ["9L1"], - confide: ["9L1"], - drillpeck: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - fierydance: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - flail: ["9L1"], - flamecharge: ["9L1"], - blazeball: ["9L1"], - growl: ["9L1"], - heatwave: ["9L1"], - helpinghand: ["9L1"], - honeclaws: ["9L1"], - infernalparade: ["9L1"], - lastresort: ["9L1"], - leer: ["9L1"], - lunge: ["9L1"], - overheat: ["9L1"], - playrough: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - snarl: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - tickle: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - willowisp: ["9L1"], - endure: ["9L1"], - }, - }, - zorahmagdaros: { - learnset: { - attract: ["9L1"], - bittermalice: ["9L1"], - magmasurge: ["9L1"], - bodypress: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - curse: ["9L1"], - destinybond: ["9L1"], - doubleedge: ["9L1"], - dracometeor: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - dynamaxcannon: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - eruption: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - focusblast: ["9L1"], - glaiverush: ["9L1"], - growl: ["9L1"], - heatcrash: ["9L1"], - heatwave: ["9L1"], - heavyslam: ["9L1"], - honeclaws: ["9L1"], - inferno: ["9L1"], - leer: ["9L1"], - magmastorm: ["9L1"], - memento: ["9L1"], - morningsun: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - ruination: ["9L1"], - scorchingsands: ["9L1"], - shelltrap: ["9L1"], - slackoff: ["9L1"], - snarl: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thousandwaves: ["9L1"], - willowisp: ["9L1"], - wish: ["9L1"], - endure: ["9L1"], - }, - }, - spiribird: { - learnset: { - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - naturesmadness: ["9L1"], - terablast: ["9L1"], - afteryou: ["9L1"], - assist: ["9L1"], - bellydrum: ["9L1"], - bestow: ["9L1"], - defensecurl: ["9L1"], - encore: ["9L1"], - entrainment: ["9L1"], - endeavor: ["9L1"], - flail: ["9L1"], - helpinghand: ["9L1"], - healbell: ["9L1"], - naturalgift: ["9L1"], - naturepower: ["9L1"], - painsplit: ["9L1"], - rapidspin: ["9L1"], - recycle: ["9L1"], - refresh: ["9L1"], - revivalblessing: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - simplebeam: ["9L1"], - spotlight: ["9L1"], - stockpile: ["9L1"], - swallow: ["9L1"], - spitup: ["9L1"], - sweetscent: ["9L1"], - tickle: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - wish: ["9L1"], - aromaticmist: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - craftyshield: ["9L1"], - disarmingvoice: ["9L1"], - fairywind: ["9L1"], - floralhealing: ["9L1"], - mistyexplosion: ["9L1"], - moonlight: ["9L1"], - sweetkiss: ["9L1"], - agility: ["9L1"], - amnesia: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - healpulse: ["9L1"], - healingwish: ["9L1"], - lightscreen: ["9L1"], - storedpower: ["9L1"], - psychic: ["9L1"], - drillpeck: ["9L1"], - peck: ["9L1"], - playnice: ["9L1"], - teatime: ["9L1"], - purify: ["9L1"], - junglehealing: ["9L1"], - leechseed: ["9L1"], - sleeppowder: ["9L1"], - revelationdance: ["9L1"], - }, - }, - spiribirdred: { - learnset: { - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - afteryou: ["9L1"], - assist: ["9L1"], - bellydrum: ["9L1"], - bestow: ["9L1"], - defensecurl: ["9L1"], - naturesmadness: ["9L1"], - encore: ["9L1"], - entrainment: ["9L1"], - endeavor: ["9L1"], - flail: ["9L1"], - helpinghand: ["9L1"], - healbell: ["9L1"], - naturalgift: ["9L1"], - naturepower: ["9L1"], - painsplit: ["9L1"], - rapidspin: ["9L1"], - recycle: ["9L1"], - refresh: ["9L1"], - revivalblessing: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - simplebeam: ["9L1"], - spotlight: ["9L1"], - stockpile: ["9L1"], - swallow: ["9L1"], - spitup: ["9L1"], - sweetscent: ["9L1"], - tickle: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - wish: ["9L1"], - aromaticmist: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - craftyshield: ["9L1"], - disarmingvoice: ["9L1"], - fairywind: ["9L1"], - floralhealing: ["9L1"], - mistyexplosion: ["9L1"], - moonlight: ["9L1"], - sweetkiss: ["9L1"], - agility: ["9L1"], - amnesia: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - healpulse: ["9L1"], - healingwish: ["9L1"], - lightscreen: ["9L1"], - storedpower: ["9L1"], - psychic: ["9L1"], - drillpeck: ["9L1"], - peck: ["9L1"], - playnice: ["9L1"], - teatime: ["9L1"], - purify: ["9L1"], - ficklebeam: ["9L1"], - dragoncheer: ["9L1"], - dracophage: ["9L1"], - revelationdance: ["9L1"], - }, - }, - spiribirdyellow: { - learnset: { - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - naturesmadness: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - afteryou: ["9L1"], - assist: ["9L1"], - bellydrum: ["9L1"], - bestow: ["9L1"], - defensecurl: ["9L1"], - encore: ["9L1"], - entrainment: ["9L1"], - endeavor: ["9L1"], - flail: ["9L1"], - helpinghand: ["9L1"], - healbell: ["9L1"], - naturalgift: ["9L1"], - naturepower: ["9L1"], - painsplit: ["9L1"], - rapidspin: ["9L1"], - recycle: ["9L1"], - refresh: ["9L1"], - revivalblessing: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - simplebeam: ["9L1"], - spotlight: ["9L1"], - stockpile: ["9L1"], - swallow: ["9L1"], - spitup: ["9L1"], - sweetscent: ["9L1"], - tickle: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - wish: ["9L1"], - aromaticmist: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - craftyshield: ["9L1"], - disarmingvoice: ["9L1"], - fairywind: ["9L1"], - floralhealing: ["9L1"], - mistyexplosion: ["9L1"], - moonlight: ["9L1"], - sweetkiss: ["9L1"], - agility: ["9L1"], - amnesia: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - healpulse: ["9L1"], - healingwish: ["9L1"], - lightscreen: ["9L1"], - storedpower: ["9L1"], - psychic: ["9L1"], - drillpeck: ["9L1"], - peck: ["9L1"], - playnice: ["9L1"], - teatime: ["9L1"], - purify: ["9L1"], - thunderwave: ["9L1"], - charge: ["9L1"], - voltswitch: ["9L1"], - revelationdance: ["9L1"], - }, - }, - spiribirdorange: { - learnset: { - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - naturesmadness: ["9L1"], - afteryou: ["9L1"], - assist: ["9L1"], - bellydrum: ["9L1"], - bestow: ["9L1"], - defensecurl: ["9L1"], - encore: ["9L1"], - entrainment: ["9L1"], - endeavor: ["9L1"], - flail: ["9L1"], - helpinghand: ["9L1"], - healbell: ["9L1"], - naturalgift: ["9L1"], - naturepower: ["9L1"], - painsplit: ["9L1"], - rapidspin: ["9L1"], - recycle: ["9L1"], - refresh: ["9L1"], - revivalblessing: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - simplebeam: ["9L1"], - spotlight: ["9L1"], - stockpile: ["9L1"], - swallow: ["9L1"], - spitup: ["9L1"], - sweetscent: ["9L1"], - tickle: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - wish: ["9L1"], - aromaticmist: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - craftyshield: ["9L1"], - disarmingvoice: ["9L1"], - fairywind: ["9L1"], - floralhealing: ["9L1"], - mistyexplosion: ["9L1"], - moonlight: ["9L1"], - sweetkiss: ["9L1"], - agility: ["9L1"], - amnesia: ["9L1"], - calmmind: ["9L1"], - cosmicpower: ["9L1"], - healpulse: ["9L1"], - healingwish: ["9L1"], - lightscreen: ["9L1"], - storedpower: ["9L1"], - psychic: ["9L1"], - drillpeck: ["9L1"], - peck: ["9L1"], - playnice: ["9L1"], - teatime: ["9L1"], - purify: ["9L1"], - willowisp: ["9L1"], - heatwave: ["9L1"], - firespin: ["9L1"], - revelationdance: ["9L1"], - }, - }, - shantien: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - airslash: ["9L1"], - ancientpower: ["9L1"], - aquaring: ["9L1"], - aquatail: ["9L1"], - bleakwindstorm: ["9L1"], - charge: ["9L1"], - chillingwater: ["9L1"], - coil: ["9L1"], - conversion: ["9L1"], - dazzlinggleam: ["9L1"], - defog: ["9L1"], - discharge: ["9L1"], - dragonpulse: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flail: ["9L1"], - flipturn: ["9L1"], - focusenergy: ["9L1"], - gigaimpact: ["9L1"], - hurricane: ["9L1"], - hydropump: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - lashout: ["9L1"], - lifedew: ["9L1"], - memento: ["9L1"], - nastyplot: ["9L1"], - naturepower: ["9L1"], - originpulse: ["9L1"], - protect: ["9L1"], - razorwind: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - roost: ["9L1"], - scald: ["9L1"], - selfdestruct: ["9L1"], - snarl: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - triattack: ["9L1"], - twister: ["9L1"], - voltswitch: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - }, - }, - lalabarina: { - learnset: { - absorb: ["9L1"], - agility: ["9L1"], - bestow: ["9L1"], - bodyslam: ["9L1"], - bugbuzz: ["9L1"], - calmmind: ["9L1"], - cottonguard: ["9L1"], - cottonspore: ["9L1"], - creepynoise: ["9L1"], - discharge: ["9L1"], - eerieimpulse: ["9L1"], - endeavor: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - flowertrick: ["9L1"], - gigadrain: ["9L1"], - healbell: ["9L1"], - helpinghand: ["9L1"], - infestation: ["9L1"], - ingrain: ["9L1"], - leechlife: ["9L1"], - lunge: ["9L1"], - magiccoat: ["9L1"], - megadrain: ["9L1"], - mimic: ["9L1"], - mirrorcoat: ["9L1"], - morningsun: ["9L1"], - playrough: ["9L1"], - poisonjab: ["9L1"], - pollenpuff: ["9L1"], - protect: ["9L1"], - quiverdance: ["9L1"], - firstimpression: ["9L1"], - rapidspin: ["9L1"], - reflecttype: ["9L1"], - rest: ["9L1"], - revelationdance: ["9L1"], - seedbomb: ["9L1"], - shockwave: ["9L1"], - silktrap: ["9L1"], - slam: ["9L1"], - solarbeam: ["9L1"], - spikecannon: ["9L1"], - strengthsap: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - terablast: ["9L1"], - twineedle: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - uturn: ["9L1"], - victorydance: ["9L1"], - wringout: ["9L1"], - }, - }, - balahara: { - learnset: { - accelerock: ["9L1"], - ancientpower: ["9L1"], - aquatail: ["9L1"], - bind: ["9L1"], - bodyslam: ["9L1"], - bulldoze: ["9L1"], - coil: ["9L1"], - defensecurl: ["9L1"], - dig: ["9L1"], - discharge: ["9L1"], - drillrun: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - glare: ["9L1"], - gunkshot: ["9L1"], - highhorsepower: ["9L1"], - hydropump: ["9L1"], - hyperdrill: ["9L1"], - knockoff: ["9L1"], - lastresort: ["9L1"], - lockon: ["9L1"], - mudbomb: ["9L1"], - mudsport: ["9L1"], - painsplit: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - quicksandbreath: ["9L1"], - rest: ["9L1"], - rapidspin: ["9L1"], - rockclimb: ["9L1"], - rockslide: ["9L1"], - rototiller: ["9L1"], - shoreup: ["9L1"], - slam: ["9L1"], - smackdown: ["9L1"], - smog: ["9L1"], - snipeshot: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tarshot: ["9L1"], - terablast: ["9L1"], - thrash: ["9L1"], - tripledive: ["9L1"], - uturn: ["9L1"], - workup: ["9L1"], - wretchedwater: ["9L1"], - }, - }, - doshaguma: { - learnset: { - beatup: ["9L1"], - headlongrush: ["9L1"], - wildcharge: ["9L1"], - roughhouse: ["9L1"], - bodypress: ["9L1"], - brickbreak: ["9L1"], - megakick: ["9M"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - chipaway: ["9L1"], - circlethrow: ["9L1"], - submission: ["9L1"], - counter: ["9L1"], - covet: ["9L1"], - crunch: ["9L1"], - detect: ["9L1"], - doubleedge: ["9L1"], - endure: ["9L1"], - entrainment: ["9L1"], - facade: ["9L1"], - foulplay: ["9L1"], - gigaimpact: ["9L1"], - hammerarm: ["9L1"], - headcharge: ["9L1"], - headbutt: ["9L1"], - highhorsepower: ["9L1"], - lastresort: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - matblock: ["9L1"], - outrage: ["9L1"], - playrough: ["9L1"], - pounce: ["9L1"], - pound: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - ragingbull: ["9L1"], - rest: ["9L1"], - revenge: ["9L1"], - reversal: ["9L1"], - rockslide: ["9L1"], - screech: ["9L1"], - slackoff: ["9L1"], - slam: ["9L1"], - stomp: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - terablast: ["9L1"], - thrash: ["9L1"], - trailblaze: ["9L1"], - wideguard: ["9L1"], - workup: ["9L1"], - }, - }, - rompopolo: { - learnset: { - acidarmor: ["9L1"], - acidspray: ["9L1"], - acupressure: ["9L1"], - agility: ["9L1"], - banefulbunker: ["9L1"], - barbbarrage: ["9L1"], - beakblast: ["9L1"], - belch: ["9L1"], - bodyslam: ["9L1"], - branchpoke: ["9L1"], - calmmind: ["9L1"], - clearsmog: ["9L1"], - darkpulse: ["9L1"], - drillpeck: ["9L1"], - earthpower: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - feint: ["9L1"], - flail: ["9L1"], - foulplay: ["9L1"], - gunkshot: ["9L1"], - harshsting: ["9L1"], - haze: ["9L1"], - healblock: ["9L1"], - hex: ["9L1"], - jumpkick: ["9L1"], - knockoff: ["9L1"], - nastyplot: ["9L1"], - nightshade: ["9L1"], - nightslash: ["9L1"], - ominouswind: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - quash: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - shadowclaw: ["9L1"], - sludge: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - snarl: ["9L1"], - spite: ["9L1"], - strengthsap: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - torment: ["9L1"], - toxic: ["9L1"], - trick: ["9L1"], - venomdrench: ["9L1"], - venoshock: ["9L1"], - }, - }, - palico: { - learnset: { - agility: ["9L1"], - assist: ["9L1"], - doublehit: ["9L1"], - attackorder: ["9L1"], - babydolleyes: ["9L1"], - snatch: ["9L1"], - batonpass: ["9L1"], - beatup: ["9L1"], - bestow: ["9L1"], - block: ["9L1"], - bonemerang: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - confide: ["9L1"], - copycat: ["9L1"], - defendorder: ["9L1"], - devour: ["9L1"], - doodle: ["9L1"], - endeavor: ["9L1"], - endure: ["9L1"], - entrainment: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - feint: ["9L1"], - flameburst: ["9L1"], - flash: ["9L1"], - fling: ["9L1"], - floralhealing: ["9L1"], - flowertrick: ["9L1"], - followme: ["9L1"], - forcepalm: ["9L1"], - foulplay: ["9L1"], - furyswipes: ["9L1"], - healblock: ["9L1"], - healorder: ["9L1"], - healpulse: ["9L1"], - healingwish: ["9L1"], - helpinghand: ["9L1"], - hurricane: ["9L1"], - irontail: ["9L1"], - knockoff: ["9L1"], - laserfocus: ["9L1"], - lastresort: ["9L1"], - lockon: ["9L1"], - machpunch: ["9L1"], - metronome: ["9L1"], - nobleroar: ["9L1"], - playrough: ["9L1"], - poisongas: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - psychup: ["9L1"], - pursuit: ["9L1"], - recycle: ["9L1"], - rest: ["9L1"], - roleplay: ["9L1"], - safeguard: ["9L1"], - scratch: ["9L1"], - slam: ["9L1"], - spikes: ["9L1"], - strength: ["9L1"], - stringshot: ["9L1"], - substitute: ["9L1"], - sweetscent: ["9L1"], - swordsdance: ["9L1"], - tearfullook: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - taunt: ["9L1"], - tickle: ["9L1"], - tidyup: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - trumpcard: ["9L1"], - whirlwind: ["9L1"], - workup: ["9L1"], - }, - }, - palamute: { - learnset: { - bodyslam: ["9L1"], - doublehit: ["9L1"], - bulkup: ["9L1"], - chipaway: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - crushgrip: ["9L1"], - doubleedge: ["9L1"], - doubleslap: ["9L1"], - dragondance: ["9L1"], - electroweb: ["9L1"], - endure: ["9L1"], - entrainment: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - headbutt: ["9L1"], - helpinghand: ["9L1"], - hyperfang: ["9L1"], - icefang: ["9L1"], - irontail: ["9L1"], - lastresort: ["9L1"], - lick: ["9L1"], - lowkick: ["9L1"], - nobleroar: ["9L1"], - nuzzle: ["9L1"], - partingshot: ["9L1"], - playnice: ["9L1"], - playrough: ["9L1"], - poisonfang: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - psyshieldbash: ["9L1"], - quickguard: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - reversal: ["9L1"], - roar: ["9L1"], - rockclimb: ["9L1"], - rocktomb: ["9L1"], - scratch: ["9L1"], - sharpen: ["9L1"], - substitute: ["9L1"], - superfang: ["9L1"], - swordsdance: ["9L1"], - terablast: ["9L1"], - thousandblades: ["9L1"], - thunderfang: ["9L1"], - visegrip: ["9L1"], - watershuriken: ["9L1"], - workup: ["9L1"], - }, - }, - disufiroa: { - learnset: { - agility: ["9L1"], - aurorabeam: ["9L1"], - blazeball: ["9L1"], - blizzard: ["9L1"], - spacialrend: ["9L1"], - burningbulwark: ["9L1"], - breakingswipe: ["9L1"], - burnup: ["9L1"], - calmmind: ["9L1"], - doubleedge: ["9L1"], - dracometeor: ["9L1"], - dracophage: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - endure: ["9L1"], - extrasensory: ["9L1"], - facade: ["9L1"], - fierydance: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - heatcrash: ["9L1"], - heatwave: ["9L1"], - icebeam: ["9L1"], - iceburn: ["9L1"], - iceshard: ["9L1"], - iciclecrash: ["9L1"], - lightscreen: ["9L1"], - meteorbeam: ["9L1"], - mysticalfire: ["9L1"], - nastyplot: ["9L1"], - outrage: ["9L1"], - overheat: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - seraphicshift: ["9L1"], - shelltrap: ["9L1"], - snarl: ["9L1"], - stomp: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - terrainpulse: ["9L1"], - weatherball: ["9L1"], - }, - }, - agnaktorex: { - learnset: { - armorcannon: ["9L1"], - megakick: ["9M"], - autotomize: ["9L1"], - beakblast: ["9L1"], - chipaway: ["9L1"], - burnup: ["9L1"], - burningbulwark: ["9L1"], - circlethrow: ["9L1"], - dragonbreath: ["9L1"], - dragontail: ["9L1"], - drillpeck: ["9L1"], - earthpower: ["9L1"], - ember: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - flashcannon: ["9L1"], - heatbeam: ["9L1"], - heatcrash: ["9L1"], - irondefense: ["9L1"], - knockoff: ["9L1"], - lavaplume: ["9L1"], - overheat: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - shelltrap: ["9L1"], - shiftgear: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - tachyoncutter: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - willowisp: ["9L1"], - calmmind: ["9L1"], - discharge: ["9L1"], - }, - }, - reydau: { - learnset: { - acrobatics: ["9L1"], - acupressure: ["9L1"], - agility: ["9L1"], - airslash: ["9L1"], - batonpass: ["9L1"], - bodyslam: ["9L1"], - thunderrush: ["9L1"], - boltbeak: ["9L1"], - clangingscales: ["9L1"], - defog: ["9L1"], - discharge: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - focusenergy: ["9L1"], - growl: ["9L1"], - gust: ["9L1"], - headbutt: ["9L1"], - hurricane: ["9L1"], - hyperbeam: ["9L1"], - iondeluge: ["9L1"], - laserfocus: ["9L1"], - meanlook: ["9L1"], - meteorbeam: ["9L1"], - nastyplot: ["9L1"], - nobleroar: ["9L1"], - pluck: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - quickattack: ["9L1"], - razorwind: ["9L1"], - rest: ["9L1"], - rockblast: ["9L1"], - risingvoltage: ["9L1"], - rockclimb: ["9L1"], - roost: ["9L1"], - round: ["9L1"], - screech: ["9L1"], - smackdown: ["9L1"], - snarl: ["9L1"], - sonicboom: ["9L1"], - strength: ["9L1"], - substitute: ["9L1"], - swift: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - thunderclap: ["9L1"], - thunderwave: ["9L1"], - voltswitch: ["9L1"], - volttackle: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - wildboltstorm: ["9L1"], - workup: ["9L1"], - zapcannon: ["9L1"], - }, - }, - hirabami: { - learnset: { - acrobatics: ["9L1"], - acupressure: ["9L1"], - aerialace: ["9L1"], - agility: ["9L1"], - cutwingbarrage: ["9L1"], - coldsnap: ["9L1"], - assist: ["9L1"], - beatup: ["9L1"], - bide: ["9L1"], - bodyslam: ["9L1"], - bounce: ["9L1"], - chillyreception: ["9L1"], - chipaway: ["9L1"], - constrict: ["9L1"], - courtchange: ["9L1"], - crushclaw: ["9L1"], - crushgrip: ["9L1"], - cut: ["9L1"], - defensecurl: ["9L1"], - endeavor: ["9L1"], - endure: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - firstimpression: ["9L1"], - flail: ["9L1"], - furyswipes: ["9L1"], - honeclaws: ["9L1"], - hyperdrill: ["9L1"], - iceball: ["9L1"], - icebeam: ["9L1"], - icehammer: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - lastresort: ["9L1"], - lowsweep: ["9L1"], - memento: ["9L1"], - pluck: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - razorwind: ["9L1"], - rest: ["9L1"], - slash: ["9L1"], - stormthrow: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tailslap: ["9L1"], - tailwhip: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - tickle: ["9L1"], - wakeupslap: ["9L1"], - xscissor: ["9L1"], - }, - }, - nuudra: { - learnset: { - scorchingsands: ["9L1"], - trickroom: ["9L1"], - tarshot: ["9L1"], - sludgewave: ["9L1"], - taunt: ["9L1"], - acidarmor: ["9L1"], - acidspray: ["9L1"], - beatup: ["9L1"], - blazeball: ["9L1"], - bind: ["9L1"], - brutalswing: ["9L1"], - burningbulwark: ["9L1"], - bulkup: ["9L1"], - burnup: ["9L1"], - calmmind: ["9L1"], - clearsmog: ["9L1"], - coil: ["9L1"], - curse: ["9L1"], - darkpulse: ["9L1"], - doubleslap: ["9L1"], - embargo: ["9L1"], - endure: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - falseswipe: ["9L1"], - fierywrath: ["9L1"], - fireblast: ["9L1"], - firespin: ["9L1"], - flamethrower: ["9L1"], - fling: ["9L1"], - healblock: ["9L1"], - heatwave: ["9L1"], - imprison: ["9L1"], - knockoff: ["9L1"], - lavaplume: ["9L1"], - memento: ["9L1"], - mimic: ["9L1"], - mirrorcoat: ["9L1"], - nastyplot: ["9L1"], - naturalgift: ["9L1"], - naturepower: ["9L1"], - octolock: ["9L1"], - painsplit: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - reflecttype: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - roleplay: ["9L1"], - scaryface: ["9L1"], - sludgebomb: ["9L1"], - smokescreen: ["9L1"], - snarl: ["9L1"], - snatch: ["9L1"], - spitup: ["9L1"], - stockpile: ["9L1"], - substitute: ["9L1"], - swallow: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - thief: ["9L1"], - tickle: ["9L1"], - trick: ["9L1"], - willowisp: ["9L1"], - wrap: ["9L1"], - wringout: ["9L1"], - suckerpunch: ["9L1"], - magmasurge: ["9L1"], - pursuit: ["9L1"], - }, - }, - nightlumu: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - airslash: ["9L1"], - chipaway: ["9L1"], - amnesia: ["9L1"], - babydolleyes: ["9L1"], - batonpass: ["9L1"], - bellydrum: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - calmmind: ["9L1"], - charm: ["9L1"], - circlethrow: ["9L1"], - crunch: ["9L1"], - darkpulse: ["9L1"], - defog: ["9L1"], - dreameater: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - eeriespell: ["9L1"], - embargo: ["9L1"], - encore: ["9L1"], - endeavor: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flail: ["9L1"], - fling: ["9L1"], - futuresight: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - honeclaws: ["9L1"], - hurricane: ["9L1"], - hypnosis: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - milkdrink: ["9L1"], - nightdaze: ["9L1"], - nightslash: ["9L1"], - obstruct: ["9L1"], - painsplit: ["9L1"], - partingshot: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psybeam: ["9L1"], - psychicnoise: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - screech: ["9L1"], - snarl: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - tickle: ["9L1"], - tidyup: ["9L1"], - trick: ["9L1"], - }, - }, - acidinus: { - learnset: { - accelerock: ["9L1"], - acidarmor: ["9L1"], - agility: ["9L1"], - sulfurousblade: ["9L1"], - behemothblade: ["9L1"], - clearsmog: ["9L1"], - crosspoison: ["9L1"], - crunch: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - filletaway: ["9L1"], - gunkshot: ["9L1"], - irontail: ["9L1"], - kowtowcleave: ["9L1"], - leer: ["9L1"], - lowsweep: ["9L1"], - metalburst: ["9L1"], - mightycleave: ["9L1"], - nightslash: ["9L1"], - protect: ["9L1"], - psyblade: ["9L1"], - rest: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - sacredsword: ["9L1"], - secretsword: ["9L1"], - sharpen: ["9L1"], - smartstrike: ["9L1"], - stealthrock: ["9L1"], - steelroller: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tailwhip: ["9L1"], - terablast: ["9L1"], - toxicspikes: ["9L1"], - }, - }, - molgrex: { - learnset: { - astonish: ["9L1"], - bite: ["9L1"], - blastbite: ["9L1"], - powderkeg: ["9L1"], - blazingtorque: ["9L1"], - blazekick: ["9L1"], - breakingswipe: ["9L1"], - headcharge: ["9L1"], - brickbreak: ["9L1"], - crushclaw: ["9L1"], - bulkup: ["9L1"], - magmasurge: ["9L1"], - clangoroussoul: ["9L1"], - closecombat: ["9L1"], - boomblast: ["9L1"], - counter: ["9L1"], - crunch: ["9L1"], - darkestlariat: ["9L1"], - doubleedge: ["9L1"], - earthquake: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - flamewheel: ["9L1"], - flareblitz: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - heatwave: ["9L1"], - honeclaws: ["9L1"], - hypervoice: ["9L1"], - jawlock: ["9L1"], - megapunch: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - perishsong: ["9L1"], - protect: ["9L1"], - pursuit: ["9L1"], - ragingfury: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - screech: ["9L1"], - seismictoss: ["9L1"], - snarl: ["9L1"], - stoneedge: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - superfang: ["9L1"], - swordsdance: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - uproar: ["9L1"], - uturn: ["9L1"], - workup: ["9L1"], - }, - }, - blackblos: { - learnset: { - endure: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - headcharge: ["9L1"], - terablast: ["9L1"], - bulkup: ["9L1"], - honeclaws: ["9L1"], - swordsdance: ["9L1"], - workup: ["9L1"], - bodyslam: ["9L1"], - crunch: ["9L1"], - dragonclaw: ["9L1"], - earthquake: ["9L1"], - roughhouse: ["9L1"], - headlongrush: ["9L1"], - submission: ["9L1"], - facade: ["9L1"], - focusblast: ["9L1"], - headsmash: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - megahorn: ["9L1"], - outrage: ["9L1"], - pursuit: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - superpower: ["9L1"], - taunt: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - bite: ["9L1"], - breakingswipe: ["9L1"], - fellstinger: ["9L1"], - furycutter: ["9L1"], - headbutt: ["9L1"], - snarl: ["9L1"], - stoneaxe: ["9L1"], - strength: ["9L1"], - swagger: ["9L1"], - torment: ["9L1"], - screech: ["9L1"], - brickbreak: ["9L1"], - closecombat: ["9L1"], - reversal: ["9L1"], - upperhand: ["9L1"], - foulplay: ["9L1"], - nightslash: ["9L1"], - suckerpunch: ["9L1"], - }, - }, - sandrioth: { - learnset: { - accelerock: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - quicksandbreath: ["9L1"], - airslash: ["9L1"], - assist: ["9L1"], - defog: ["9L1"], - astonish: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - dualwingbeat: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - entrainment: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - falseswipe: ["9L1"], - gigaimpact: ["9L1"], - headsmash: ["9L1"], - highhorsepower: ["9L1"], - hurricane: ["9L1"], - hyperfang: ["9L1"], - irondefense: ["9L1"], - lashout: ["9L1"], - mudbomb: ["9L1"], - mudshot: ["9L1"], - nightslash: ["9L1"], - nobleroar: ["9L1"], - payback: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - rest: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - roost: ["9L1"], - sandsearstorm: ["9L1"], - scaryface: ["9L1"], - snarl: ["9L1"], - stoneedge: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tailwind: ["9L1"], - takedown: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - thrash: ["9L1"], - throatchop: ["9L1"], - whirlwind: ["9L1"], - wideguard: ["9L1"], - }, - }, - uthduna: { - learnset: { - alluringvoice: ["9L1"], - amnesia: ["9L1"], - aquaring: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - bite: ["9L1"], - blizzard: ["9L1"], - bodyslam: ["9L1"], - bulkup: ["9L1"], - captivate: ["9L1"], - chillingwater: ["9L1"], - cosmicpower: ["9L1"], - craftyshield: ["9L1"], - defensecurl: ["9L1"], - dive: ["9L1"], - doubleedge: ["9L1"], - faketears: ["9L1"], - flatter: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - icefang: ["9L1"], - icespinner: ["9L1"], - icywind: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - liquidation: ["9L1"], - magiccoat: ["9L1"], - muddywater: ["9L1"], - playrough: ["9L1"], - raindance: ["9L1"], - recycle: ["9L1"], - reflect: ["9L1"], - refresh: ["9L1"], - roar: ["9L1"], - rockclimb: ["9L1"], - scaleshot: ["9L1"], - sheercold: ["9L1"], - slash: ["9L1"], - snarl: ["9L1"], - soak: ["9L1"], - sparklingaria: ["9L1"], - bellydrum: ["9L1"], - spiritbreak: ["9L1"], - splash: ["9L1"], - strength: ["9L1"], - surf: ["9L1"], - tailwhip: ["9L1"], - tickle: ["9L1"], - watergun: ["9L1"], - waterfall: ["9L1"], - wavecrash: ["9L1"], - knockoff: ["9L1"], - coldsnap: ["9L1"], - }, - }, - blackveilhazak: { - learnset: { - absorb: ["9L1"], - acidarmor: ["9L1"], - aromatherapy: ["9L1"], - attract: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - calmmind: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - darkpulse: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - dragonpulse: ["9L1"], - energyball: ["9L1"], - forestscurse: ["9L1"], - gunkshot: ["9L1"], - haze: ["9L1"], - hex: ["9L1"], - hornleech: ["9L1"], - ingrain: ["9L1"], - jawlock: ["9L1"], - leafstorm: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - magicalleaf: ["9L1"], - meanlook: ["9L1"], - memento: ["9L1"], - nastyplot: ["9L1"], - naturesmadness: ["9L1"], - payback: ["9L1"], - phantomforce: ["9L1"], - pollenpuff: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - quash: ["9L1"], - ragepowder: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - shadowball: ["9L1"], - shadowsneak: ["9L1"], - shroomshield: ["9L1"], - snarl: ["9L1"], - solarbeam: ["9L1"], - spore: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - }, - }, - silvalos: { - learnset: { - acrobatics: ["9L1"], - aerialace: ["9L1"], - aircutter: ["9L1"], - workup: ["9L1"], - airslash: ["9L1"], - attract: ["9L1"], - autotomize: ["9L1"], - beatup: ["9L1"], - blastburn: ["9L1"], - blazeball: ["9L1"], - blueflare: ["9L1"], - bodyslam: ["9L1"], - bravebird: ["9L1"], - brutalswing: ["9L1"], - crosspoison: ["9L1"], - crunch: ["9L1"], - defog: ["9L1"], - dualwingbeat: ["9L1"], - ember: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - firepledge: ["9L1"], - firespin: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - flashcannon: ["9L1"], - fly: ["9L1"], - focusblast: ["9L1"], - gigaimpact: ["9L1"], - hardpress: ["9L1"], - heatcrash: ["9L1"], - heatwave: ["9L1"], - heavyslam: ["9L1"], - hurricane: ["9L1"], - incinerate: ["9L1"], - inferno: ["9L1"], - irondefense: ["9L1"], - irontail: ["9L1"], - kingsshield: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - overheat: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - roost: ["9L1"], - scratch: ["9L1"], - seismictoss: ["9L1"], - skyattack: ["9L1"], - slash: ["9L1"], - smartstrike: ["9L1"], - solarbeam: ["9L1"], - steelwing: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - sunsteelstrike: ["9L1"], - swift: ["9L1"], - tailslap: ["9L1"], - tailwind: ["9L1"], - temperflare: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - willowisp: ["9L1"], - wingattack: ["9L1"], - }, - }, - goldthian: { - learnset: { - aerialace: ["9L1"], - attract: ["9L1"], - tailslap: ["9L1"], - autotomize: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - blazeball: ["9L1"], - blueflare: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bubblebeam: ["9L1"], - burningbulwark: ["9L1"], - charm: ["9L1"], - crosspoison: ["9L1"], - crunch: ["9L1"], - defensecurl: ["9L1"], - doublekick: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flashcannon: ["9L1"], - flatter: ["9L1"], - focusblast: ["9L1"], - focusenergy: ["9L1"], - foulplay: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - hardpress: ["9L1"], - heatwave: ["9L1"], - heavyslam: ["9L1"], - hex: ["9L1"], - honeclaws: ["9L1"], - incinerate: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - mortalspin: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - poisonsting: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rocksmash: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - smartstrike: ["9L1"], - spinout: ["9L1"], - steelwing: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - superfang: ["9L1"], - tackle: ["9L1"], - tailwhip: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - torment: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - venoshock: ["9L1"], - willowisp: ["9L1"], - }, - }, - greencuga: { - learnset: { - aerialace: ["9L1"], - bodyslam: ["9L1"], - bulletpunch: ["9L1"], - bulletseed: ["9L1"], - cut: ["9L1"], - doubleedge: ["9L1"], - dualwingbeat: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - falseswipe: ["9L1"], - flashcannon: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - grassknot: ["9L1"], - grassyglide: ["9L1"], - grassyterrain: ["9L1"], - growth: ["9L1"], - guillotine: ["9L1"], - hardpress: ["9L1"], - heavyslam: ["9L1"], - honeclaws: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - ivycudgel: ["9L1"], - leafblade: ["9L1"], - leafage: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - meteormash: ["9L1"], - pinmissile: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - psychocut: ["9L1"], - pursuit: ["9L1"], - quash: ["9L1"], - rest: ["9L1"], - retaliate: ["9L1"], - reversal: ["9L1"], - rocksmash: ["9L1"], - rocktomb: ["9L1"], - rototiller: ["9L1"], - sacredsword: ["9L1"], - scratch: ["9L1"], - screech: ["9L1"], - shadowclaw: ["9L1"], - sharpen: ["9L1"], - slam: ["9L1"], - slash: ["9L1"], - smartstrike: ["9L1"], - snatch: ["9L1"], - solarblade: ["9L1"], - spinout: ["9L1"], - steelbeam: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - tailslap: ["9L1"], - tailwhip: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - torment: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - xscissor: ["9L1"], - }, - }, - valstrax: { - learnset: { - aerialace: ["9L1"], - autotomize: ["9L1"], - ancientpower: ["9L1"], - bravebird: ["9L1"], - bodypress: ["9L1"], - dragonrush: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - collisioncourse: ["9L1"], - defog: ["9L1"], - doubleteam: ["9L1"], - dracophage: ["9L1"], - dracometeor: ["9L1"], - dragonascent: ["9L1"], - dragonbreath: ["9L1"], - dragonclaw: ["9L1"], - dragondarts: ["9L1"], - dragonpulse: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flashcannon: ["9L1"], - focusblast: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - gravity: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - honeclaws: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - incinerate: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - laserfocus: ["9L1"], - magnetrise: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - morningsun: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - quickguard: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - screech: ["9L1"], - slash: ["9L1"], - substitute: ["9L1"], - sunsteelstrike: ["9L1"], - swift: ["9L1"], - tachyoncutter: ["9L1"], - tailwind: ["9L1"], - takedown: ["9L1"], - terablast: ["9L1"], - uturn: ["9L1"], - workup: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - }, - }, - glowstrax: { - learnset: { - aerialace: ["9L1"], - airslash: ["9L1"], - dragonrush: ["9L1"], - ancientpower: ["9L1"], - headcharge: ["9L1"], - aurasphere: ["9L1"], - breakingswipe: ["9L1"], - collisioncourse: ["9L1"], - defog: ["9L1"], - doubleedge: ["9L1"], - doubleteam: ["9L1"], - dracometeor: ["9L1"], - dracophage: ["9L1"], - dragonclaw: ["9L1"], - dragonenergy: ["9L1"], - dragonpulse: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - extrasensory: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - focusblast: ["9L1"], - gigaimpact: ["9L1"], - gravity: ["9L1"], - growl: ["9L1"], - hurricane: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - incinerate: ["9L1"], - laserfocus: ["9L1"], - magnetrise: ["9L1"], - meteorbeam: ["9L1"], - outrage: ["9L1"], - overheat: ["9L1"], - protect: ["9L1"], - psychup: ["9L1"], - rest: ["9L1"], - screech: ["9L1"], - shockwave: ["9L1"], - steelbeam: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swift: ["9L1"], - tachyoncutter: ["9L1"], - temperflare: ["9L1"], - terablast: ["9L1"], - trick: ["9L1"], - twister: ["9L1"], - uturn: ["9L1"], - wildcharge: ["9L1"], - workup: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - }, - }, - bluekutku: { - learnset: { - acupressure: ["9L1"], - blazekick: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - batonpass: ["9L1"], - blazeball: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - bulldoze: ["9L1"], - confide: ["9L1"], - dig: ["9L1"], - drillpeck: ["9L1"], - drillrun: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - fierydance: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - flail: ["9L1"], - flamecharge: ["9L1"], - growl: ["9L1"], - heatwave: ["9L1"], - helpinghand: ["9L1"], - honeclaws: ["9L1"], - lastresort: ["9L1"], - mudbomb: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - scorchingsands: ["9L1"], - stealthrock: ["9L1"], - smackdown: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - }, - }, - ivogiacrus: { - learnset: { - agility: ["9L1"], - attract: ["9L1"], - boltbeak: ["9L1"], - boltbreath: ["9L1"], - charge: ["9L1"], - chargebeam: ["9L1"], - discharge: ["9L1"], - dragonpulse: ["9L1"], - electroball: ["9L1"], - electroshot: ["9L1"], - embargo: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - growl: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - nastyplot: ["9L1"], - nethercurrent: ["9L1"], - paraboliccharge: ["9L1"], - protect: ["9L1"], - glare: ["9L1"], - bodyslam: ["9L1"], - coil: ["9L1"], - rest: ["9L1"], - risingvoltage: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - stoneedge: ["9L1"], - snarl: ["9L1"], - substitute: ["9L1"], - supercellslam: ["9L1"], - surf: ["9L1"], - swagger: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderrush: ["9L1"], - irontail: ["9L1"], - ironhead: ["9L1"], - thunderbolt: ["9L1"], - thundercage: ["9L1"], - thunderclap: ["9L1"], - thunderwave: ["9L1"], - voltswitch: ["9L1"], - wretchedwater: ["9L1"], - }, - }, - arkveld: { - learnset: { - absorb: ["9L1"], - acrobatics: ["9L1"], - astonish: ["9L1"], - bind: ["9L1"], - bite: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - destinybond: ["9L1"], - doubleedge: ["9L1"], - dracometeor: ["9L1"], - dracophage: ["9L1"], - dragoncheer: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrage: ["9L1"], - dragonrush: ["9L1"], - dragontail: ["9L1"], - dualchop: ["9L1"], - dualwingbeat: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fly: ["9L1"], - furyswipes: ["9L1"], - gigadrain: ["9L1"], - gigaimpact: ["9L1"], - growl: ["9L1"], - grudge: ["9L1"], - headbutt: ["9L1"], - honeclaws: ["9L1"], - hyperbeam: ["9L1"], - ironhead: ["9L1"], - lashout: ["9L1"], - leechlife: ["9L1"], - meanlook: ["9L1"], - megadrain: ["9L1"], - metalclaw: ["9L1"], - nightshade: ["9L1"], - nobleroar: ["9L1"], - ominouswind: ["9L1"], - outrage: ["9L1"], - payback: ["9L1"], - phantomforce: ["9L1"], - poltergeist: ["9L1"], - powertrip: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - pursuit: ["9L1"], - ragingfury: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - scaleshot: ["9L1"], - scratch: ["9L1"], - shadowball: ["9L1"], - shadowclaw: ["9L1"], - shadowsneak: ["9L1"], - slash: ["9L1"], - snarl: ["9L1"], - spiritshackle: ["9L1"], - spite: ["9L1"], - strength: ["9L1"], - substitute: ["9L1"], - tailwind: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - torment: ["9L1"], - wingattack: ["9L1"], - wish: ["9L1"], - wrap: ["9L1"], - }, - }, - chatacabra: { - learnset: { - boulderpunch: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bounce: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - devour: ["9L1"], - dizzypunch: ["9L1"], - drainpunch: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - focuspunch: ["9L1"], - hammerarm: ["9L1"], - hardpress: ["9L1"], - lick: ["9L1"], - lunge: ["9L1"], - megapunch: ["9L1"], - poisonjab: ["9L1"], - pounce: ["9L1"], - poweruppunch: ["9L1"], - protect: ["9L1"], - quash: ["9L1"], - rest: ["9L1"], - rockclimb: ["9L1"], - rockpolish: ["9L1"], - rocksmash: ["9L1"], - rockthrow: ["9L1"], - rocktomb: ["9L1"], - sandstorm: ["9L1"], - counter: ["9L1"], - splash: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - strength: ["9L1"], - circlethrow: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - sweetlick: ["9L1"], - terablast: ["9L1"], - thunderpunch: ["9L1"], - watersport: ["9L1"], - wideguard: ["9L1"], - }, - }, - quematrice: { - learnset: { - bellydrum: ["9L1"], - bodyslam: ["9L1"], - corrosivegas: ["9L1"], - devour: ["9L1"], - doublekick: ["9L1"], - drillpeck: ["9L1"], - ember: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - featherdance: ["9L1"], - firelash: ["9L1"], - flail: ["9L1"], - flamecharge: ["9L1"], - foulplay: ["9L1"], - gust: ["9L1"], - crunch: ["9L1"], - incinerate: ["9L1"], - luckychant: ["9L1"], - mirrormove: ["9L1"], - jumpkick: ["9L1"], - orderup: ["9L1"], - pluck: ["9L1"], - poisongas: ["9L1"], - powder: ["9L1"], - protect: ["9L1"], - ragingfury: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - sandattack: ["9L1"], - sandstorm: ["9L1"], - screech: ["9L1"], - spark: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swordsdance: ["9L1"], - tailslap: ["9L1"], - tailwhip: ["9L1"], - taunt: ["9L1"], - workup: ["9L1"], - temperflare: ["9L1"], - terablast: ["9L1"], - magmasurge: ["9L1"], - }, - }, - pokaradon: { - learnset: { - aquaring: ["9L1"], - aquatail: ["9L1"], - attract: ["9L1"], - aurorabeam: ["9L1"], - avalanche: ["9L1"], - bellydrum: ["9L1"], - blizzard: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - brine: ["9L1"], - bulldoze: ["9L1"], - coldsnap: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - coil: ["9L1"], - defensecurl: ["9L1"], - dig: ["9L1"], - dive: ["9L1"], - earthquake: ["9L1"], - encore: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - gigaimpact: ["9L1"], - glacialgale: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - heavyslam: ["9L1"], - hydropump: ["9L1"], - iceball: ["9L1"], - icebeam: ["9L1"], - icefang: ["9L1"], - icehammer: ["9L1"], - icespinner: ["9L1"], - iciclespear: ["9L1"], - icywind: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - liquidation: ["9L1"], - powdersnow: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - wavecrash: ["9L1"], - flipturn: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - rollout: ["9L1"], - round: ["9L1"], - sheercold: ["9L1"], - snore: ["9L1"], - snowscape: ["9L1"], - spitup: ["9L1"], - stockpile: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - swagger: ["9L1"], - swallow: ["9L1"], - swordsdance: ["9L1"], - terablast: ["9L1"], - waterpulse: ["9L1"], - waterfall: ["9L1"], - whirlpool: ["9L1"], - snowballcannon: ["9L1"], - }, - }, - inagami: { - learnset: { - aromatherapy: ["9L1"], - bodypress: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - sedativespine: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - calmmind: ["9L1"], - chipaway: ["9L1"], - coaching: ["9L1"], - combattorque: ["9L1"], - counter: ["9L1"], - crushclaw: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - drumbeating: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - focusblast: ["9L1"], - focuspunch: ["9L1"], - forcepalm: ["9L1"], - forestscurse: ["9L1"], - frenzyplant: ["9L1"], - grasspledge: ["9L1"], - grassyterrain: ["9L1"], - growth: ["9L1"], - holdback: ["9L1"], - hornleech: ["9L1"], - instruct: ["9L1"], - irondefense: ["9L1"], - junglehealing: ["9L1"], - lastresort: ["9L1"], - lifedew: ["9L1"], - meditate: ["9L1"], - meteormash: ["9L1"], - mist: ["9L1"], - naturalgift: ["9L1"], - protect: ["9L1"], - purify: ["9L1"], - recycle: ["9L1"], - rest: ["9L1"], - reversal: ["9L1"], - rockslide: ["9L1"], - rototiller: ["9L1"], - secretpower: ["9L1"], - sleeppowder: ["9L1"], - smackdown: ["9L1"], - solarblade: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - synthesis: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - trumpcard: ["9L1"], - upperhand: ["9L1"], - vacuumwave: ["9L1"], - woodhammer: ["9L1"], - }, - }, - shroudcylla: { - learnset: { - sedativespine: ["9L1"], - spiderweb: ["9L1"], - acupressure: ["9L1"], - attackorder: ["9L1"], - attract: ["9L1"], - knockoff: ["9L1"], - brutalswing: ["9L1"], - bugbite: ["9L1"], - bugbuzz: ["9L1"], - clearsmog: ["9L1"], - creepynoise: ["9L1"], - darkpulse: ["9L1"], - defendorder: ["9L1"], - destinybond: ["9L1"], - dig: ["9L1"], - electroweb: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fling: ["9L1"], - foulplay: ["9L1"], - furycutter: ["9L1"], - growl: ["9L1"], - harshsting: ["9L1"], - haze: ["9L1"], - healorder: ["9L1"], - drillrun: ["9L1"], - infestation: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - malignantchain: ["9L1"], - memento: ["9L1"], - nastyplot: ["9L1"], - nightslash: ["9L1"], - partingshot: ["9L1"], - poisonjab: ["9L1"], - pounce: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psychocut: ["9L1"], - pursuit: ["9L1"], - quiverdance: ["9L1"], - rest: ["9L1"], - safeguard: ["9L1"], - silktrap: ["9L1"], - skittersmack: ["9L1"], - sludgebomb: ["9L1"], - smog: ["9L1"], - spikes: ["9L1"], - stickyweb: ["9L1"], - stringshot: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - supercellslam: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - toxicthread: ["9L1"], - trick: ["9L1"], - tripleaxel: ["9L1"], - uturn: ["9L1"], - venoshock: ["9L1"], - wickedtorque: ["9L1"], - wildcharge: ["9L1"], - willowisp: ["9L1"], - xscissor: ["9L1"], - }, - }, - lunastra: { - learnset: { - agility: ["9L1"], - aurasphere: ["9L1"], - blazeball: ["9L1"], - bestow: ["9L1"], - blazekick: ["9L1"], - blueflare: ["9L1"], - bodyslam: ["9L1"], - burningjealousy: ["9L1"], - calmmind: ["9L1"], - crushclaw: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - endure: ["9L1"], - extrasensory: ["9L1"], - expandingforce: ["9L1"], - facade: ["9L1"], - fierywrath: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - firespin: ["9L1"], - flail: ["9L1"], - flameburst: ["9L1"], - flamecharge: ["9L1"], - focusblast: ["9L1"], - flamethrower: ["9L1"], - furyswipes: ["9L1"], - futuresight: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - hellflare: ["9L1"], - heatwave: ["9L1"], - holdhands: ["9L1"], - hyperfang: ["9L1"], - hypervoice: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - magmasurge: ["9L1"], - meanlook: ["9L1"], - mirrorcoat: ["9L1"], - morningsun: ["9L1"], - mysticalfire: ["9L1"], - nastyplot: ["9L1"], - nobleroar: ["9L1"], - overheat: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychicfangs: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - scaryface: ["9L1"], - scorchingsands: ["9L1"], - scratch: ["9L1"], - smokescreen: ["9L1"], - snarl: ["9L1"], - stomp: ["9L1"], - storedpower: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - superfang: ["9L1"], - takedown: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - torment: ["9L1"], - willowisp: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - zohshia: { - learnset: { - ancestralthunder: ["9L1"], - ancientpower: ["9L1"], - barrier: ["9L1"], - blastburn: ["9L1"], - blazeball: ["9L1"], - spacialrend: ["9L1"], - bravebird: ["9L1"], - burningjealousy: ["9L1"], - comeuppance: ["9L1"], - crimsondawn: ["9L1"], - crushclaw: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - dragontail: ["9L1"], - eerieimpulse: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - ficklebeam: ["9L1"], - fierywrath: ["9L1"], - flamecharge: ["9L1"], - forcepalm: ["9L1"], - freezingglare: ["9L1"], - gigaimpact: ["9L1"], - grudge: ["9L1"], - heartswap: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - irontail: ["9L1"], - laserfocus: ["9L1"], - lashout: ["9L1"], - lockon: ["9L1"], - magiccoat: ["9L1"], - meanlook: ["9L1"], - nastyplot: ["9L1"], - nightshade: ["9L1"], - nobleroar: ["9L1"], - powertrip: ["9L1"], - protect: ["9L1"], - psychicnoise: ["9L1"], - purify: ["9L1"], - ragingfury: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - retaliate: ["9L1"], - roar: ["9L1"], - spiritbreak: ["9L1"], - spite: ["9L1"], - steamroller: ["9L1"], - submission: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - technoblast: ["9L1"], - temperflare: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderwave: ["9L1"], - thunderbolt: ["9L1"], - thunderclap: ["9L1"], - torment: ["9L1"], - wideguard: ["9L1"], - wildcharge: ["9L1"], - willowisp: ["9L1"], - wingattack: ["9L1"], - workup: ["9L1"], - }, - }, - jindahaad: { - learnset: { - ancientpower: ["9L1"], - arcticshriek: ["9L1"], - autotomize: ["9L1"], - bleakwindstorm: ["9L1"], - blizzard: ["9L1"], - block: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - bulldoze: ["9L1"], - calmmind: ["9L1"], - chillingwater: ["9L1"], - convectionnova: ["9L1"], - chillyreception: ["9L1"], - clearsmog: ["9L1"], - coil: ["9L1"], - coldsnap: ["9L1"], - courtchange: ["9L1"], - crushgrip: ["9L1"], - doomdesire: ["9L1"], - dragonbreath: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - endure: ["9L1"], - expandingforce: ["9L1"], - facade: ["9L1"], - flashcannon: ["9L1"], - freezedry: ["9L1"], - frostbreath: ["9L1"], - glacialgale: ["9L1"], - glare: ["9L1"], - gravity: ["9L1"], - gust: ["9L1"], - haze: ["9L1"], - hyperbeam: ["9L1"], - irondefense: ["9L1"], - irontail: ["9L1"], - laserfocus: ["9L1"], - magiccoat: ["9L1"], - magnetrise: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - metalsound: ["9L1"], - meteorbeam: ["9L1"], - mist: ["9L1"], - mistball: ["9L1"], - mountaingale: ["9L1"], - naturepower: ["9L1"], - nobleroar: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockclimb: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - screech: ["9L1"], - shiftgear: ["9L1"], - smackdown: ["9L1"], - stealthrock: ["9L1"], - steamroller: ["9L1"], - steelroller: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - terrainpulse: ["9L1"], - topsyturvy: ["9L1"], - weatherball: ["9L1"], - wideguard: ["9L1"], - wrap: ["9L1"], - }, - }, - goldeus: { - learnset: { - alluringvoice: ["9L1"], - anchorshot: ["9L1"], - ancientpower: ["9L1"], - aquaring: ["9L1"], - recover: ["9L1"], - attract: ["9L1"], - bewitchedbubble: ["9L1"], - bite: ["9L1"], - blizzard: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - calmmind: ["9L1"], - chillingwater: ["9L1"], - cosmicpower: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flashcannon: ["9L1"], - growl: ["9L1"], - hardpress: ["9L1"], - headcharge: ["9L1"], - headbutt: ["9L1"], - heavyslam: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - jawlock: ["9L1"], - leer: ["9L1"], - lifedew: ["9L1"], - lightscreen: ["9L1"], - luckychant: ["9L1"], - makeitrain: ["9L1"], - megahorn: ["9L1"], - metalsound: ["9L1"], - muddywater: ["9L1"], - nobleroar: ["9L1"], - originpulse: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - safeguard: ["9L1"], - shedtail: ["9L1"], - soak: ["9L1"], - steelbeam: ["9L1"], - steelroller: ["9L1"], - storedpower: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - watersport: ["9L1"], - waterspout: ["9L1"], - wavecrash: ["9L1"], - whirlpool: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - azurelos: { - learnset: { - acrobatics: ["9L1"], - aerialace: ["9L1"], - aeroblast: ["9L1"], - agility: ["9L1"], - aircutter: ["9L1"], - airslash: ["9L1"], - attract: ["9L1"], - blastburn: ["9L1"], - blazeball: ["9L1"], - bodyslam: ["9L1"], - bravebird: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - clearsmog: ["9L1"], - crosspoison: ["9L1"], - crunch: ["9L1"], - cutwingbarrage: ["9L1"], - defog: ["9L1"], - doubleedge: ["9L1"], - dragoncheer: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - dualwingbeat: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - firespin: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - fly: ["9L1"], - gunkshot: ["9L1"], - heatwave: ["9L1"], - honeclaws: ["9L1"], - hurricane: ["9L1"], - outrage: ["9L1"], - overheat: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - roost: ["9L1"], - seismictoss: ["9L1"], - skyattack: ["9L1"], - sludgewave: ["9L1"], - substitute: ["9L1"], - swift: ["9L1"], - swordsdance: ["9L1"], - tailslap: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - venoshock: ["9L1"], - wingattack: ["9L1"], - }, - }, - pinkthian: { - learnset: { - aerialace: ["9L1"], - aromaticmist: ["9L1"], - attract: ["9L1"], - banefulbunker: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - blazeball: ["9L1"], - bodyslam: ["9L1"], - bravebird: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - charm: ["9L1"], - confide: ["9L1"], - counter: ["9L1"], - craftyshield: ["9L1"], - crosspoison: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - dig: ["9L1"], - direclaw: ["9L1"], - doubleedge: ["9L1"], - doublekick: ["9L1"], - dragontail: ["9L1"], - drainingkiss: ["9L1"], - earthquake: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - furycutter: ["9L1"], - furyswipes: ["9L1"], - gunkshot: ["9L1"], - highhorsepower: ["9L1"], - horndrill: ["9L1"], - mortalspin: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - playrough: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - purify: ["9L1"], - quash: ["9L1"], - ragingfury: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - roughhouse: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - spiritbreak: ["9L1"], - strangesteam: ["9L1"], - substitute: ["9L1"], - superfang: ["9L1"], - tailslap: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - uturn: ["9L1"], - }, - }, - stygiogre: { - learnset: { - agility: ["9L1"], - attract: ["9L1"], - aurasphere: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - bugbuzz: ["9L1"], - bulkup: ["9L1"], - confide: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - doubleedge: ["9L1"], - doubleteam: ["9L1"], - dracometeor: ["9L1"], - dracophage: ["9L1"], - dragonbreath: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - drainpunch: ["9L1"], - dualchop: ["9L1"], - endure: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - gigaimpact: ["9L1"], - headbutt: ["9L1"], - howl: ["9L1"], - hyperbeam: ["9L1"], - icefang: ["9L1"], - infestation: ["9L1"], - irontail: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - magnetrise: ["9L1"], - megakick: ["9L1"], - megapunch: ["9L1"], - mimic: ["9L1"], - nobleroar: ["9L1"], - outrage: ["9L1"], - playrough: ["9L1"], - protect: ["9L1"], - quickattack: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - roughhouse: ["9L1"], - round: ["9L1"], - snarl: ["9L1"], - snore: ["9L1"], - strength: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swagger: ["9L1"], - swift: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - uproar: ["9L1"], - workup: ["9L1"], - attackorder: ["9L1"], - defendorder: ["9L1"], - healorder: ["9L1"], - }, - }, - akuravashimu: { - learnset: { - amnesia: ["9L1"], - aurorabeam: ["9L1"], - block: ["9L1"], - bugbite: ["9L1"], - camouflage: ["9L1"], - cloakingglow: ["9L1"], - cosmicpower: ["9L1"], - crushclaw: ["9L1"], - selenitebeam: ["9L1"], - dazzlinggleam: ["9L1"], - decorate: ["9L1"], - detect: ["9L1"], - devour: ["9L1"], - dig: ["9L1"], - discharge: ["9L1"], - earthpower: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - falsesurrender: ["9L1"], - falseswipe: ["9L1"], - fellstinger: ["9L1"], - flashcannon: ["9L1"], - foulplay: ["9L1"], - hyperbeam: ["9L1"], - irontail: ["9L1"], - laserfocus: ["9L1"], - lightscreen: ["9L1"], - meteorbeam: ["9L1"], - mirrorshot: ["9L1"], - morningsun: ["9L1"], - powergem: ["9L1"], - prismaticlaser: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - recycle: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - rocksmash: ["9L1"], - sandstorm: ["9L1"], - shellsidearm: ["9L1"], - shelter: ["9L1"], - signalbeam: ["9L1"], - snaptrap: ["9L1"], - solarbeam: ["9L1"], - spikes: ["9L1"], - spiritbreak: ["9L1"], - steelbeam: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - sunnyday: ["9L1"], - swordsdance: ["9L1"], - tailglow: ["9L1"], - terablast: ["9L1"], - terastarstorm: ["9L1"], - thunderwave: ["9L1"], - twinbeam: ["9L1"], - }, - }, - estrellian: { - learnset: { - acrobatics: ["9L1"], - aerialace: ["9L1"], - agility: ["9L1"], - aircutter: ["9L1"], - airslash: ["9L1"], - attackorder: ["9L1"], - cutwingbarrage: ["9L1"], - defog: ["9L1"], - flareblitz: ["9L1"], - aurasphere: ["9L1"], - bounce: ["9L1"], - bravebird: ["9L1"], - bugbuzz: ["9L1"], - butterflight: ["9L1"], - butterflare: ["9L1"], - captivate: ["9L1"], - chipaway: ["9L1"], - defendorder: ["9L1"], - dualchop: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - firefang: ["9L1"], - firelash: ["9L1"], - firepunch: ["9L1"], - firespin: ["9L1"], - firstimpression: ["9L1"], - flamecharge: ["9L1"], - focusblast: ["9L1"], - grassyglide: ["9L1"], - healorder: ["9L1"], - hypervoice: ["9L1"], - instruct: ["9L1"], - irontail: ["9L1"], - jumpkick: ["9L1"], - lunarblessing: ["9L1"], - lunardance: ["9L1"], - lunge: ["9L1"], - mysticalpower: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - psyshock: ["9L1"], - quickattack: ["9L1"], - quiverdance: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - scorchingsands: ["9L1"], - searingshot: ["9L1"], - silktrap: ["9L1"], - solarbeam: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - sweetscent: ["9L1"], - tailslap: ["9L1"], - tailwhip: ["9L1"], - terablast: ["9L1"], - trumpcard: ["9L1"], - uturn: ["9L1"], - upperhand: ["9L1"], - victorydance: ["9L1"], - dragontail: ["9L1"], - }, - }, - doomtrellian: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - attackorder: ["9L1"], - bounce: ["9L1"], - blazekick: ["9L1"], - bugbuzz: ["9L1"], - butterflare: ["9L1"], - captivate: ["9L1"], - chipaway: ["9L1"], - crunch: ["9L1"], - defendorder: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - firepunch: ["9L1"], - firespin: ["9L1"], - firstimpression: ["9L1"], - flamecharge: ["9L1"], - gracefulsweep: ["9L1"], - healorder: ["9L1"], - honeclaws: ["9L1"], - hypervoice: ["9L1"], - instruct: ["9L1"], - irontail: ["9L1"], - jumpkick: ["9L1"], - lunge: ["9L1"], - moonblast: ["9L1"], - nightdaze: ["9L1"], - nightshade: ["9L1"], - playrough: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - quickattack: ["9L1"], - ragingfury: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - shadowclaw: ["9L1"], - spiritbreak: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - sweetscent: ["9L1"], - tailslap: ["9L1"], - tailwhip: ["9L1"], - temperflare: ["9L1"], - terablast: ["9L1"], - trumpcard: ["9L1"], - uturn: ["9L1"], - upperhand: ["9L1"], - victorydance: ["9L1"], - dragontail: ["9L1"], - }, - }, - arbitrellian: { - learnset: { - acrobatics: ["9L1"], - aerialace: ["9L1"], - agility: ["9L1"], - attackorder: ["9L1"], - aurasphere: ["9L1"], - blazeball: ["9L1"], - bounce: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - bugbuzz: ["9L1"], - butterflare: ["9L1"], - captivate: ["9L1"], - dracometeor: ["9L1"], - dragonbreath: ["9L1"], - dragonclaw: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - earthpower: ["9L1"], - electroball: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - firespin: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - heatcrash: ["9L1"], - hypervoice: ["9L1"], - immolationorder: ["9L1"], - instruct: ["9L1"], - lunge: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - quiverdance: ["9L1"], - ragingfury: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - sweetscent: ["9L1"], - tailslap: ["9L1"], - tailwhip: ["9L1"], - terablast: ["9L1"], - trumpcard: ["9L1"], - uturn: ["9L1"], - dragontail: ["9L1"], - }, - }, - duremudira: { - learnset: { - aurasphere: ["9L1"], - auroraveil: ["9L1"], - avalanche: ["9L1"], - bite: ["9L1"], - noretreat: ["9L1"], - blizzard: ["9L1"], - bodyslam: ["9L1"], - noxioustorque: ["9L1"], - virulentvolley: ["9L1"], - brickbreak: ["9L1"], - crosspoison: ["9L1"], - crushclaw: ["9L1"], - cut: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dualwingbeat: ["9L1"], - endure: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - feint: ["9L1"], - frostbreath: ["9L1"], - furyswipes: ["9L1"], - glacialgale: ["9L1"], - gunkshot: ["9L1"], - haze: ["9L1"], - honeclaws: ["9L1"], - hypervoice: ["9L1"], - icebeam: ["9L1"], - icefang: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - iciclecrash: ["9L1"], - iciclespear: ["9L1"], - icywind: ["9L1"], - mist: ["9L1"], - nightslash: ["9L1"], - outrage: ["9L1"], - poisonfang: ["9L1"], - poisongas: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - poisonsting: ["9L1"], - protect: ["9L1"], - punishment: ["9L1"], - pursuit: ["9L1"], - quickattack: ["9L1"], - quickguard: ["9L1"], - rest: ["9L1"], - reversal: ["9L1"], - roar: ["9L1"], - rocksmash: ["9L1"], - scratch: ["9L1"], - sheercold: ["9L1"], - skyuppercut: ["9L1"], - slash: ["9L1"], - sludge: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - snowscape: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swift: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - upperhand: ["9L1"], - venomdrench: ["9L1"], - venoshock: ["9L1"], - }, - }, - oltura: { - learnset: { - aurorabeam: ["9L1"], - brine: ["9L1"], - charge: ["9L1"], - chargebeam: ["9L1"], - cloakingglow: ["9L1"], - dazzlinggleam: ["9L1"], - disable: ["9L1"], - dragontail: ["9L1"], - endure: ["9L1"], - eternabeam: ["9L1"], - expandingforce: ["9L1"], - facade: ["9L1"], - ficklebeam: ["9L1"], - firepledge: ["9L1"], - flashcannon: ["9L1"], - focusblast: ["9L1"], - glaciate: ["9L1"], - hurricane: ["9L1"], - hyperbeam: ["9L1"], - icebeam: ["9L1"], - lightscreen: ["9L1"], - lightofruin: ["9L1"], - lunarblessing: ["9L1"], - magicalleaf: ["9L1"], - moonblast: ["9L1"], - mysticalfire: ["9L1"], - oblivionwing: ["9L1"], - powerswap: ["9L1"], - powertrick: ["9L1"], - prismaticlaser: ["9L1"], - protect: ["9L1"], - psychicterrain: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - ruination: ["9L1"], - shadowball: ["9L1"], - signalbeam: ["9L1"], - silverwind: ["9L1"], - snipeshot: ["9L1"], - soak: ["9L1"], - solarbeam: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - terablast: ["9L1"], - terastarstorm: ["9L1"], - thunderbolt: ["9L1"], - triattack: ["9L1"], - twinbeam: ["9L1"], - wildboltstorm: ["9L1"], - }, - }, - olturalarval: { - learnset: { - belch: ["9L1"], - bide: ["9L1"], - bite: ["9L1"], - block: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - bugbite: ["9L1"], - mentalload: ["9L1"], - clamp: ["9L1"], - confuseray: ["9L1"], - constrict: ["9L1"], - crunch: ["9L1"], - crushgrip: ["9L1"], - devour: ["9L1"], - dig: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fellstinger: ["9L1"], - firefang: ["9L1"], - flash: ["9L1"], - freezingglare: ["9L1"], - gigaimpact: ["9L1"], - glare: ["9L1"], - guillotine: ["9L1"], - hypnosis: ["9L1"], - infestation: ["9L1"], - irontail: ["9L1"], - jawlock: ["9L1"], - laserfocus: ["9L1"], - leechlife: ["9L1"], - lockon: ["9L1"], - lunge: ["9L1"], - magnitude: ["9L1"], - naturepower: ["9L1"], - phlegmshot: ["9L1"], - photongeyser: ["9L1"], - poisonfang: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - psyshieldbash: ["9L1"], - pursuit: ["9L1"], - rageray: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - roughhouse: ["9L1"], - scaryface: ["9L1"], - smackdown: ["9L1"], - snaptrap: ["9L1"], - spiritbreak: ["9L1"], - spotlight: ["9L1"], - steamroller: ["9L1"], - substitute: ["9L1"], - swallow: ["9L1"], - terablast: ["9L1"], - torment: ["9L1"], - workup: ["9L1"], - wrap: ["9L1"], - }, - }, - ebogaron: { - learnset: { - acrobatics: ["9L1"], - acupressure: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - bite: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - closecombat: ["9L1"], - cruelclaw: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - cut: ["9L1"], - destinybond: ["9L1"], - devour: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonrush: ["9L1"], - dragontail: ["9L1"], - embargo: ["9L1"], - endure: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - fling: ["9L1"], - forcepalm: ["9L1"], - foulplay: ["9L1"], - growl: ["9L1"], - honeclaws: ["9L1"], - howl: ["9L1"], - hyperdrill: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - lunge: ["9L1"], - meanlook: ["9L1"], - metalclaw: ["9L1"], - nastyplot: ["9L1"], - nightslash: ["9L1"], - outrage: ["9L1"], - painsplit: ["9L1"], - poisonjab: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - quash: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - scaryface: ["9L1"], - shadowsneak: ["9L1"], - snarl: ["9L1"], - spiritbreak: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - dragonpulse: ["9L1"], - }, - }, - purpleludroth: { - learnset: { - acid: ["9L1"], - acidarmor: ["9L1"], - acidspray: ["9L1"], - attract: ["9L1"], - banefulbunker: ["9L1"], - batonpass: ["9L1"], - belch: ["9L1"], - bite: ["9L1"], - bodyslam: ["9L1"], - clearsmog: ["9L1"], - coil: ["9L1"], - corrosivegas: ["9L1"], - covet: ["9L1"], - decorate: ["9L1"], - doubleedge: ["9L1"], - doubleteam: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - focusenergy: ["9L1"], - gastroacid: ["9L1"], - gigaimpact: ["9L1"], - glare: ["9L1"], - growl: ["9L1"], - gunkshot: ["9L1"], - haze: ["9L1"], - headbutt: ["9L1"], - healbell: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - lastresort: ["9L1"], - mortalspin: ["9L1"], - mudslap: ["9L1"], - muddywater: ["9L1"], - noxioustorque: ["9L1"], - poisonfang: ["9L1"], - poisongas: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - purify: ["9L1"], - quickattack: ["9L1"], - recover: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - sandattack: ["9L1"], - sludge: ["9L1"], - sludgebomb: ["9L1"], - sludgewave:["9L1"], - smog: ["9L1"], - snore: ["9L1"], - storedpower: ["9L1"], - substitute: ["9L1"], - swift: ["9L1"], - tackle: ["9L1"], - tailslap: ["9L1"], - tailwhip: ["9L1"], - takedown: ["9L1"], - terablast: ["9L1"], - tidyup: ["9L1"], - toxic: ["9L1"], - venomdrench: ["9L1"], - venoshock: ["9L1"], - weatherball: ["9L1"], - workup: ["9L1"], - }, - }, - xuwu: { - learnset: { - assurance: ["9L1"], - astonish: ["9L1"], - beatup: ["9L1"], - behemothblade: ["9L1"], - bind: ["9L1"], - bite: ["9L1"], - brutalswing: ["9L1"], - bulletpunch: ["9L1"], - ceaselessedge: ["9L1"], - chipaway: ["9L1"], - confuseray: ["9L1"], - constrict: ["9L1"], - crosschop: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - curse: ["9L1"], - cut: ["9L1"], - darkpulse: ["9L1"], - darkestlariat: ["9L1"], - destinybond: ["9L1"], - devour: ["9L1"], - dig: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - falsesurrender: ["9L1"], - falseswipe: ["9L1"], - feintattack: ["9L1"], - fling: ["9L1"], - foulplay: ["9L1"], - furyswipes: ["9L1"], - grudge: ["9L1"], - hex: ["9L1"], - ironhead: ["9L1"], - knockoff: ["9L1"], - kowtowcleave: ["9L1"], - lashout: ["9L1"], - leechlife: ["9L1"], - makeitrain: ["9L1"], - memento: ["9L1"], - metalclaw: ["9L1"], - nastyplot: ["9L1"], - needlearm: ["9L1"], - nightshade: ["9L1"], - nightslash: ["9L1"], - nightmare: ["9L1"], - partingshot: ["9L1"], - payback: ["9L1"], - phantomforce: ["9L1"], - poltergeist: ["9L1"], - protect: ["9L1"], - psychocut: ["9L1"], - punishment: ["9L1"], - pursuit: ["9L1"], - quickattack: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - scaryface: ["9L1"], - scratch: ["9L1"], - shadowball: ["9L1"], - shadowclaw: ["9L1"], - shadowsneak: ["9L1"], - slash: ["9L1"], - smartstrike: ["9L1"], - spite: ["9L1"], - stormthrow: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - switcheroo: ["9L1"], - swordsdance: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - thousandblades: ["9L1"], - throatchop: ["9L1"], - topsyturvy: ["9L1"], - uturn: ["9L1"], - wrap: ["9L1"], - xscissor: ["9L1"], - }, - }, - oroshirin: { - learnset: { - agility: ["9L1"], - attract: ["9L1"], - aurorabeam: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - calmmind: ["9L1"], - coldsnap: ["9L1"], - confuseray: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - endure: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - glaciallance: ["9L1"], - growl: ["9L1"], - shadowsneak: ["9L1"], - grudge: ["9L1"], - hex: ["9L1"], - highhorsepower: ["9L1"], - highjumpkick: ["9L1"], - icespinner: ["9L1"], - iciclecrash: ["9L1"], - iciclespear: ["9L1"], - leer: ["9L1"], - megahorn: ["9L1"], - nastyplot: ["9L1"], - phantomforce: ["9L1"], - playrough: ["9L1"], - poltergeist: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - shadowball: ["9L1"], - shadowforce: ["9L1"], - snarl: ["9L1"], - spite: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - }, - }, - terrataur: { - learnset: { - accelerock: ["9L1"], - stoneaxe: ["9L1"], - aquacutter: ["9L1"], - attract: ["9L1"], - bodyslam: ["9L1"], - bounce: ["9L1"], - bubblebeam: ["9L1"], - confide: ["9L1"], - stealthrock: ["9L1"], - crabhammer: ["9L1"], - cut: ["9L1"], - mightycleave: ["9L1"], - dig: ["9L1"], - dive: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - firelash: ["9L1"], - flail: ["9L1"], - flamecharge: ["9L1"], - flipturn: ["9L1"], - foulplay: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - guillotine: ["9L1"], - helpinghand: ["9L1"], - honeclaws: ["9L1"], - hyperbeam: ["9L1"], - knockoff: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - pounce: ["9L1"], - protect: ["9L1"], - psychocut: ["9L1"], - rapidspin: ["9L1"], - razorshell: ["9L1"], - rest: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - rollout: ["9L1"], - round: ["9L1"], - scaryface: ["9L1"], - sharpen: ["9L1"], - shellsmash: ["9L1"], - slash: ["9L1"], - smackdown: ["9L1"], - snore: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - takedown: ["9L1"], - tarshot: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - uturn: ["9L1"], - visegrip: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - wideguard: ["9L1"], - xscissor: ["9L1"], - }, - }, - coralpukei: { - learnset: { - acidarmor: ["9L1"], - roost: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - aircutter: ["9L1"], - airslash: ["9L1"], - aquatail: ["9L1"], - attract: ["9L1"], - babydolleyes: ["9L1"], - bodyslam: ["9L1"], - calmmind: ["9L1"], - camouflage: ["9L1"], - charm: ["9L1"], - chillingwater: ["9L1"], - clearsmog: ["9L1"], - coldsnap: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flipturn: ["9L1"], - haze: ["9L1"], - healbell: ["9L1"], - healpulse: ["9L1"], - helpinghand: ["9L1"], - hex: ["9L1"], - hurricane: ["9L1"], - hydrocannon: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - icespinner: ["9L1"], - icywind: ["9L1"], - lick: ["9L1"], - lifedew: ["9L1"], - magiccoat: ["9L1"], - makeitrain: ["9L1"], - memento: ["9L1"], - mist: ["9L1"], - mistyterrain: ["9L1"], - pluck: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - scald: ["9L1"], - scratch: ["9L1"], - slimyspit: ["9L1"], - snipeshot: ["9L1"], - snore: ["9L1"], - soak: ["9L1"], - spitup: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - swallow: ["9L1"], - sweetlick: ["9L1"], - sweetscent: ["9L1"], - swift: ["9L1"], - tailslap: ["9L1"], - terablast: ["9L1"], - thunderwave: ["9L1"], - trick: ["9L1"], - twinbeam: ["9L1"], - waterpulse: ["9L1"], - watersport: ["9L1"], - weatherball: ["9L1"], - whirlpool: ["9L1"], - }, - }, - rustramboros: { - learnset: { - acrobatics: ["9L1"], - aircutter: ["9L1"], - attract: ["9L1"], - bleakwindstorm: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bounce: ["9L1"], - bravebird: ["9L1"], - breakingswipe: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - chipaway: ["9L1"], - confide: ["9L1"], - crunch: ["9L1"], - dig: ["9L1"], - doubleedge: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - fly: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - headlongrush: ["9L1"], - highhorsepower: ["9L1"], - hurricane: ["9L1"], - lashout: ["9L1"], - leer: ["9L1"], - milkdrink: ["9L1"], - mudbomb: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - shoreup: ["9L1"], - skyattack: ["9L1"], - spikes: ["9L1"], - stompingtantrum: ["9L1"], - stoneaxe: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - tackle: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - thousandwaves: ["9L1"], - whirlwind: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - ajarakan: { - learnset: { - acupressure: ["9L1"], - armthrust: ["9L1"], - drainpunch: ["9L1"], - blazekick: ["9L1"], - blazingtorque: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - bulkup: ["9L1"], - chipaway: ["9L1"], - closecombat: ["9L1"], - crosschop: ["9L1"], - crushgrip: ["9L1"], - encore: ["9L1"], - endure: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - finalgambit: ["9L1"], - firepunch: ["9L1"], - flamecharge: ["9L1"], - flareblitz: ["9L1"], - focuspunch: ["9L1"], - growl: ["9L1"], - hammerarm: ["9L1"], - hyperfang: ["9L1"], - machpunch: ["9L1"], - magmastorm: ["9L1"], - magmasurge: ["9L1"], - meanlook: ["9L1"], - megapunch: ["9L1"], - meteorassault: ["9L1"], - morningsun: ["9L1"], - outrage: ["9L1"], - pound: ["9L1"], - protect: ["9L1"], - quickattack: ["9L1"], - ragingfury: ["9L1"], - rest: ["9L1"], - rockclimb: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - roughhouse: ["9L1"], - scaleshot: ["9L1"], - shelltrap: ["9L1"], - skyuppercut: ["9L1"], - stealthrock: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - sunnyday: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thrash: ["9L1"], - upperhand: ["9L1"], - workup: ["9L1"], - powderkeg: ["9L1"], - }, - }, - emgalala: { - learnset: { - acid: ["9L1"], - acidspray: ["9L1"], - acidarmor: ["9L1"], - aromatherapy: ["9L1"], - attract: ["9L1"], - belch: ["9L1"], - bellydrum: ["9L1"], - bodyslam: ["9L1"], - chloroblast: ["9L1"], - clearsmog: ["9L1"], - covet: ["9L1"], - crunch: ["9L1"], - direclaw: ["9L1"], - drumbeating: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flamethrower: ["9L1"], - fling: ["9L1"], - flowertrick: ["9L1"], - gigadrain: ["9L1"], - growl: ["9L1"], - ingrain: ["9L1"], - junglehealing: ["9L1"], - leechseed: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - megadrain: ["9L1"], - nastyplot: ["9L1"], - naturalgift: ["9L1"], - poisongas: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - pollenpuff: ["9L1"], - powderkeg: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - recycle: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - screech: ["9L1"], - seedbomb: ["9L1"], - seismictoss: ["9L1"], - slackoff: ["9L1"], - sludge: ["9L1"], - sludgebomb: ["9L1"], - snarl: ["9L1"], - snatch: ["9L1"], - spicyextract: ["9L1"], - spore: ["9L1"], - stinkbomb: ["9L1"], - stuffcheeks: ["9L1"], - stunspore: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - syrupbomb: ["9L1"], - tackle: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - trailblaze: ["9L1"], - trick: ["9L1"], - venomdrench: ["9L1"], - }, - }, - tartaronis: { - learnset: { - ancientpower: ["9L1"], - barrage: ["9L1"], - bide: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - boomburst: ["9L1"], - bounce: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - bulldoze: ["9L1"], - defog: ["9L1"], - dig: ["9L1"], - dracometeor: ["9L1"], - dragonbreath: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - focusblast: ["9L1"], - headsmash: ["9L1"], - heatwave: ["9L1"], - heavyslam: ["9L1"], - hurricane: ["9L1"], - hypervoice: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - lockon: ["9L1"], - megahorn: ["9L1"], - metalsound: ["9L1"], - mudbomb: ["9L1"], - nastyplot: ["9L1"], - nobleroar: ["9L1"], - ominouswind: ["9L1"], - protect: ["9L1"], - quicksandbreath: ["9L1"], - rest: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - sandattack: ["9L1"], - sandtomb: ["9L1"], - sandstorm: ["9L1"], - screech: ["9L1"], - shelter: ["9L1"], - skullbash: ["9L1"], - skyattack: ["9L1"], - spikecannon: ["9L1"], - stealthrock: ["9L1"], - steamroller: ["9L1"], - submission: ["9L1"], - substitute: ["9L1"], - tailwind: ["9L1"], - terablast: ["9L1"], - twister: ["9L1"], - uturn: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - wideguard: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - inferonis: { - learnset: { - ancientpower: ["9L1"], - attackorder: ["9L1"], - barrage: ["9L1"], - bide: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - boomburst: ["9L1"], - bounce: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - bulldoze: ["9L1"], - defog: ["9L1"], - dig: ["9L1"], - earthpower: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - glidebomb: ["9L1"], - headsmash: ["9L1"], - heatcrash: ["9L1"], - heatwave: ["9L1"], - hurricane: ["9L1"], - hypervoice: ["9L1"], - ironhead: ["9L1"], - jawlock: ["9L1"], - lockon: ["9L1"], - magmastorm: ["9L1"], - megahorn: ["9L1"], - mudbomb: ["9L1"], - nastyplot: ["9L1"], - nobleroar: ["9L1"], - ominouswind: ["9L1"], - overheat: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - sandtomb: ["9L1"], - sandsearstorm: ["9L1"], - scorchingsands: ["9L1"], - screech: ["9L1"], - shelltrap: ["9L1"], - shelter: ["9L1"], - spikecannon: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - terablast: ["9L1"], - uturn: ["9L1"], - weatherball: ["9L1"], - wideguard: ["9L1"], - }, - }, - hallowedmohran: { - learnset: { - acupressure: ["9L1"], - ancientpower: ["9L1"], - mentalload: ["9L1"], - bodyslam: ["9L1"], - calmmind: ["9L1"], - cloakingglow: ["9L1"], - destinybond: ["9L1"], - diamondstorm: ["9L1"], - dig: ["9L1"], - drillrun: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fissure: ["9L1"], - headcharge: ["9L1"], - hex: ["9L1"], - landswrath: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - meteorbeam: ["9L1"], - moonblast: ["9L1"], - moonlight: ["9L1"], - naturepower: ["9L1"], - nightshade: ["9L1"], - obstruct: ["9L1"], - outrage: ["9L1"], - painsplit: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockpolish: ["9L1"], - rototiller: ["9L1"], - shadowball: ["9L1"], - shadowforce: ["9L1"], - shoreup: ["9L1"], - snarl: ["9L1"], - spite: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - terrainpulse: ["9L1"], - uturn: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - unknown: { - learnset: { - acrobatics: ["9L1"], - airslash: ["9L1"], - blazeball: ["9L1"], - blazingtorque: ["9L1"], - bravebird: ["9L1"], - cruelclaw: ["9L1"], - crunch: ["9L1"], - cutwingbarrage: ["9L1"], - darkpulse: ["9L1"], - direclaw: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - flamecharge: ["9L1"], - flareblitz: ["9L1"], - gunkshot: ["9L1"], - hex: ["9L1"], - hiddenpower: ["9L1"], - hurricane: ["9L1"], - jawlock: ["9L1"], - mortalspin: ["9L1"], - nastyplot: ["9L1"], - overheat: ["9L1"], - poisonjab: ["9L1"], - poisontail: ["9L1"], - protect: ["9L1"], - pursuit: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - roost: ["9L1"], - sludgebomb: ["9L1"], - steelwing: ["9L1"], - substitute: ["9L1"], - supremacysquall: ["9L1"], - swordsdance: ["9L1"], - tailwind: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - willowisp: ["9L1"], - fierywrath: ["9L1"], - powertrip: ["9L1"], - burningjealousy: ["9L1"], - }, - }, - yamakurai: { - learnset: { - acrobatics: ["9L1"], - bestow: ["9L1"], - bind: ["9L1"], - bleakwindstorm: ["9L1"], - mossbomb: ["9L1"], - bodyslam: ["9L1"], - bulletseed: ["9L1"], - camouflage: ["9L1"], - chipaway: ["9L1"], - chloroblast: ["9L1"], - covet: ["9L1"], - crosspoison: ["9L1"], - echoedvoice: ["9L1"], - endeavor: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - gigadrain: ["9L1"], - grassyglide: ["9L1"], - growth: ["9L1"], - leafblade: ["9L1"], - morningsun: ["9L1"], - naturalgift: ["9L1"], - naturepower: ["9L1"], - poisongas: ["9L1"], - poisonpowder: ["9L1"], - powerwhip: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - reversal: ["9L1"], - rockslide: ["9L1"], - rockthrow: ["9L1"], - sleeppowder: ["9L1"], - sludgebomb: ["9L1"], - snaptrap: ["9L1"], - solarbeam: ["9L1"], - solarblade: ["9L1"], - spitup: ["9L1"], - stockpile: ["9L1"], - stunspore: ["9L1"], - substitute: ["9L1"], - swallow: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - }, - }, - balenox: { - learnset: { - assurance: ["9L1"], - biocharge: ["9L1"], - chargebeam: ["9L1"], - coil: ["9L1"], - confuseray: ["9L1"], - darkpulse: ["9L1"], - disable: ["9L1"], - discharge: ["9L1"], - electroweb: ["9L1"], - embargo: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - feintattack: ["9L1"], - firelash: ["9L1"], - fling: ["9L1"], - foulplay: ["9L1"], - hex: ["9L1"], - honeclaws: ["9L1"], - infestation: ["9L1"], - iondeluge: ["9L1"], - knockoff: ["9L1"], - magneticflux: ["9L1"], - nightslash: ["9L1"], - nuzzle: ["9L1"], - painsplit: ["9L1"], - paraboliccharge: ["9L1"], - partingshot: ["9L1"], - payback: ["9L1"], - protect: ["9L1"], - punishment: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - shadowsneak: ["9L1"], - substitute: ["9L1"], - supercellslam: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - throatchop: ["9L1"], - thunderbolt: ["9L1"], - trick: ["9L1"], - voltswitch: ["9L1"], - }, - }, - odibatorasu: { - learnset: { - ancientpower: ["9L1"], - aurasphere: ["9L1"], - barrage: ["9L1"], - bodyslam: ["9L1"], - chipaway: ["9L1"], - crushclaw: ["9L1"], - diamondstorm: ["9L1"], - dragonpulse: ["9L1"], - dreadrockcannon: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flashcannon: ["9L1"], - growl: ["9L1"], - headsmash: ["9L1"], - headlongrush: ["9L1"], - hornattack: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - irondefense: ["9L1"], - meanlook: ["9L1"], - megakick: ["9L1"], - metalburst: ["9L1"], - meteorbeam: ["9L1"], - naturepower: ["9L1"], - nobleroar: ["9L1"], - obstruct: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - quicksandbreath: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - rockwrecker: ["9L1"], - rollout: ["9L1"], - rototiller: ["9L1"], - sandtomb: ["9L1"], - sandstorm: ["9L1"], - shelter: ["9L1"], - shoreup: ["9L1"], - skullbash: ["9L1"], - snore: ["9L1"], - spikecannon: ["9L1"], - stealthrock: ["9L1"], - stomp: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - terrainpulse: ["9L1"], - uproar: ["9L1"], - weatherball: ["9L1"], - whirlwind: ["9L1"], - wideguard: ["9L1"], - }, - }, - landgiacrus: { - learnset: { - agility: ["9L1"], - aquajet: ["9L1"], - aquaring: ["9L1"], - attract: ["9L1"], - bodyslam: ["9L1"], - bulldoze: ["9L1"], - cyclonerend: ["9L1"], - discharge: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - embargo: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - fissure: ["9L1"], - glare: ["9L1"], - growl: ["9L1"], - highhorsepower: ["9L1"], - hydropump: ["9L1"], - irontail: ["9L1"], - jawlock: ["9L1"], - landswrath: ["9L1"], - leer: ["9L1"], - magnitude: ["9L1"], - meanlook: ["9L1"], - muddywater: ["9L1"], - nastyplot: ["9L1"], - nethercurrent: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - quicksandbreath: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rototiller: ["9L1"], - scald: ["9L1"], - smackdown: ["9L1"], - snarl: ["9L1"], - snipeshot: ["9L1"], - soak: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - stompingtantrum: ["9L1"], - substitute: ["9L1"], - surf: ["9L1"], - swagger: ["9L1"], - terablast: ["9L1"], - thundercage: ["9L1"], - voltswitch: ["9L1"], - waterpulse: ["9L1"], - wavecrash: ["9L1"], - wretchedwater: ["9L1"], - }, - }, - ashshanlung: { - learnset: { - attract: ["9L1"], - behemothbash: ["9L1"], - bellydrum: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - bulldoze: ["9L1"], - calmmind: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - devour: ["9L1"], - doubleedge: ["9L1"], - dracometeor: ["9L1"], - dracophage: ["9L1"], - dragonenergy: ["9L1"], - dragonhammer: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - finalgambit: ["9L1"], - firefang: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - followme: ["9L1"], - gigaimpact: ["9L1"], - growl: ["9L1"], - hammerarm: ["9L1"], - heatcrash: ["9L1"], - heatwave: ["9L1"], - heavyslam: ["9L1"], - knockoff: ["9L1"], - leer: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - magmasurge: ["9L1"], - meteorassault: ["9L1"], - nobleroar: ["9L1"], - noretreat: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - refresh: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - ruination: ["9L1"], - scaleshot: ["9L1"], - seismictoss: ["9L1"], - slackoff: ["9L1"], - stealthrock: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunderouskick: ["9L1"], - willowisp: ["9L1"], - }, - }, - blackvios: { - learnset: { - ancientpower: ["9L1"], - armorcannon: ["9L1"], - blazeball: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - ignitionflare: ["9L1"], - bulldoze: ["9L1"], - counter: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - dig: ["9L1"], - doubleedge: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - eruption: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - fissure: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - focusblast: ["9L1"], - gigaimpact: ["9L1"], - headsmash: ["9L1"], - heatbeam: ["9L1"], - heatcrash: ["9L1"], - heavyslam: ["9L1"], - highhorsepower: ["9L1"], - hypnosis: ["9L1"], - irondefense: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - lavaplume: ["9L1"], - magmastorm: ["9L1"], - meteorbeam: ["9L1"], - morningsun: ["9L1"], - mortalspin: ["9L1"], - poisonjab: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - rapidspin: ["9L1"], - rest: ["9L1"], - rockblast: ["9L1"], - rockpolish: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - sandstorm: ["9L1"], - scorchingsands: ["9L1"], - seismictoss: ["9L1"], - shelltrap: ["9L1"], - slackoff: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swordsdance: ["9L1"], - terablast: ["9L1"], - toxic: ["9L1"], - wideguard: ["9L1"], - }, - }, - crysarios: { - learnset: { - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - acidarmor: ["9L1"], - amnesia: ["9L1"], - attract: ["9L1"], - block: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - brutalswing: ["9L1"], - counter: ["9L1"], - craftyshield: ["9L1"], - crunch: ["9L1"], - curse: ["9L1"], - dazzlinggleam: ["9L1"], - doubleedge: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - flamethrower: ["9L1"], - fling: ["9L1"], - focusblast: ["9L1"], - gigaimpact: ["9L1"], - headbutt: ["9L1"], - headsmash: ["9L1"], - heatbeam: ["9L1"], - heavyslam: ["9L1"], - helpinghand: ["9L1"], - highhorsepower: ["9L1"], - hyperbeam: ["9L1"], - lavaplume: ["9L1"], - meteorbeam: ["9L1"], - mistyexplosion: ["9L1"], - mortalspin: ["9L1"], - poisonjab: ["9L1"], - powergem: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - scaryface: ["9L1"], - slackoff: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - stoneedge: ["9L1"], - strangesteam: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - mentalload: ["9L1"], - }, - }, - glanaktor: { - learnset: { - acrobatics: ["9L1"], - agility: ["9L1"], - amnesia: ["9L1"], - naturalgift: ["9L1"], - aurorabeam: ["9L1"], - auroraveil: ["9L1"], - avalanche: ["9L1"], - blizzard: ["9L1"], - breakingswipe: ["9L1"], - brickbreak: ["9L1"], - brutalswing: ["9L1"], - bulkup: ["9L1"], - chillingwater: ["9L1"], - chillyreception: ["9L1"], - chipaway: ["9L1"], - circlethrow: ["9L1"], - clamp: ["9L1"], - coldsnap: ["9L1"], - curse: ["9L1"], - darkestlariat: ["9L1"], - dig: ["9L1"], - dive: ["9L1"], - drillpeck: ["9L1"], - drillrun: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fling: ["9L1"], - freezedry: ["9L1"], - frostbreath: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - glacialgale: ["9L1"], - glaciate: ["9L1"], - haze: ["9L1"], - honeclaws: ["9L1"], - hydropump: ["9L1"], - hyperdrill: ["9L1"], - icebeam: ["9L1"], - icefang: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - iciclecrash: ["9L1"], - iciclespear: ["9L1"], - icywind: ["9L1"], - knockoff: ["9L1"], - lick: ["9L1"], - lifedew: ["9L1"], - lowkick: ["9L1"], - megakick: ["9L1"], - nightslash: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - rollingkick: ["9L1"], - shadowclaw: ["9L1"], - sheercold: ["9L1"], - slash: ["9L1"], - snipeshot: ["9L1"], - snowscape: ["9L1"], - soak: ["9L1"], - spiritbreak: ["9L1"], - spitup: ["9L1"], - stockpile: ["9L1"], - substitute: ["9L1"], - suckerpunch: ["9L1"], - swallow: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thief: ["9L1"], - tickle: ["9L1"], - triplekick: ["9L1"], - wakeupslap: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - watersport: ["9L1"], - tripleaxel: ["9L1"], - }, - }, - greensioth: { - learnset: { - agility: ["9L1"], - aquaring: ["9L1"], - aquatail: ["9L1"], - focusenergy: ["9L1"], - aquacutter: ["9L1"], - bodyslam: ["9L1"], - brutalswing: ["9L1"], - calmmind: ["9L1"], - confide: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - fishiousrend: ["9L1"], - flipturn: ["9L1"], - frostbreath: ["9L1"], - grassknot: ["9L1"], - grassyglide: ["9L1"], - grassyterrain: ["9L1"], - growl: ["9L1"], - haze: ["9L1"], - hyperspacefury: ["9L1"], - icywind: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - sedativespine: ["9L1"], - sleeppowder: ["9L1"], - snipeshot: ["9L1"], - soak: ["9L1"], - solarbeam: ["9L1"], - spore: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - tailslap: ["9L1"], - terablast: ["9L1"], - thunderwave: ["9L1"], - trailblaze: ["9L1"], - tropkick: ["9L1"], - watersport: ["9L1"], - wretchedwater: ["9L1"], - }, - }, - zinogrehowling: { - learnset: { - agility: ["9L1"], - ancientpower: ["9L1"], - attract: ["9L1"], - aurasphere: ["9L1"], - bodyslam: ["9L1"], - boulderpunch: ["9L1"], - bulkup: ["9L1"], - charge: ["9L1"], - chargebeam: ["9L1"], - confide: ["9L1"], - crunch: ["9L1"], - crushclaw: ["9L1"], - discharge: ["9L1"], - doubleedge: ["9L1"], - doubleshock: ["9L1"], - doubleteam: ["9L1"], - drainpunch: ["9L1"], - eerieimpulse: ["9L1"], - electricterrain: ["9L1"], - electrify: ["9L1"], - electroball: ["9L1"], - electrodrift: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - focusblast: ["9L1"], - gigaimpact: ["9L1"], - headbutt: ["9L1"], - howl: ["9L1"], - hyperbeam: ["9L1"], - icefang: ["9L1"], - iondeluge: ["9L1"], - irontail: ["9L1"], - leer: ["9L1"], - lightscreen: ["9L1"], - magnetrise: ["9L1"], - megapunch: ["9L1"], - nobleroar: ["9L1"], - nuzzle: ["9L1"], - plasmafists: ["9L1"], - powergem: ["9L1"], - protect: ["9L1"], - quickattack: ["9L1"], - rest: ["9L1"], - risingvoltage: ["9L1"], - roar: ["9L1"], - roughhouse: ["9L1"], - scaryface: ["9L1"], - shockwave: ["9L1"], - snarl: ["9L1"], - snore: ["9L1"], - spark: ["9L1"], - strength: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - swift: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - thunderfang: ["9L1"], - thunderpunch: ["9L1"], - thunderwave: ["9L1"], - uproar: ["9L1"], - voltswitch: ["9L1"], - volttackle: ["9L1"], - workup: ["9L1"], - }, - }, - palepinas: { - learnset: { - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - acupressure: ["9L1"], - barbbarrage: ["9L1"], - blastburn: ["9L1"], - blazeball: ["9L1"], - bodyslam: ["9L1"], - cut: ["9L1"], - defog: ["9L1"], - explosion: ["9L1"], - ficklebeam: ["9L1"], - fireblast: ["9L1"], - firefang: ["9L1"], - firespin: ["9L1"], - flamethrower: ["9L1"], - flareblitz: ["9L1"], - growth: ["9L1"], - gunkshot: ["9L1"], - headbutt: ["9L1"], - hellflare: ["9L1"], - hurricane: ["9L1"], - ingrain: ["9L1"], - lashout: ["9L1"], - lavaplume: ["9L1"], - magmastorm: ["9L1"], - magmasurge: ["9L1"], - overheat: ["9L1"], - poisonjab: ["9L1"], - poisonsting: ["9L1"], - poisontail: ["9L1"], - slackoff: ["9L1"], - sludgebomb: ["9L1"], - spicyextract: ["9L1"], - stompingtantrum: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - sweetscent: ["9L1"], - temperflare: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - weatherball: ["9L1"], - willowisp: ["9L1"], - pyrotoxicgale: ["9L1"], - }, - }, - redzu: { - learnset: { - attract: ["9L1"], - biocharge: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - charge: ["9L1"], - chargebeam: ["9L1"], - confide: ["9L1"], - confuseray: ["9L1"], - curse: ["9L1"], - defensecurl: ["9L1"], - devour: ["9L1"], - discharge: ["9L1"], - doubleedge: ["9L1"], - dragonpulse: ["9L1"], - dragontail: ["9L1"], - echoedvoice: ["9L1"], - eerieimpulse: ["9L1"], - slimyspit: ["9L1"], - electricterrain: ["9L1"], - electrify: ["9L1"], - electroball: ["9L1"], - electroweb: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - hyperbeam: ["9L1"], - irontail: ["9L1"], - leechlife: ["9L1"], - lightscreen: ["9L1"], - lowkick: ["9L1"], - magneticflux: ["9L1"], - magnetrise: ["9L1"], - overdrive: ["9L1"], - paraboliccharge: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - risingvoltage: ["9L1"], - roar: ["9L1"], - rocksmash: ["9L1"], - round: ["9L1"], - shockwave: ["9L1"], - snore: ["9L1"], - substitute: ["9L1"], - supercellslam: ["9L1"], - swagger: ["9L1"], - swift: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - thundercage: ["9L1"], - thundershock: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - voltswitch: ["9L1"], - wildcharge: ["9L1"], - zapcannon: ["9L1"], - }, - }, - basariossandstone: { - learnset: { - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - acupressure: ["9L1"], - attract: ["9L1"], - barrage: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - chipaway: ["9L1"], - corrosivegas: ["9L1"], - counter: ["9L1"], - crushclaw: ["9L1"], - defensecurl: ["9L1"], - diamondstorm: ["9L1"], - earthquake: ["9L1"], - echoedvoice: ["9L1"], - fissure: ["9L1"], - gravity: ["9L1"], - hammerarm: ["9L1"], - harden: ["9L1"], - hypnosis: ["9L1"], - irondefense: ["9L1"], - irontail: ["9L1"], - mudbomb: ["9L1"], - mudshot: ["9L1"], - mudsport: ["9L1"], - poisongas: ["9L1"], - precipiceblades: ["9L1"], - rapidspin: ["9L1"], - rockslide: ["9L1"], - rototiller: ["9L1"], - sandstorm: ["9L1"], - sandtomb: ["9L1"], - shoreup: ["9L1"], - smokescreen: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - stoneedge: ["9L1"], - submission: ["9L1"], - toxic: ["9L1"], - wideguard: ["9L1"], - }, - }, - shahmadur: { - learnset: { - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - terablast: ["9L1"], - astralbarrage: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - bittermalice: ["9L1"], - bodypress: ["9L1"], - bulkup: ["9L1"], - calmmind: ["9L1"], - clangingscales: ["9L1"], - coil: ["9L1"], - coreenforcer: ["9L1"], - cosmicpower: ["9L1"], - curse: ["9L1"], - dracometeor: ["9L1"], - dragonbreath: ["9L1"], - dragonclaw: ["9L1"], - dragondance: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - dragontail: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - endure: ["9L1"], - eternabeam: ["9L1"], - facade: ["9L1"], - fireblast: ["9L1"], - firelash: ["9L1"], - flamethrower: ["9L1"], - glare: ["9L1"], - growl: ["9L1"], - icebeam: ["9L1"], - iceburn: ["9L1"], - iceshard: ["9L1"], - imprison: ["9L1"], - lightscreen: ["9L1"], - magmastorm: ["9L1"], - magnalance: ["9L1"], - moonlight: ["9L1"], - mountaingale: ["9L1"], - nastyplot: ["9L1"], - powergem: ["9L1"], - powerwhip: ["9L1"], - rockslide: ["9L1"], - sacredfire: ["9L1"], - scaleshot: ["9L1"], - scorchingsands: ["9L1"], - thousandarrows: ["9L1"], - wish: ["9L1"], - }, - }, - deviljhostarving: { - learnset: { - attract: ["9L1"], - axekick: ["9L1"], - bellydrum: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - destinybond: ["9L1"], - devilsjaw: ["9L1"], - devour: ["9L1"], - doublekick: ["9L1"], - dragondance: ["9L1"], - dragonenergy: ["9L1"], - dragonpulse: ["9L1"], - dragonrush: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - finalgambit: ["9L1"], - firefang: ["9L1"], - followme: ["9L1"], - grudge: ["9L1"], - headsmash: ["9L1"], - helpinghand: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - jawlock: ["9L1"], - lick: ["9L1"], - meteorassault: ["9L1"], - outrage: ["9L1"], - poisonfang: ["9L1"], - poltergeist: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - recycle: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - rockslide: ["9L1"], - shadowclaw: ["9L1"], - shedtail: ["9L1"], - slackoff: ["9L1"], - slimyspit: ["9L1"], - stompingtantrum: ["9L1"], - stuffcheeks: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - terablast: ["9L1"], - thunderfang: ["9L1"], - thunderouskick: ["9L1"], - triplekick: ["9L1"], - }, - }, - whiteblos: { - learnset: { - acupressure: ["9L1"], - agility: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bulldoze: ["9L1"], - chipaway: ["9L1"], - closecombat: ["9L1"], - doubleedge: ["9L1"], - dragonrush: ["9L1"], - drillrun: ["9L1"], - honeclaws: ["9L1"], - endure: ["9L1"], - extremespeed: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - growl: ["9L1"], - headbutt: ["9L1"], - headcharge: ["9L1"], - headlongrush: ["9L1"], - headsmash: ["9L1"], - highhorsepower: ["9L1"], - ironhead: ["9L1"], - leer: ["9L1"], - megahorn: ["9L1"], - nightslash: ["9L1"], - outrage: ["9L1"], - protect: ["9L1"], - quickattack: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - rockslide: ["9L1"], - rockwrecker: ["9L1"], - skullbash: ["9L1"], - steelwing: ["9L1"], - stomp: ["9L1"], - stoneedge: ["9L1"], - substitute: ["9L1"], - tackle: ["9L1"], - terablast: ["9L1"], - trailblaze: ["9L1"], - uturn: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, - zamtrios: { - learnset: { - ancientpower: ["9L1"], - aquatail: ["9L1"], - substitute: ["9L1"], - surgingstrikes: ["9L1"], - endure: ["9L1"], - auroraveil: ["9L1"], - avalanche: ["9L1"], - bite: ["9L1"], - blizzard: ["9L1"], - coldsnap: ["9L1"], - bodyslam: ["9L1"], - brine: ["9L1"], - bulkup: ["9L1"], - crunch: ["9L1"], - devour: ["9L1"], - dive: ["9L1"], - dragontail: ["9L1"], - facade: ["9L1"], - frozencleave: ["9L1"], - flipturn: ["9L1"], - freezedry: ["9L1"], - gigaimpact: ["9L1"], - snowscape: ["9L1"], - haze: ["9L1"], - hydropump: ["9L1"], - hyperbeam: ["9L1"], - icebeam: ["9L1"], - icefang: ["9L1"], - iciclecrash: ["9L1"], - iciclespear: ["9L1"], - icespinner: ["9L1"], - icywind: ["9L1"], - ironhead: ["9L1"], - liquidation: ["9L1"], - mightycleave: ["9L1"], - powdersnow: ["9L1"], - protect: ["9L1"], - psychicfangs: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - snore: ["9L1"], - stompingtantrum: ["9L1"], - superfang: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - waterfall: ["9L1"], - watergun: ["9L1"], - wavecrash: ["9L1"], - whirlpool: ["9L1"], - zenheadbutt: ["9L1"], - }, - }, -}; diff --git a/data/mods/monsterhunter/moves.ts b/data/mods/monsterhunter/moves.ts deleted file mode 100644 index 955583ad5e..0000000000 --- a/data/mods/monsterhunter/moves.ts +++ /dev/null @@ -1,3081 +0,0 @@ -export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { - magnalance: { - accuracy: 100, - basePower: 70, - category: "Physical", - name: "Magna Lance", - shortDesc: "Usually goes first. Fails if target is not attacking.", - pp: 5, - priority: 1, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - onTry(source, target) { - const action = this.queue.willMove(target); - const move = action?.choice === 'move' ? action.move : null; - if (!move || (move.category === 'Status' && move.id !== 'mefirst') || target.volatiles['mustrecharge']) { - return false; - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Torch Song", target); - }, - secondary: null, - target: "normal", - type: "Fire", - contestType: "Clever", - }, - eggbarrage: { - accuracy: 90, - basePower: 20, - basePowerCallback(pokemon, target, move) { - return 20 * move.hit; - }, - category: "Physical", - name: "Egg Barrage", - shortDesc: "Hits 3 times. Each hit can miss, but power rises.", - pp: 10, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - multihit: 3, - multiaccuracy: true, - secondary: null, - target: "normal", - type: "Normal", - zMove: { basePower: 120 }, - maxMove: { basePower: 140 }, - }, - glidebomb: { - accuracy: 100, - basePower: 25, - category: "Physical", - name: "Glide Bomb", - shortDesc: "Hits 2-5 times in one turn.", - pp: 30, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - multihit: [2, 5], - secondary: null, - target: "normal", - type: "Fire", - zMove: { basePower: 140 }, - maxMove: { basePower: 130 }, - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Fire Lash", target); - }, - }, - dragonator: { - accuracy: 100, - basePower: 100, - category: "Physical", - name: "Dragonator", - shortDesc: "Cannot be used on consecutive turns. Super-Effective on Dragon-Types. 10% Flinch.", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, cantusetwice: 1 }, - onEffectiveness(typeMod, target, type) { - if (type === 'Dragon') return 1; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Gigaton Hammer", target); - }, - secondary: { - chance: 10, - volatileStatus: 'flinch', - }, - target: "normal", - type: "Steel", - contestType: "Beautiful", - }, - devour: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Devour", - shortDesc: "Heals 25% HP. If holding a berry, eats it and heals 50%.", - pp: 5, - priority: 0, - flags: { snatch: 1, heal: 1, metronome: 1 }, - onHit(pokemon) { - const item = pokemon.getItem().isBerry; - if (item) { - // Heal 50% if berry is present - this.heal(pokemon.baseMaxhp / 2, pokemon); - pokemon.eatItem(true); - this.add('-message', `${pokemon.name} devoured its berry and restored more HP!`); - } else { - // Heal 25% if no berry - this.heal(pokemon.baseMaxhp / 4, pokemon); - this.add('-message', `${pokemon.name} devoured nothing... but still restored some HP!`); - } - }, - secondary: null, - target: "self", - type: "Normal", - contestType: "Beautiful", - }, - wretchedwater: { - accuracy: 100, - basePower: 90, - category: "Special", - name: "Wretched Water", - shortDesc: "30% chance to paralyze the target.", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1 }, - secondary: { - chance: 30, - status: 'par', - }, - target: "allAdjacentFoes", - type: "Water", - contestType: "Cool", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Whirlpool", target); - }, - }, - cutwingbarrage: { - accuracy: 95, - basePower: 90, - category: "Physical", - name: "Cutwing Barrage", - shortDesc: "30% chance to inflict bleed.", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, slicing: 1 }, - secondary: { - chance: 30, - volatileStatus: 'bleeding', - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Aerial Ace", target); - }, - target: "normal", - type: "Flying", - contestType: "Cool", - }, - thunderrush: { - accuracy: 100, - basePower: 60, - category: "Physical", - name: "Thunder Rush", - shortDesc: "Always crits.", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1 }, - willCrit: true, - secondary: null, - target: "normal", - type: "Electric", - contestType: "Cool", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Supercell Slam", target); - }, - }, - frenzyslam: { - accuracy: 95, - basePower: 80, - category: "Special", - name: "Frenzy Slam", - shortDesc: "Summons Reflect. Only usable by Dark-types.", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1 }, - self: { - sideCondition: 'reflect', - }, - secondary: null, - target: "normal", - type: "Dark", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Kowtow Cleave", target); - }, - onTry(source, target, move) { - if (!source.hasType('Dark')) { - this.add('-fail', source, 'move: Frenzy Slam'); - return null; - } - }, - }, - bewitchedbubble: { - accuracy: 100, - basePower: 75, - category: "Special", - name: "Bewitched Bubble", - shortDesc: "User recovers 50% of the damage dealt.", - pp: 20, - priority: 0, - flags: { protect: 1, mirror: 1, heal: 1 }, - drain: [1, 2], - secondary: null, - target: "normal", - type: "Water", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Chilling Water", target); - }, - }, - creepynoise: { - accuracy: 100, - basePower: 50, - category: "Special", - name: "Creepy Noise", - shortDesc: "100% chance to paralyze the foe.", - pp: 20, - priority: 0, - flags: { protect: 1, mirror: 1, sound: 1, bypasssub: 1 }, - secondary: { - chance: 100, - status: 'par', - }, - target: "normal", - type: "Bug", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Bug Buzz", target); - }, - }, - arcticshriek: { - accuracy: 90, - basePower: 100, - category: "Special", - name: "Arctic Shriek", - shortDesc: "Eliminates all stat changes.", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, sound: 1, bypasssub: 1 }, - onHit() { - this.add('-clearallboost'); - for (const pokemon of this.getAllActive()) { - pokemon.clearBoosts(); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Freeze-Dry", target); - }, - secondary: null, - target: "normal", - type: "Ice", - contestType: "Clever", - }, - cloakingglow: { - accuracy: 95, - basePower: 80, - category: "Special", - name: "Cloaking Glow", - shortDesc: "Summons Light Screen.", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1 }, - self: { - sideCondition: 'lightscreen', - }, - secondary: null, - target: "normal", - type: "Psychic", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Luster Purge", target); - }, - }, - mossbomb: { - accuracy: 90, - basePower: 100, - category: "Physical", - name: "Moss Bomb", - shortDesc: "Summons Leech Seed.", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1 }, - onHit(target, source) { - if (target.hasType('Grass')) return null; - target.addVolatile('leechseed', source); - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Seed Bomb", target); - }, - secondary: null, - target: "normal", - type: "Grass", - contestType: "Clever", - }, - magmasurge: { - accuracy: 100, - basePower: 60, - category: "Physical", - name: "Magma Surge", - shortDesc: "100% chance to burn the foe.", - pp: 20, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, defrost: 1 }, - secondary: { - chance: 100, - status: 'brn', - }, - target: "normal", - type: "Fire", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Flame Wheel", target); - }, - }, - apexburst: { - accuracy: 85, - basePower: 110, - category: "Special", - name: "Apex Burst", - shortDesc: "Cures the user's party of all status conditions.", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1 }, - self: { - onHit(pokemon, source, move) { - this.add('-activate', source, 'move: Aromatherapy'); - for (const ally of source.side.pokemon) { - if (ally !== source && (ally.volatiles['substitute'] && !move.infiltrates)) { - ally.cureStatus(); - } - } - }, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Fleur Cannon", target); - this.add('-anim', source, "Aromatherapy", source); - }, - secondary: null, - target: "normal", - type: "Fairy", - contestType: "Clever", - }, - frenzypulse: { - accuracy: 100, - basePower: 100, - category: "Special", - name: "Frenzy Pulse", - shortDesc: "Lowers SpA by 1; Raises Spe by 1.", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - selfBoost: { - boosts: { - spa: -1, - spe: +1, - }, - }, - secondary: null, - target: "normal", - type: "Fairy", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Strange Steam", target); - }, - }, - psychocrush: { - accuracy: 100, - basePower: 95, - category: "Special", - name: "Psycho Crush", - shortDesc: "Summons Gravity.", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1 }, - self: { - pseudoWeather: 'gravity', - }, - secondary: null, - target: "normal", - type: "Psychic", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Psystrike", target); - }, - }, - biocharge: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Biocharge", - shortDesc: "Raises the user's Sp. Atk by 3. Lowest priority.", - pp: 5, - priority: -6, - flags: { snatch: 1, metronome: 1 }, - boosts: { - spa: 3, - }, - secondary: null, - target: "self", - type: "Bug", - zMove: { effect: 'clearnegativeboost' }, - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Parabolic Charge", source); - }, - }, - heatbeam: { - accuracy: 100, - basePower: 100, - category: "Physical", - overrideDefensiveStat: 'spd', - name: "Heat Beam", - shortDesc: "Damages target based on Sp. Def, not Defense.", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: null, - target: "normal", - type: "Fire", - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Heat Wave", target); - }, - }, - boltbreath: { - accuracy: 100, - basePower: 70, - basePowerCallback(pokemon, target, move) { - if (target.newlySwitched || this.queue.willMove(target)) { - this.debug('Bolt Breath damage boost'); - return move.basePower * 2; - } - this.debug('Bolt Breath NOT boosted'); - return move.basePower; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Wildbolt Storm", target); - }, - category: "Special", - name: "Bolt Breath", - shortDesc: "Power doubles if the user moves before the target.", - pp: 10, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - secondary: null, - target: "normal", - type: "Electric", - }, - cyclonerend: { - accuracy: 100, - basePower: 70, - basePowerCallback(pokemon, target, move) { - if (target.newlySwitched || this.queue.willMove(target)) { - this.debug('Cyclone Rend damage boost'); - return move.basePower * 2; - } - this.debug('Cyclone Rend NOT boosted'); - return move.basePower; - }, - category: "Special", - name: "Cyclone Rend", - shortDesc: "Power doubles if the user moves before the target.", - pp: 10, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - secondary: null, - target: "normal", - type: "Water", - }, - coldsnap: { - accuracy: 85, - basePower: 0, - category: "Status", - name: "Cold Snap", - shortDesc: "Freezes the target.", - pp: 15, - priority: 0, - flags: { protect: 1, reflectable: 1, mirror: 1, metronome: 1 }, - status: 'frz', - secondary: null, - target: "normal", - type: "Ice", - zMove: { boost: { spa: 1 } }, - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Mist", target); - }, - }, - blazeball: { - accuracy: 100, - basePower: 95, - category: "Special", - name: "Blaze Ball", - shortDesc: "No additional effect.", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, bullet: 1 }, - secondary: null, - target: "normal", - type: "Fire", - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Pyro Ball", target); - }, - }, - crimsondawn: { - accuracy: 100, - basePower: 130, - category: "Physical", - name: "Crimson Dawn", - shortDesc: "Can't be used consecutively. Fails if user isn't Fire-Type", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, cantusetwice: 1, contact: 1 }, - secondary: null, - target: "normal", - type: "Fire", - onTryMove(pokemon, target, move) { - if (pokemon.hasType('Fire')) return; - this.add('-fail', pokemon, 'move: Crimson Dawn'); - this.attrLastMove('[still]'); - return null; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "V-create", target); - }, - }, - ancestralthunder: { - accuracy: 100, - basePower: 120, - category: "Special", - name: "Ancestral Thunder", - shortDesc: "Can't be used consecutively. Fails if user isn't Electric-Type", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, cantusetwice: 1 }, - secondary: null, - target: "normal", - type: "Electric", - onTryMove(pokemon, target, move) { - if (pokemon.hasType('Electric')) return; - this.add('-fail', pokemon, 'move: Ancestral Thunder'); - this.attrLastMove('[still]'); - return null; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Electro Drift", target); - }, - }, - quicksandbreath: { - accuracy: 75, - basePower: 100, - category: "Special", - shortDesc: "Traps and damages the target for 4-5 turns.", - name: "Quicksand Breath", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - volatileStatus: 'partiallytrapped', - secondary: null, - target: "normal", - type: "Ground", - contestType: "Tough", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Sandsear Storm", target); - }, - }, - sedativespine: { - accuracy: 100, - basePower: 60, - category: "Physical", - name: "Sedative Spine", - shortDesc: "100% chance to make the foe drowsy.", - pp: 20, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1 }, - secondary: { - chance: 100, - status: 'slp', - }, - target: "normal", - type: "Bug", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Leech Life", target); - }, - }, - hellflare: { - accuracy: 100, - basePower: 120, - category: "Special", - name: "Hellflare", - shortDesc: "Hits two turns after being used.", - pp: 10, - priority: 0, - flags: { allyanim: 1, metronome: 1, futuremove: 1 }, - ignoreImmunity: true, - onTry(source, target) { - if (!target.side.addSlotCondition(target, 'futuremove')) return false; - Object.assign(target.side.slotConditions[target.position]['futuremove'], { - duration: 3, - move: 'hellflare', - source, - moveData: { - id: 'hellflare', - name: "Hellflare", - accuracy: 100, - basePower: 120, - category: "Special", - priority: 0, - flags: { allyanim: 1, metronome: 1, futuremove: 1 }, - ignoreImmunity: false, - effectType: 'Move', - type: 'Fire', - }, - }); - this.add('-start', source, 'move: Future Sight'); - return this.NOT_FAIL; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Sacred Fire", target); - }, - secondary: null, - target: "normal", - type: "Fire", - contestType: "Clever", - }, - boulderpunch: { - accuracy: 100, - basePower: 75, - category: "Physical", - name: "Boulder Punch", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, punch: 1, metronome: 1 }, - shortDesc: "50% chance to lower the target's defense.", - secondary: { - chance: 50, - boosts: { - def: -1, - }, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Accelerock", target); - }, - target: "normal", - type: "Rock", - contestType: "Tough", - }, - dragoncharge: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Dragon Charge", - pp: 20, - priority: 0, - flags: { snatch: 1, metronome: 1 }, - volatileStatus: 'dragoncharge', - condition: { - onStart(pokemon, source, effect) { - if (effect && effect.name === 'Wyversion') { - this.add('-start', pokemon, 'Dragon Charge', '[from] ability: Wyversion'); - } else { - this.add('-start', pokemon, 'Dragon Charge'); - } - }, - onRestart(pokemon, source, effect) { - if (effect && effect.name === 'Wyversion') { - this.add('-start', pokemon, 'Dragon Charge', '[from] ability: Wyversion'); - } else { - this.add('-start', pokemon, 'Dragon Charge'); - } - }, - onBasePowerPriority: 9, - onBasePower(basePower, attacker, defender, move) { - if (move.type === 'Dragon') { - this.debug('dragoncharge boost'); - return this.chainModify(2); - } - }, - onMoveAborted(pokemon, target, move) { - if (move.type === 'Dragon' && move.id !== 'dragoncharge') { - pokemon.removeVolatile('dragoncharge'); - } - }, - onAfterMove(pokemon, target, move) { - if (move.type === 'Dragon' && move.id !== 'dragoncharge') { - pokemon.removeVolatile('dragoncharge'); - } - }, - onEnd(pokemon) { - this.add('-end', pokemon, 'Dragon Charge', '[silent]'); - }, - }, - secondary: null, - target: "self", - type: "Dragon", - zMove: { boost: { spd: 1 } }, - contestType: "Clever", - }, - convectionnova: { - accuracy: 100, - basePower: 135, - category: "Special", - name: "Convection Nova", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, cantusetwice: 1 }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Ice Burn", target); - }, - secondary: null, - shortDesc: "Fire moves become Ice type this turn, can't use twice.", - pseudoWeather: 'convection', - target: "allAdjacentFoes", - type: "Ice", - contestType: "Beautiful", - }, - convection: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Convection", - pp: 25, - priority: 1, - flags: { metronome: 1 }, - shortDesc: "Fire moves become Ice type this turn.", - pseudoWeather: 'convection', - condition: { - duration: 1, - onFieldStart(target, source, sourceEffect) { - this.add('-fieldactivate', 'move: Convection'); - this.hint(`Fire-type moves become Ice-type after using ${sourceEffect}.`); - }, - onModifyTypePriority: -2, - onModifyType(move) { - if (move.type === 'Fire') { - move.type = 'Ice'; - this.debug(move.name + "'s type changed to Ice"); - } - }, - }, - secondary: null, - target: "all", - type: "Ice", - zMove: { boost: { spa: 1 } }, - contestType: "Beautiful", - }, - /* - Monhun Status - */ - hellfirerifle: { - accuracy: 100, - basePower: 90, - category: "Physical", - name: "Hellfire Rifle", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1, distance: 1, metronome: 1, pulse: 1 }, - secondary: null, - onAfterMove(pokemon, target, move) { - if (this.randomChance(3, 10)) { - target.addVolatile('blastblight'); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Infernal Parade", target); - }, - shortDesc: "30% chance to inflict blastblight.", - target: "normal", - type: "Ghost", - contestType: "Cool", - }, - slimepunch: { - accuracy: 100, - basePower: 95, - category: "Physical", - name: "Slime Punch", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, punch: 1, metronome: 1 }, - secondary: null, - onAfterMove(pokemon, target, move) { - if (this.randomChance(5, 10)) { - target.addVolatile('blastblight'); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Shell Side Arm", target); - }, - shortDesc: "50% chance to inflict blastblight.", - target: "normal", - type: "Poison", - contestType: "Tough", - }, - powderkeg: { - accuracy: 100, - basePower: 50, - category: "Special", - name: "Powderkeg", - pp: 25, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, powder: 1 }, - secondary: null, - onAfterMove(pokemon, target, move) { - if (this.randomChance(10, 10)) { - target.addVolatile('blastblight'); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Fiery Dance", target); - }, - shortDesc: "Inflicts blastblight.", - target: "normal", - type: "Fire", - contestType: "Clever", - }, - blastbite: { - accuracy: 100, - basePower: 75, - category: "Physical", - name: "Blast Bite", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1, bite: 1 }, - secondaries: [ - { - chance: 10, - volatileStatus: 'flinch', - }, - ], - onAfterMove(pokemon, target, move) { - if (this.randomChance(10, 10)) { - target.addVolatile('blastblight'); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Fire Fang", target); - }, - shortDesc: "Inflicts blast. 10% chance to flinch.", - target: "normal", - type: "Fire", - contestType: "Cool", - }, - abyssaleruption: { - accuracy: 90, - basePower: 130, - category: "Special", - name: "Abyssal Eruption", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - self: { - boosts: { - spa: -2, - }, - }, - secondary: null, - onAfterMove(pokemon, target, move) { - if (this.randomChance(5, 10)) { - target.addVolatile('blastblight'); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Black Hole Eclipse", target); - }, - shortDesc: "Reduces Sp. Atk by 2. 50% chance to inflict blast.", - target: "normal", - type: "Dark", - contestType: "Beautiful", - }, - supremacysquall: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Supremacy Squall", - pp: 5, - priority: 0, - flags: { protect: 1, reflectable: 1, mirror: 1, sound: 1, bypasssub: 1, metronome: 1 }, - secondary: null, - shortDesc: "Inflicts defense down.", - volatileStatus: 'defensedown', - target: "allAdjacentFoes", - type: "Flying", - zMove: { boost: { def: 1 } }, - contestType: "Tough", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Bleakwind Storm", source); - }, - }, - harshsting: { - accuracy: 100, - basePower: 15, - category: "Physical", - name: "Harsh Sting", - pp: 35, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 100, - status: 'defensedown', - }, - shortDesc: "Inflicts defense down.", - target: "normal", - type: "Bug", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Leech Life", target); - }, - }, - decayduster: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Decay Duster", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - volatileStatus: 'defensedown', - shortDesc: "Hits adjacent pokemon. Inflicts defense down.", - secondary: null, - target: "allAdjacent", - type: "Bug", - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Pollen Puff", target); - }, - }, - slimyspit: { - accuracy: 100, - basePower: 50, - category: "Special", - name: "Slimy Spit", - pp: 30, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 100, - volatileStatus: 'defensedown', - }, - shortDesc: "100% chance to inflict Defense Down.", - target: "allAdjacentFoes", - type: "Water", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Snipe Shot", target); - }, - }, - stinkbomb: { - accuracy: 100, - basePower: 90, - category: "Special", - name: "Stink Bomb", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, bullet: 1 }, - secondary: { - chance: 30, - volatileStatus: 'stench', - }, - shortDesc: "30% chance to inflict stench.", - target: "normal", - type: "Poison", - contestType: "Tough", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Sludge Bomb", target); - }, - }, - perfumepulse: { - accuracy: 100, - basePower: 80, - category: "Special", - name: "Perfume Pulse", - shortDesc: "30% chance to inflict Stench.", - pp: 20, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, pulse: 1 }, - secondary: { - chance: 30, - volatileStatus: 'stench', - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Malignant Chain", target); - }, - target: "normal", - type: "Poison", - contestType: "Clever", - }, - phlegmshot: { - accuracy: 80, - basePower: 120, - category: "Physical", - name: "Phlegm Shot", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 30, - volatileStatus: 'fatigue', - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Gunk Shot", target); - }, - shortDesc: "30% chance to inflict fatigue.", - target: "normal", - type: "Poison", - contestType: "Tough", - }, - sweetlick: { - accuracy: 100, - basePower: 50, - category: "Physical", - name: "Sweet Lick", - pp: 30, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - shortDesc: "Inflicts Fatigue.", - secondary: { - chance: 100, - volatileStatus: 'fatigue', - }, - target: "normal", - type: "Poison", - contestType: "Cute", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Poison Tail", target); - }, - }, - roughhouse: { - accuracy: 90, - basePower: 95, - category: "Physical", - name: "Roughhouse", - pp: 10, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 50, - volatileStatus: 'bleeding', - }, - shortDesc: "50% chance to inflict bleeding.", - target: "normal", - type: "Fighting", - contestType: "Cute", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Play Rough", target); - }, - }, - cruelclaw: { - accuracy: 100, - basePower: 75, - category: "Physical", - name: "Cruel Claw", - pp: 10, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - secondaries: [ - { - chance: 50, - boosts: { - def: -1, - }, - }, { - chance: 30, - volatileStatus: 'bleeding', - }, - ], - shortDesc: "50% chance to lower Defense, 30% to bleed.", - target: "normal", - type: "Dark", - contestType: "Cool", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Dire Claw", target); - }, - }, - brimstoneblade: { - accuracy: 100, - basePower: 85, - category: "Physical", - name: "Brimstone Blade", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1, slicing: 1 }, - critRatio: 2, - secondary: { - chance: 100, - volatileStatus: 'bleeding', - }, - shortDesc: "High crit ratio. 100% chance to bleed.", - target: "normal", - type: "Rock", - contestType: "Cool", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Stone Axe", target); - }, - }, - sulfurousblade: { - accuracy: 100, - basePower: 85, - category: "Physical", - name: "Sulfurous Blade", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1, slicing: 1 }, - critRatio: 2, - secondary: { - chance: 10, - volatileStatus: 'defensedown', - }, - shortDesc: "High crit ratio. 30% chance to inflict Def. Down.", - target: "normal", - type: "Poison", - contestType: "Cool", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Cross Poison", target); - }, - }, - thousandblades: { - accuracy: 100, - basePower: 95, - category: "Physical", - name: "Thousand Blades", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1, slicing: 1 }, - critRatio: 2, - secondary: { - chance: 20, - volatileStatus: 'bleeding', - }, - shortDesc: "High crit ratio. 20% chance to bleed.", - target: "normal", - type: "Fighting", - contestType: "Cool", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Triple Arrows", target); - }, - }, - snowballcannon: { - accuracy: 95, - basePower: 90, - category: "Physical", - name: "Snowball Cannon", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 10, - volatileStatus: 'snowman', - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Mountain Gale", target); - }, - shortDesc: "10% chance to trap the foe in a Snowman.", - target: "normal", - type: "Ice", - contestType: "Beautiful", - }, - glacialgale: { - accuracy: 100, - basePower: 85, - category: "Special", - name: "Glacial Gale", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, wind: 1 }, - secondary: { - chance: 10, - volatileStatus: 'snowman', - }, - shortDesc: "10% chance to trap the foe in a Snowman.", - target: "allAdjacentFoes", - type: "Ice", - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Blizzard", target); - }, - }, - oxideairstrike: { - accuracy: 95, - basePower: 70, - category: "Physical", - name: "Oxide Airstrike", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1, distance: 1, metronome: 1 }, - secondary: { - chance: 100, - volatileStatus: 'rusted', - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Dragon Ascent", target); - }, - shortDesc: "100% chance to inflict Rust.", - target: "allAdjacentFoes", - type: "Flying", - contestType: "Cool", - }, - dracophage: { - accuracy: 85, - basePower: 0, - category: "Status", - name: "Dracophage", - pp: 15, - priority: 0, - flags: { protect: 1, reflectable: 1, mirror: 1, metronome: 1 }, - shortDesc: "Dragonblights the opponent.", - status: 'dragonblight', - secondary: null, - target: "normal", - type: "Dragon", - zMove: { boost: { atk: 1 } }, - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Spicy Extract", target); - }, - }, - devilsjaw: { - accuracy: 100, - basePower: 90, - category: "Physical", - name: "Devil's Jaw", - shortDesc: "100% chance to inflict Dragonblight.", - pp: 20, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, bite: 1 }, - secondary: { - chance: 100, - status: 'dragonblight', - }, - target: "normal", - type: "Dragon", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Poison Fang", target); - }, - }, - seraphicshift: { - accuracy: 100, - basePower: 95, - category: "Special", - name: "Seraphic Shift", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, bypasssub: 1 }, - onHit(target, pokemon, move) { - if (pokemon.baseSpecies.baseSpecies === 'Disufiroa' && !pokemon.transformed) { - move.willChangeForme = true; - } - }, - onAfterMoveSecondarySelf(pokemon, target, move) { - if (move.willChangeForme) { - const meloettaForme = pokemon.species.id === 'disufiroasol' ? '' : '-Sol'; - pokemon.formeChange('Disufiroa' + meloettaForme, this.effect, false, '[msg]'); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Sheer Cold", target); - }, - shortDesc: "Changes Disufiroa's form.", - target: "allAdjacentFoes", - type: "Ice", - contestType: "Beautiful", - }, - nethercurrent: { - accuracy: 100, - basePower: 80, - category: "Special", - name: "Nether Current", - pp: 20, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 100, - onHit(target, source, move) { - if (source.isActive) target.addVolatile('trapped', source, move, 'trapper'); - }, - }, - shortDesc: "Prevents the target from switching out.", - target: "normal", - type: "Water", - contestType: "Tough", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Surf", target); - }, - }, - frozencleave: { - accuracy: 100, - basePower: 70, - category: "Physical", - name: "Frozen Cleave", - pp: 20, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1, slicing: 1 }, - onEffectiveness(typeMod, target, type) { - if (type === 'Water') return 1; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Ice Spinner", target); - }, - secondary: { - chance: 10, - status: 'frz', - }, - target: "normal", - shortDesc: "10% chance to freeze. Super effective on Water.", - type: "Ice", - contestType: "Beautiful", - }, - boomblast: { - accuracy: 100, - basePower: 100, - category: "Physical", - name: "Boomblast", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, sound: 1, bypasssub: 1, metronome: 1 }, - secondary: null, - onAfterMove(pokemon, target, move) { - if (this.randomChance(5, 10)) { - target.addVolatile('blastblight'); - } - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Fusion Flare", target); - }, - shortDesc: "50% chance to Blast. Hits adjacent Pokemon.", - target: "allAdjacent", - type: "Fire", - contestType: "Tough", - }, - shroomshield: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Shroom Shield", - pp: 10, - priority: 4, - flags: { metronome: 1, noassist: 1, failcopycat: 1 }, - stallingMove: true, - volatileStatus: 'shroomshield', - onPrepareHit(pokemon) { - return !!this.queue.willAct() && this.runEvent('StallMove', pokemon); - }, - onHit(pokemon) { - pokemon.addVolatile('stall'); - }, - condition: { - duration: 1, - onStart(target) { - this.add('-singleturn', target, 'move: Protect'); - }, - onTryHitPriority: 3, - onTryHit(target, source, move) { - if (!move.flags['protect'] || move.category === 'Status') { - if (['gmaxoneblow', 'gmaxrapidflow'].includes(move.id)) return; - if (move.isZ || move.isMax) target.getMoveHitData(move).zBrokeProtect = true; - return; - } - if (move.smartTarget) { - move.smartTarget = false; - } else { - this.add('-activate', target, 'move: Protect'); - } - const lockedmove = source.getVolatile('lockedmove'); - if (lockedmove) { - // Outrage counter is reset - if (source.volatiles['lockedmove'].duration === 2) { - delete source.volatiles['lockedmove']; - } - } - if (this.checkMoveMakesContact(move, source, target)) { - source.trySetStatus('psn', target); - } - return this.NOT_FAIL; - }, - onHit(target, source, move) { - if (move.isZOrMaxPowered && this.checkMoveMakesContact(move, source, target)) { - source.trySetStatus('psn', target); - } - }, - }, - shortDesc: "Protects from damaging attacks. Contact: poison.", - secondary: null, - target: "self", - type: "Grass", - }, - risenburst: { - accuracy: true, - basePower: 60, - category: "Special", - name: "Risen Burst", - pp: 1, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Dark Pulse", target); - }, - onModifyMove(move, pokemon, target) { - move.type = '???'; - if (!target) return; - const atk = pokemon.getStat('atk', false, true); - const spa = pokemon.getStat('spa', false, true); - const def = target.getStat('def', false, true); - const spd = target.getStat('spd', false, true); - const physical = Math.floor(Math.floor(Math.floor(Math.floor(2 * pokemon.level / 5 + 2) * 90 * atk) / def) / 50); - const special = Math.floor(Math.floor(Math.floor(Math.floor(2 * pokemon.level / 5 + 2) * 90 * spa) / spd) / 50); - if (physical > special || (physical === special && this.random(2) === 0)) { - move.category = 'Physical'; - move.flags.contact = 1; - } - }, - type: 'Dark', - secondary: null, - target: "allAdjacent", - }, - selenitebeam: { - accuracy: 100, - basePower: 90, - category: "Special", - name: "Selenite Beam", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 30, - status: 'par', - }, - target: "normal", - shortDesc: "30% chance to inflict paralysis.", - type: "Fairy", - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Meteor Beam", target); - }, - }, - rageray: { - accuracy: 100, - basePower: 0, - damage: 'level', - category: "Special", - name: "Rage Ray", - pp: 15, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - volatileStatus: 'taunt', - condition: { - duration: 1, - onStart(target) { - if (!target) return; - if (target.activeTurns && !this.queue.willMove(target)) { - this.effectState.duration!++; - } - this.add('-start', target, 'move: Taunt'); - }, - onResidualOrder: 15, - onEnd(target) { - this.add('-end', target, 'move: Taunt'); - }, - onDisableMove(pokemon) { - for (const moveSlot of pokemon.moveSlots) { - const move = this.dex.moves.get(moveSlot.id); - if (move.category === 'Status' && move.id !== 'mefirst') { - pokemon.disableMove(moveSlot.id); - } - } - }, - onBeforeMovePriority: 5, - onBeforeMove(attacker, defender, move) { - if (!move.isZ && !move.isMax && move.category === 'Status' && move.id !== 'mefirst') { - this.add('cant', attacker, 'move: Taunt', move); - return false; - } - }, - }, - secondary: null, - shortDesc: "Does damage equal to the user's level. Applies Taunt for one turn.", - target: "normal", - type: "Psychic", - contestType: "Clever", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Tera Starstorm", target); - }, - }, - butterflare: { - accuracy: 100, - basePower: 100, - category: "Special", - name: "Butterflare", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 30, - status: 'brn', - }, - target: "normal", - shortDesc: "30% chance to inflict burn.", - type: "Bug", - contestType: "Beautiful", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Flamethrower", target); - this.add('-anim', source, "Bug Buzz", source); - }, - }, - butterflight: { - accuracy: 100, - basePower: 70, - category: "Physical", - name: "Butterflight", - pp: 20, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - selfSwitch: true, - secondary: null, - shortDesc: "User switches out after damaging the target.", - target: "normal", - type: "Flying", - contestType: "Cute", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Aerial Ace", target); - }, - }, - gracefulsweep: { - accuracy: 90, - basePower: 100, - category: "Physical", - name: "Graceful Sweep", - pp: 15, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, - secondary: { - chance: 20, - boosts: { - spe: -1, - }, - }, - shortDesc: "20% to lower the target's Speed by 1.", - target: "normal", - type: "Fairy", - contestType: "Cute", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Play Rough", target); - }, - }, - immolationorder: { - accuracy: 100, - basePower: 120, - category: "Special", - name: "Immolation Order", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - self: { - boosts: { - def: -1, - spd: -1, - }, - }, - secondary: null, - shortDesc: "Lowers the user's Defense and Sp. Def by 1.", - target: "normal", - type: "Dragon", - contestType: "Tough", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Draco Meteor", target); - this.add('-anim', source, "Bug Buzz", source); - }, - }, - virulentvolley: { - accuracy: 100, - basePower: 25, - category: "Physical", - name: "Virulent Volley", - pp: 30, - priority: 0, - flags: { protect: 1, mirror: 1, metronome: 1 }, - multihit: [2, 5], - onTryHit(pokemon) { - // will shatter screens through sub, before you hit - pokemon.side.removeSideCondition('reflect'); - pokemon.side.removeSideCondition('lightscreen'); - pokemon.side.removeSideCondition('auroraveil'); - }, - secondary: null, - target: "normal", - type: "Poison", - zMove: { basePower: 140 }, - maxMove: { basePower: 130 }, - contestType: "Beautiful", - shortDesc: "Hits 2-5 times. Destroys screens, unless the target is immune.", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Icicle Spear", target); - this.add('-anim', source, "Baneful Bunker", target); - }, - }, - aviniasblessing: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Avinia's Blessing", - shortDesc: "Cures user's status, raises Atk, Def by 1.", - pp: 15, - priority: 0, - flags: { snatch: 1, metronome: 1 }, - onHit(pokemon) { - const success = !!this.boost({ atk: 1, def: 1 }); - return pokemon.cureStatus() || success; - }, - secondary: null, - target: "self", - type: "Ice", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Haze", source); - }, - }, - dreadrockcannon: { - accuracy: 85, - basePower: 100, - category: "Special", - name: "Dreadrock Cannon", - pp: 5, - priority: 0, - onModifyMove(move, pokemon, target) { - switch (target?.effectiveWeather()) { - case 'sandstorm': - case 'dustdevil': - move.accuracy = true; - break; - } - }, - flags: { protect: 1, mirror: 1, distance: 1, metronome: 1, pulse: 1 }, - secondary: null, - target: "allAdjacent", - type: "Rock", - contestType: "Beautiful", - shortDesc: "Can't miss in sand.", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Rock Wrecker", target); - }, - }, - mentalload: { - accuracy: 100, - basePower: 80, - category: "Special", - name: "Mental Load", - shortDesc: "Uses user's SpD. stat as Atk in damage calculation.", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1 }, - overrideOffensiveStat: 'spd', - secondary: null, - target: "normal", - type: "Psychic", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', target, "Psycho Boost", target); - }, - }, - pyrotoxicgale: { - accuracy: 90, - basePower: 100, - category: "Special", - name: "Pyrotoxic Gale", - shortDesc: "Sea of Fire for 3 turns.", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, wind: 1 }, - secondary: null, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Heat Wave", target); - this.add('-anim', target, "Corrosive Gas", target); - }, - onHit(target, source, move) { - if (!target.side.sideConditions['firepledge']) { - target.side.addSideCondition('firepledge'); - this.add('-fieldactivate', 'move: Fire Pledge'); - } - }, - target: "normal", - type: "Poison", - }, - ignitionflare: { - accuracy: 90, - basePower: 120, - category: "Special", - name: "Ignition Flare", - shortDesc: "Charges turn 1, hits turn 2.", - pp: 10, - priority: 0, - flags: { charge: 1, protect: 1, mirror: 1, metronome: 1 }, - // prepareAnim: "Burning Bulwark", - onTryMove(attacker, defender, move) { - if (attacker.removeVolatile(move.id)) { - return; - } - this.attrLastMove('[still]'); - this.add('-anim', attacker, "Burning Bulwark", attacker); - if (!this.runEvent('ChargeMove', attacker, defender, move)) { - return; - } - attacker.addVolatile('twoturnmove', defender); - return null; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Eruption", target); - }, - secondary: null, - target: "normal", - type: "Fire", - }, - lightofruin: { - num: 617, - accuracy: 90, - basePower: 140, - category: "Special", - name: "Light of Ruin", - pp: 5, - priority: 0, - flags: { protect: 1, mirror: 1 }, - recoil: [1, 2], - secondary: null, - target: "normal", - type: "Fairy", - contestType: "Beautiful", - desc: "If the target lost HP, the user takes recoil damage equal to 1/2 the HP lost by the target, rounded half up, but not less than 1 HP.", - shortDesc: "Has 1/2 recoil.", - }, - swift: { - inherit: true, - desc: "Does not check accuracy. Usually goes first.", - shortDesc: "Does not check accuracy. Usually goes first.", - priority: 1, - }, - healorder: { - inherit: true, - isNonstandard: null, - pp: 5, - }, - hyperspacefury: { - inherit: true, - breaksProtect: true, - onTry(source) {}, - }, - ivycudgel: { - inherit: true, - onPrepareHit(target, source, move) { - if (move.type !== "Grass") { - this.attrLastMove('[anim] Ivy Cudgel ' + move.type); - } - }, - onModifyType(move, pokemon) {}, - }, - razorshell: { - inherit: true, - desc: "20% chance to inflict Bleed", - shortDesc: "20% chance to inflict bleed.", - secondary: { - chance: 20, - volatileStatus: 'bleeding', - }, - }, - razorleaf: { - inherit: true, - basePower: 60, - desc: "High critical hit ratio. 30% chance to inflict bleed.", - shortDesc: "High critical hit ratio. 30% chance to inflict bleed.", - secondary: { - chance: 30, - volatileStatus: 'bleeding', - }, - }, - rest: { - inherit: true, - flags: { snatch: 1, heal: 1, metronome: 1, cantusetwice: 1 }, - desc: "Induces Drowsy; Heals HP/Status. Can't use consecutively.", - }, - razorwind: { - inherit: true, - isNonstandard: null, - onTryMove(attacker, defender, move) {}, - desc: "High critical hit ratio. 30% chance to inflict bleed.", - shortDesc: "High critical hit ratio. 30% chance to inflict bleed.", - secondary: { - chance: 30, - volatileStatus: 'bleeding', - }, - }, - bubblebeam: { - inherit: true, - desc: "10% chance to inflict Bubbleblight.", - shortDesc: "10% chance to inflict Bubbleblight.", - secondary: { - chance: 10, - volatileStatus: 'bubbleblight', - }, - }, - dragonclaw: { - inherit: true, - desc: "30% chance to inflict bleed.", - shortDesc: "30% chance to inflict bleed.", - secondary: { - chance: 10, - volatileStatus: 'bleeding', - }, - }, - dualchop: { - inherit: true, - isNonstandard: null, - shortDesc: "Hits twice. Removes Reflect, Light Screen, and Aurora Veil on hit.", - onTryHit(pokemon) { - // will shatter screens through sub, before you hit - pokemon.side.removeSideCondition('reflect'); - pokemon.side.removeSideCondition('lightscreen'); - pokemon.side.removeSideCondition('auroraveil'); - }, - }, - irontail: { - inherit: true, - accuracy: 90, - }, - chipaway: { - isNonstandard: null, - inherit: true, - basePower: 90, - }, - bitterblade: { - inherit: true, - basePower: 80, - }, - shadowclaw: { - inherit: true, - basePower: 85, - }, - tailslap: { - inherit: true, - accuracy: 90, - }, - crushclaw: { - inherit: true, - accuracy: 100, - basePower: 85, - }, - cut: { - accuracy: 100, - inherit: true, - category: "Physical", - isNonstandard: null, - name: "Cut", - pp: 30, - priority: 0, - flags: { contact: 1, protect: 1, mirror: 1, metronome: 1, slicing: 1 }, - secondary: { - chance: 100, - volatileStatus: 'bleeding', - }, - shortDesc: "Inflicts bleed.", - }, - doublehit: { - inherit: true, - basePower: 50, - multihit: 2, - }, - megakick: { - inherit: true, - accuracy: 85, - }, - megapunch: { - inherit: true, - accuracy: 90, - basePower: 100, - }, - stomp: { - inherit: true, - basePower: 80, - }, - takedown: { - inherit: true, - accuracy: 100, - basePower: 100, - }, - headcharge: { - inherit: true, - isNonstandard: null, - accuracy: 100, - shortDesc: "Has 1/2 recoil.", - basePower: 150, - pp: 5, - recoil: [1, 2], - }, - blazekick: { - inherit: true, - accuracy: 100, - }, - aquatail: { - inherit: true, - accuracy: 100, - }, - wildcharge: { - inherit: true, - accuracy: 100, - basePower: 100, - }, - paraboliccharge: { - inherit: true, - basePower: 75, - }, - seedbomb: { - inherit: true, - basePower: 85, - }, - tropkick: { - inherit: true, - basePower: 90, - }, - glaciate: { - inherit: true, - basePower: 80, - }, - doublekick: { - inherit: true, - basePower: 40, - }, - forcepalm: { - inherit: true, - basePower: 80, - }, - submission: { - inherit: true, - isNonstandard: null, - accuracy: 100, - basePower: 100, - }, - skyuppercut: { - inherit: true, - isNonstandard: null, - shortDesc: "Removes the target's Ground immunity.", - accuracy: 100, - condition: { - noCopy: true, - onStart(pokemon) { - let applies = false; - if (pokemon.hasType('Flying') || pokemon.hasAbility('levitate')) applies = true; - if (pokemon.hasItem('ironball') || pokemon.volatiles['ingrain'] || - this.field.getPseudoWeather('gravity')) applies = false; - if (pokemon.removeVolatile('fly') || pokemon.removeVolatile('bounce')) { - applies = true; - this.queue.cancelMove(pokemon); - pokemon.removeVolatile('twoturnmove'); - } - if (pokemon.volatiles['magnetrise']) { - applies = true; - delete pokemon.volatiles['magnetrise']; - } - if (pokemon.volatiles['telekinesis']) { - applies = true; - delete pokemon.volatiles['telekinesis']; - } - if (!applies) return false; - this.add('-start', pokemon, 'Smack Down'); - }, - onRestart(pokemon) { - if (pokemon.removeVolatile('fly') || pokemon.removeVolatile('bounce')) { - this.queue.cancelMove(pokemon); - pokemon.removeVolatile('twoturnmove'); - this.add('-start', pokemon, 'Smack Down'); - } - }, - // groundedness implemented in battle.engine.js:BattlePokemon#isGrounded - }, - }, - poisontail: { - inherit: true, - accuracy: 90, - basePower: 100, - shortDesc: "30% chance to lower the target's Attack by 1.", - pp: 15, - critRatio: 1, - secondary: { - chance: 30, - boosts: { - atk: -1, - }, - }, - }, - zenheadbutt: { - inherit: true, - accuracy: 100, - }, - steamroller: { - inherit: true, - isNonstandard: null, - shortDesc: "Ends the effects of Terrain. 30% chance to flinch.", - basePower: 95, - onAfterHit(target, source) { - if (source.hp) { - this.field.clearTerrain(); - } - }, - onAfterSubDamage(damage, target, source) { - if (source.hp) { - this.field.clearTerrain(); - } - }, - }, - refresh: { - inherit: true, - isNonstandard: null, - onHit(pokemon) { - pokemon.cureStatus(); - }, - shortDesc: "Cures status", - }, - facade: { - inherit: true, - shortDesc: "Power doubles if user has any non-volatile status.", - onBasePower(basePower, pokemon) { - if (pokemon.status) { - return this.chainModify(2); - } - }, - }, - twineedle: { - inherit: true, - isNonstandard: null, - basePower: 45, - }, - shadowpunch: { - inherit: true, - shortDesc: "Always results in a critical hit.", - willCrit: true, - }, - dragonrush: { - inherit: true, - accuracy: 90, - }, - geargrind: { - inherit: true, - isNonstandard: null, - accuracy: 90, - }, - spinout: { - inherit: true, - basePower: 110, - accuracy: 100, - }, - steelwing: { - inherit: true, - accuracy: 100, - shortDesc: "50% chance to raise the users's Defense by 1.", - basePower: 80, - pp: 10, - secondary: { - chance: 50, - self: { - boosts: { - def: 1, - }, - }, - }, - }, - firefang: { - inherit: true, - basePower: 70, - }, - icefang: { - inherit: true, - basePower: 70, - shortDesc: "10% chance to frostbite. 10% chance to flinch.", - }, - thunderfang: { - inherit: true, - basePower: 70, - }, - strengthsap: { - inherit: true, - pp: 5, - }, - poisonfang: { - inherit: true, - basePower: 70, - secondary: {}, - shortDesc: "10% chance to poison. 10% chance to flinch.", - secondaries: [ - { - chance: 10, - status: 'psn', - }, { - chance: 10, - volatileStatus: 'flinch', - }, - ], - }, - darkvoid: { - inherit: true, - shortDesc: "Makes the foe(s) drowsy", - accuracy: 80, - onTry(source, target, move) {}, - }, - direclaw: { - inherit: true, - shortDesc: "50% chance to poison, paralyze, or make the target drowsy.", - }, - dreameater: { - inherit: true, - shortDesc: "User gains 1/2 HP inflicted. Drowsy target only.", - }, - electricterrain: { - inherit: true, - shortDesc: "5 turns. Grounded: +Electric power, can't be drowsy.", - }, - grasswhistle: { - inherit: true, - isNonstandard: null, - shortDesc: "Makes the target drowsy.", - }, - hypnosis: { - inherit: true, - shortDesc: "Makes the target drowsy.", - accuracy: 85, - }, - lovelykiss: { - inherit: true, - isNonstandard: null, - shortDesc: "Makes the target drowsy.", - }, - takeheart: { - inherit: true, - }, - nightmare: { - inherit: true, - isNonstandard: null, - shortDesc: "A drowsy target is hurt by 1/4 max HP per turn.", - }, - relicsong: { - inherit: true, - shortDesc: "10% chance to make foe(s) drowsy.", - }, - sing: { - inherit: true, - shortDesc: "Makes the target drowsy.", - accuracy: 80, - }, - sleeppowder: { - inherit: true, - shortDesc: "Makes the target drowsy.", - }, - sleeptalk: { - inherit: true, - shortDesc: "User must be drowsy. Uses another known move.", - }, - snore: { - inherit: true, - shortDesc: "User must be drowsy. 30% chance to flinch the target.", - }, - uproar: { - inherit: true, - shortDesc: "Last 3 turns. Active Pokemon cannot become drowsy.", - }, - wakeupslap: { - inherit: true, - isNonstandard: null, - shortDesc: "Power doubles if target is drowsy, and wakes it.", - }, - yawn: { - inherit: true, - shortDesc: "Makes the target drowsy after 1 turn.", - }, - blizzard: { - inherit: true, - onModifyMove(move) { - if (this.field.isWeather(['hail', 'snow', 'absolutezero'])) move.accuracy = true; - }, - shortDesc: "10% chance to frostbite foe(s). Can't miss in Snow.", - }, - freezedry: { - inherit: true, - shortDesc: "10% chance to frostbite. Super effective on Water.", - }, - freezingglare: { - inherit: true, - shortDesc: "10% chance to frostbite the target.", - }, - icebeam: { - inherit: true, - shortDesc: "10% chance to frostbite the target.", - }, - icepunch: { - inherit: true, - shortDesc: "10% chance to frostbite the target.", - }, - powdersnow: { - inherit: true, - shortDesc: "10% chance to frostbite foe(s).", - }, - triattack: { - inherit: true, - shortDesc: "20% chance to paralyze, burn, or frostbite target.", - }, - shoreup: { - inherit: true, - onHit(pokemon) { - let factor = 0.5; - if (['sandstorm', 'dustdevil'].includes(pokemon.effectiveWeather())) { - factor = 0.667; - } - const success = !!this.heal(this.modify(pokemon.maxhp, factor)); - if (!success) { - this.add('-fail', pokemon, 'heal'); - return this.NOT_FAIL; - } - return success; - }, - }, - solarbeam: { - inherit: true, - onBasePower(basePower, pokemon, target) { - const weakWeathers = ['raindance', 'primordialsea', 'dustdevil', 'absolutezero', 'sandstorm', 'hail', 'snow']; - if (weakWeathers.includes(pokemon.effectiveWeather())) { - this.debug('weakened by weather'); - return this.chainModify(0.5); - } - }, - }, - solarblade: { - inherit: true, - onBasePower(basePower, pokemon, target) { - const weakWeathers = ['raindance', 'primordialsea', 'dustdevil', 'absolutezero', 'sandstorm', 'hail', 'snow']; - if (weakWeathers.includes(pokemon.effectiveWeather())) { - this.debug('weakened by weather'); - return this.chainModify(0.5); - } - }, - }, - synthesis: { - inherit: true, - onHit(pokemon) { - let factor = 0.5; - switch (pokemon.effectiveWeather()) { - case 'sunnyday': - case 'desolateland': - factor = 0.667; - break; - case 'raindance': - case 'primordialsea': - case 'sandstorm': - case 'dustdevil': - case 'hail': - case 'absolutezero': - case 'snow': - factor = 0.25; - break; - } - const success = !!this.heal(this.modify(pokemon.maxhp, factor)); - if (!success) { - this.add('-fail', pokemon, 'heal'); - return this.NOT_FAIL; - } - return success; - }, - }, - morningsun: { - inherit: true, - onHit(pokemon) { - let factor = 0.5; - switch (pokemon.effectiveWeather()) { - case 'sunnyday': - case 'desolateland': - factor = 0.667; - break; - case 'raindance': - case 'primordialsea': - case 'sandstorm': - case 'dustdevil': - case 'hail': - case 'absolutezero': - case 'snow': - factor = 0.25; - break; - } - const success = !!this.heal(this.modify(pokemon.maxhp, factor)); - if (!success) { - this.add('-fail', pokemon, 'heal'); - return this.NOT_FAIL; - } - return success; - }, - }, - moonlight: { - inherit: true, - onHit(pokemon) { - let factor = 0.5; - switch (pokemon.effectiveWeather()) { - case 'sunnyday': - case 'desolateland': - factor = 0.667; - break; - case 'raindance': - case 'primordialsea': - case 'dustdevil': - case 'sandstorm': - case 'hail': - case 'absolutezero': - case 'snow': - factor = 0.25; - break; - } - const success = !!this.heal(this.modify(pokemon.maxhp, factor)); - if (!success) { - this.add('-fail', pokemon, 'heal'); - return this.NOT_FAIL; - } - return success; - }, - }, - weatherball: { - inherit: true, - onModifyType(move, pokemon) { - switch (pokemon.effectiveWeather()) { - case 'sunnyday': - case 'desolateland': - move.type = 'Fire'; - break; - case 'raindance': - case 'primordialsea': - move.type = 'Water'; - break; - case 'sandstorm': - case 'dustdevil': - move.type = 'Rock'; - break; - case 'hail': - case 'absolutezero': - case 'snow': - move.type = 'Ice'; - break; - } - }, - onModifyMove(move, pokemon) { - switch (pokemon.effectiveWeather()) { - case 'sunnyday': - case 'desolateland': - move.basePower *= 2; - break; - case 'raindance': - case 'primordialsea': - move.basePower *= 2; - break; - case 'sandstorm': - case 'dustdevil': - move.basePower *= 2; - break; - case 'hail': - case 'absolutezero': - case 'snow': - move.basePower *= 2; - break; - } - this.debug(`BP: ${move.basePower}`); - }, - }, - auroraveil: { - inherit: true, - onTry() { - return this.field.isWeather(['hail', 'snow', 'absolutezero']); - }, - }, - dragonpulse: { - inherit: true, - secondary: { - chance: 30, - status: 'dragonblight', - }, - desc: "30% chance to dragonblight the target.", - shortDesc: "30% chance to dragonblight the target.", - }, - bittermalice: { - inherit: true, - basePower: 60, - pp: 15, - secondary: { - chance: 30, - status: 'frz', - }, - desc: "30% chance to frostbite the target.", - shortDesc: "30% chance to frostbite the target.", - }, - bleakwindstorm: { - inherit: true, - secondary: { - chance: 20, - status: 'frz', - }, - desc: "Has a 20% to frostbite the target. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If this move is used against a Pokemon holding Utility Umbrella, this move's accuracy remains at 80%.", - shortDesc: "20% to frostbite the target. Rain: can't miss.", - }, - firepledge: { - inherit: true, - condition: { - duration: 4, - durationCallback(target, source, effect) { - if (effect?.name === "Pyrotoxic Gale") { - return 3; - } - return 4; - }, - onSideStart(targetSide) { - this.add('-sidestart', targetSide, 'Fire Pledge'); - }, - onResidualOrder: 5, - onResidualSubOrder: 1, - onResidual(pokemon) { - if (!pokemon.hasType('Fire')) this.damage(pokemon.baseMaxhp / 8, pokemon); - }, - onSideResidualOrder: 26, - onSideResidualSubOrder: 8, - onSideEnd(targetSide) { - this.add('-sideend', targetSide, 'Fire Pledge'); - }, - }, - }, - blazingtorque: { - num: 896, - accuracy: 100, - basePower: 80, - category: "Physical", - isNonstandard: null, - name: "Blazing Torque", - pp: 10, - priority: 0, - flags: { - protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, - failcopycat: 1, failmimic: 1, failinstruct: 1, nosketch: 1, - }, - secondary: { - chance: 30, - status: 'brn', - }, - target: "normal", - type: "Fire", - }, - combattorque: { - num: 899, - accuracy: 100, - basePower: 100, - category: "Physical", - isNonstandard: null, - name: "Combat Torque", - pp: 10, - priority: 0, - flags: { - protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, - failcopycat: 1, failmimic: 1, failinstruct: 1, nosketch: 1, - }, - secondary: { - chance: 30, - status: 'par', - }, - target: "normal", - type: "Fighting", - }, - magicaltorque: { - num: 900, - accuracy: 100, - basePower: 100, - category: "Physical", - isNonstandard: null, - name: "Magical Torque", - pp: 10, - priority: 0, - flags: { - protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, - failcopycat: 1, failmimic: 1, failinstruct: 1, nosketch: 1, - }, - secondary: { - chance: 30, - volatileStatus: 'confusion', - }, - target: "normal", - type: "Fairy", - }, - noxioustorque: { - num: 898, - accuracy: 100, - basePower: 100, - category: "Physical", - isNonstandard: null, - name: "Noxious Torque", - pp: 10, - priority: 0, - flags: { - protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, - failcopycat: 1, failmimic: 1, failinstruct: 1, nosketch: 1, - }, - secondary: { - chance: 30, - status: 'psn', - }, - target: "normal", - type: "Poison", - }, - wickedtorque: { - num: 897, - accuracy: 100, - basePower: 80, - category: "Physical", - isNonstandard: null, - shortDesc: "10% chance to make the target drowsy.", - name: "Wicked Torque", - pp: 10, - priority: 0, - flags: { - protect: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, - failcopycat: 1, failmimic: 1, failinstruct: 1, nosketch: 1, - }, - secondary: { - chance: 10, - status: 'slp', - }, - target: "normal", - type: "Dark", - }, - // undexiting moves (because the standard natdex rule isn't doing it already fsr) - anchorshot: { - inherit: true, - isNonstandard: null, - }, - aromatherapy: { - inherit: true, - isNonstandard: null, - }, - assist: { - inherit: true, - isNonstandard: null, - }, - autotomize: { - inherit: true, - isNonstandard: null, - }, - barrage: { - inherit: true, - isNonstandard: null, - }, - barrier: { - inherit: true, - isNonstandard: null, - }, - bestow: { - inherit: true, - isNonstandard: null, - }, - bide: { - inherit: true, - isNonstandard: null, - }, - boltbeak: { - inherit: true, - isNonstandard: null, - }, - boneclub: { - inherit: true, - isNonstandard: null, - }, - bonemerang: { - inherit: true, - isNonstandard: null, - }, - bubble: { - inherit: true, - isNonstandard: null, - }, - camouflage: { - inherit: true, - isNonstandard: null, - }, - captivate: { - inherit: true, - isNonstandard: null, - }, - chatter: { - inherit: true, - isNonstandard: null, - }, - clamp: { - inherit: true, - isNonstandard: null, - }, - cometpunch: { - inherit: true, - isNonstandard: null, - }, - constrict: { - inherit: true, - isNonstandard: null, - }, - coreenforcer: { - inherit: true, - isNonstandard: null, - }, - craftyshield: { - inherit: true, - isNonstandard: null, - }, - dizzypunch: { - inherit: true, - isNonstandard: null, - }, - doubleironbash: { - inherit: true, - isNonstandard: null, - }, - doubleslap: { - inherit: true, - isNonstandard: null, - }, - dragonrage: { - inherit: true, - isNonstandard: null, - }, - eggbomb: { - inherit: true, - isNonstandard: null, - }, - electrify: { - inherit: true, - isNonstandard: null, - }, - embargo: { - inherit: true, - isNonstandard: null, - }, - eternabeam: { - inherit: true, - isNonstandard: null, - }, - feintattack: { - inherit: true, - isNonstandard: null, - }, - fishiousrend: { - inherit: true, - isNonstandard: null, - }, - flameburst: { - inherit: true, - isNonstandard: null, - }, - flash: { - inherit: true, - isNonstandard: null, - }, - flowershield: { - inherit: true, - isNonstandard: null, - }, - foresight: { - inherit: true, - isNonstandard: null, - }, - frustration: { - inherit: true, - isNonstandard: null, - }, - gearup: { - inherit: true, - isNonstandard: null, - }, - geomancy: { - inherit: true, - isNonstandard: null, - }, - grudge: { - inherit: true, - isNonstandard: null, - }, - hail: { - inherit: true, - isNonstandard: null, - }, - healblock: { - inherit: true, - isNonstandard: null, - }, - heartstamp: { - inherit: true, - isNonstandard: null, - }, - hiddenpower: { - inherit: true, - isNonstandard: null, - }, - hyperfang: { - inherit: true, - isNonstandard: null, - }, - iceball: { - inherit: true, - isNonstandard: null, - }, - iondeluge: { - inherit: true, - isNonstandard: null, - }, - jumpkick: { - inherit: true, - isNonstandard: null, - }, - karatechop: { - inherit: true, - isNonstandard: null, - }, - kinesis: { - inherit: true, - isNonstandard: null, - }, - kingsshield: { - inherit: true, - isNonstandard: null, - }, - landswrath: { - inherit: true, - isNonstandard: null, - }, - laserfocus: { - inherit: true, - isNonstandard: null, - }, - leaftornado: { - inherit: true, - isNonstandard: null, - }, - luckychant: { - inherit: true, - isNonstandard: null, - }, - magiccoat: { - inherit: true, - isNonstandard: null, - }, - magnetrise: { - inherit: true, - isNonstandard: null, - }, - magnitude: { - inherit: true, - isNonstandard: null, - }, - matblock: { - inherit: true, - isNonstandard: null, - }, - meditate: { - inherit: true, - isNonstandard: null, - }, - mefirst: { - inherit: true, - isNonstandard: null, - }, - meteorassault: { - inherit: true, - isNonstandard: null, - }, - mindblown: { - inherit: true, - isNonstandard: null, - }, - mindreader: { - inherit: true, - isNonstandard: null, - }, - miracleeye: { - inherit: true, - isNonstandard: null, - }, - mirrormove: { - inherit: true, - isNonstandard: null, - }, - mirrorshot: { - inherit: true, - isNonstandard: null, - }, - mudbomb: { - inherit: true, - isNonstandard: null, - }, - mudsport: { - inherit: true, - isNonstandard: null, - }, - watersport: { - inherit: true, - isNonstandard: null, - }, - multiattack: { - inherit: true, - isNonstandard: null, - }, - naturalgift: { - inherit: true, - isNonstandard: null, - }, - naturepower: { - inherit: true, - isNonstandard: null, - }, - naturesmadness: { - inherit: true, - isNonstandard: null, - }, - needlearm: { - inherit: true, - isNonstandard: null, - }, - oblivionwing: { - inherit: true, - isNonstandard: null, - }, - obstruct: { - inherit: true, - isNonstandard: null, - }, - octazooka: { - inherit: true, - isNonstandard: null, - }, - octolock: { - inherit: true, - isNonstandard: null, - }, - odorsleuth: { - inherit: true, - isNonstandard: null, - }, - ominouswind: { - inherit: true, - isNonstandard: null, - }, - plasmafists: { - inherit: true, - isNonstandard: null, - }, - powder: { - inherit: true, - isNonstandard: null, - }, - poweruppunch: { - inherit: true, - isNonstandard: null, - }, - psychoshift: { - inherit: true, - isNonstandard: null, - }, - psywave: { - inherit: true, - isNonstandard: null, - }, - punishment: { - inherit: true, - isNonstandard: null, - }, - purify: { - inherit: true, - isNonstandard: null, - }, - pursuit: { - inherit: true, - isNonstandard: null, - }, - rage: { - inherit: true, - isNonstandard: null, - }, - return: { - inherit: true, - isNonstandard: null, - }, - revenge: { - inherit: true, - isNonstandard: null, - }, - rockclimb: { - inherit: true, - isNonstandard: null, - }, - rollingkick: { - inherit: true, - isNonstandard: null, - }, - rototiller: { - inherit: true, - isNonstandard: null, - }, - searingshot: { - inherit: true, - isNonstandard: null, - }, - secretpower: { - inherit: true, - isNonstandard: null, - }, - shadowbone: { - inherit: true, - isNonstandard: null, - }, - sharpen: { - inherit: true, - isNonstandard: null, - }, - shelltrap: { - inherit: true, - isNonstandard: null, - }, - signalbeam: { - inherit: true, - isNonstandard: null, - }, - silverwind: { - inherit: true, - isNonstandard: null, - }, - skullbash: { - inherit: true, - isNonstandard: null, - }, - skydrop: { - inherit: true, - isNonstandard: null, - }, - smellingsalts: { - inherit: true, - isNonstandard: null, - }, - snaptrap: { - inherit: true, - isNonstandard: null, - }, - snatch: { - inherit: true, - isNonstandard: null, - }, - sonicboom: { - inherit: true, - isNonstandard: null, - }, - spectralthief: { - inherit: true, - isNonstandard: null, - }, - spiderweb: { - inherit: true, - isNonstandard: null, - }, - spikecannon: { - inherit: true, - isNonstandard: null, - }, - spotlight: { - inherit: true, - isNonstandard: null, - }, - stormthrow: { - inherit: true, - isNonstandard: null, - }, - synchronoise: { - inherit: true, - isNonstandard: null, - }, - technoblast: { - inherit: true, - isNonstandard: null, - }, - telekinesis: { - inherit: true, - isNonstandard: null, - }, - thousandwaves: { - inherit: true, - isNonstandard: null, - }, - thousandarrows: { - inherit: true, - isNonstandard: null, - }, - trickortreat: { - inherit: true, - isNonstandard: null, - }, - trumpcard: { - inherit: true, - isNonstandard: null, - }, - venomdrench: { - inherit: true, - isNonstandard: null, - }, - vitalthrow: { - inherit: true, - isNonstandard: null, - }, - wringout: { - inherit: true, - isNonstandard: null, - }, -}; diff --git a/data/mods/monsterhunter/pokedex.ts b/data/mods/monsterhunter/pokedex.ts deleted file mode 100644 index 2e7204b5c8..0000000000 --- a/data/mods/monsterhunter/pokedex.ts +++ /dev/null @@ -1,2857 +0,0 @@ -export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = { - basarios: { - num: 1, - name: "Basarios", - types: ["Rock", "Poison"], - baseStats: { hp: 81, atk: 74, def: 175, spa: 82, spd: 55, spe: 53 }, - abilities: { 0: "Sturdy", H: "Rough Skin" }, - weightkg: 312.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - evos: ["Gravios"], - }, - crysarios: { - num: 1, - name: "Crysarios", - types: ["Fairy", "Poison"], - baseStats: { hp: 81, atk: 55, def: 82, spa: 74, spd: 175, spe: 53 }, - abilities: { 0: "Sacred Jewel", 1: "Misty Surge", H: "Rough Skin" }, - weightkg: 312.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - basariossandstone: { - num: 10000, - name: "Basarios-Sandstone", - types: ["Ground"], - baseStats: { hp: 100, atk: 105, def: 110, spa: 42, spd: 130, spe: 53 }, - abilities: { 0: "Sand Veil", H: "Earth Eater" }, - weightkg: 312.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - cephadrome: { - num: 2, - name: "Cephadrome", - types: ["Ground", "Electric"], - baseStats: { hp: 70, atk: 103, def: 84, spa: 56, spd: 107, spe: 100 }, - abilities: { 0: "Sand Rush", 1: "Emergency Exit", H: "Infiltrator" }, - weightkg: 48.0, - eggGroups: ["Undiscovered"], - // tags: ["Piscine Wyvern"], - }, - diablos: { - num: 3, - name: "Diablos", - types: ["Rock", "Ground"], - baseStats: { hp: 112, atk: 123, def: 94, spa: 29, spd: 77, spe: 115 }, - abilities: { 0: "Rock Head", H: "Reckless" }, - weightkg: 170.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - otherFormes: ["Massacre Diablos"], - }, - blackblos: { - num: 3, - name: "Blackblos", - types: ["Fighting", "Ground"], - gender: "F", - baseStats: { hp: 112, atk: 123, def: 94, spa: 29, spd: 77, spe: 115 }, - abilities: { 0: "Blind Rage", H: "Reckless" }, - weightkg: 170.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - massacrediablos: { - num: 3, - name: "Massacre Diablos", - baseSpecies: "Diablos", - forme: "Mega", - types: ["Dark", "Ground"], - baseStats: { hp: 112, atk: 140, def: 133, spa: 50, spd: 85, spe: 130 }, - abilities: { 0: "Aggravation" }, - weightkg: 170.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - requiredItem: "Diablite", - }, - gendrome: { - num: 4, - name: "Gendrome", - types: ["Ground"], - baseStats: { hp: 80, atk: 107, def: 116, spa: 81, spd: 50, spe: 91 }, - abilities: { 0: "Sand Rush", H: "Friend Guard" }, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - weightkg: 30.0, - }, - gravios: { - num: 5, - name: "Gravios", - types: ["Psychic", "Fire"], - baseStats: { hp: 101, atk: 60, def: 114, spa: 130, spd: 100, spe: 65 }, - abilities: { 0: "Flash Fire", H: "Armor Tail" }, - weightkg: 250.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - prevo: "Basarios", - }, - blackvios: { - num: 5, - name: "Blackvios", - types: ["Rock", "Fire"], - baseStats: { hp: 100, atk: 60, def: 101, spa: 130, spd: 114, spe: 65 }, - abilities: { 0: "Solar Core", H: "Armor Tail" }, - weightkg: 250.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - gypceros: { - num: 6, - name: "Gypceros", - types: ["Poison", "Flying"], - baseStats: { hp: 83, atk: 105, def: 93, spa: 73, spd: 98, spe: 92 }, - abilities: { 0: "Lightning Rod", H: "Prankster" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - iodrome: { - num: 7, - name: "Iodrome", - types: ["Poison"], - baseStats: { hp: 80, atk: 50, def: 81, spa: 116, spd: 91, spe: 107 }, - abilities: { 0: "Merciless", H: "Friend Guard" }, - weightkg: 45.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - khezu: { - num: 8, - name: "Khezu", - types: ["Electric"], - gender: "N", - baseStats: { hp: 105, atk: 67, def: 72, spa: 113, spd: 109, spe: 60 }, - abilities: { 0: "Electric Surge", 1: "Thick Fat", H: "Static" }, - weightkg: 50.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - redzu: { - num: 8, - name: "Redzu", - types: ["Electric"], - gender: "N", - baseStats: { hp: 105, atk: 60, def: 67, spa: 113, spd: 109, spe: 72 }, - abilities: { 0: "Transistor", 1: "Surge Surfer", H: "Static" }, - weightkg: 50.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - monoblos: { - num: 9, - name: "Monoblos", - types: ["Ground"], - baseStats: { hp: 105, atk: 133, def: 115, spa: 44, spd: 65, spe: 105 }, - abilities: { 0: "Intimidate", H: "Rock Head" }, - weightkg: 120.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - whiteblos: { - num: 9, - name: "Whiteblos", - types: ["Normal", "Ground"], - baseStats: { hp: 105, atk: 115, def: 133, spa: 44, spd: 65, spe: 105 }, - abilities: { 0: "Sand Rush", H: "Rock Head" }, - weightkg: 120.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - plesioth: { - num: 10, - name: "Plesioth", - types: ["Water"], - baseStats: { hp: 85, atk: 100, def: 82, spa: 103, spd: 110, spe: 73 }, - abilities: { 0: "Torrent", 1: "Water Veil", H: "Long Reach" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Piscine Wyvern"], - otherFormes: ["Plesioth-Z"], - }, - greensioth: { - num: 10, - name: "Greensioth", - types: ["Water", "Grass"], - baseStats: { hp: 85, atk: 82, def: 73, spa: 110, spd: 100, spe: 103 }, - abilities: { 0: "Swift Swim", 1: "Sniper", H: "Long Reach" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Piscine Wyvern"], - }, - plesiothz: { - num: 10, - name: "Plesioth-Z", - baseSpecies: "Plesioth", - forme: "Mega", - types: ["Water"], - baseStats: { hp: 85, atk: 105, def: 101, spa: 124, spd: 160, spe: 75 }, - abilities: { 0: "Gooey" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Piscine Wyvern"], - requiredItem: "Plesite", - }, - rathalos: { - num: 11, - name: "Rathalos", - types: ["Fire", "Flying"], - gender: "M", - baseStats: { hp: 75, atk: 120, def: 80, spa: 120, spd: 80, spe: 110 }, - abilities: { 0: "Poison Touch", H: "Gale Wings" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - otherFormes: ["Dreadking Rathalos"], - }, - silvalos: { - num: 11, - name: "Silvalos", - types: ["Steel", "Flying"], - gender: "M", - baseStats: { hp: 75, atk: 120, def: 80, spa: 120, spd: 80, spe: 110 }, - abilities: { 0: "Incandescent", H: "Gale Wings" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - azurelos: { - num: 11, - name: "Azurelos", - types: ["Poison", "Flying"], - gender: "M", - baseStats: { hp: 75, atk: 110, def: 80, spa: 120, spd: 80, spe: 120 }, - abilities: { 0: "Strafe", 1: "Corrosive Claws", H: "Gale Wings" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - dreadkingrathalos: { - num: 11, - name: "Dreadking Rathalos", - baseSpecies: "Rathalos", - forme: "Mega", - types: ["Fire", "Flying"], - gender: "M", - baseStats: { hp: 75, atk: 135, def: 95, spa: 145, spd: 70, spe: 130 }, - abilities: { 0: "Turboblaze" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - requiredItem: "Rathalosite", - }, - rathian: { - num: 12, - name: "Rathian", - types: ["Ground", "Poison"], - gender: "F", - baseStats: { hp: 110, atk: 80, def: 120, spa: 80, spd: 120, spe: 75 }, - abilities: { 0: "Poison Point", H: "Queenly Majesty" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - otherFormes: ["Dreadqueen Rathian"], - }, - goldthian: { - num: 12, - name: "Goldthian", - types: ["Steel", "Poison"], - gender: "F", - baseStats: { hp: 80, atk: 80, def: 120, spa: 110, spd: 120, spe: 75 }, - abilities: { 0: "Incandescent", H: "Queenly Majesty" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - pinkthian: { - num: 12, - name: "Pinkthian", - types: ["Fairy", "Poison"], - gender: "F", - baseStats: { hp: 110, atk: 80, def: 120, spa: 80, spd: 120, spe: 75 }, - abilities: { 0: "Merciless", H: "Queenly Majesty" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - dreadqueenrathian: { - num: 12, - name: "Dreadqueen Rathian", - baseSpecies: "Rathian", - forme: "Mega", - types: ["Flying", "Poison"], - gender: "F", - baseStats: { hp: 110, atk: 100, def: 140, spa: 80, spd: 140, spe: 80 }, - abilities: { 0: "Toxic Chain" }, - weightkg: 110.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - requiredItem: "Rathianite", - }, - velocidrome: { - num: 13, - name: "Velocidrome", - types: ["Flying"], - baseStats: { hp: 80, atk: 116, def: 91, spa: 50, spd: 81, spe: 107 }, - abilities: { 0: "Big Pecks", H: "Friend Guard" }, - weightkg: 45.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - yiangaruga: { - num: 14, - name: "Yian Garuga", - types: ["Poison", "Dark"], - baseStats: { hp: 74, atk: 120, def: 86, spa: 80, spd: 96, spe: 114 }, - abilities: { 0: "Anger Point", 1: "Moxie", H: "Merciless" }, - weightkg: 45.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - otherFormes: ["Deadeye Garuga"], - }, - deadeyegaruga: { - num: 14, - name: "Deadeye Garuga", - baseSpecies: "Yian Garuga", - forme: "Mega", - types: ["Poison", "Fighting"], - baseStats: { hp: 74, atk: 140, def: 86, spa: 122, spd: 96, spe: 132 }, - abilities: { 0: "Mind's Eye" }, - weightkg: 55, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - requiredItem: "Garugite", - }, - yiankutku: { - num: 15, - name: "Yian Kutku", - types: ["Fire", "Normal"], - baseStats: { hp: 77, atk: 75, def: 100, spa: 102, spd: 82, spe: 90 }, - abilities: { 0: "Blaze", H: "Huge Power" }, - weightkg: 30.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - bluekutku: { - num: 15, - name: "Blue Kutku", - types: ["Fire", "Normal"], - baseStats: { hp: 77, atk: 75, def: 102, spa: 100, spd: 82, spe: 90 }, - abilities: { 0: "Plow", H: "Huge Power" }, - weightkg: 30.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - fatalis: { - num: 16, - name: "Fatalis", - types: ["Dragon"], - gender: "N", - baseStats: { hp: 100, atk: 110, def: 100, spa: 120, spd: 105, spe: 90 }, - abilities: { 0: "Desolate Land" }, - weightkg: 270.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Crimson-Fatalis", "White-Fatalis"], - formeOrder: ["Crimson-Fatalis", "White-Fatalis"], - }, - crimsonfatalis: { - num: 16, - name: "Crimson-Fatalis", - baseSpecies: "Fatalis", - forme: "Primal", - types: ["Dragon", "Fire"], - baseStats: { hp: 100, atk: 130, def: 115, spa: 100, spd: 90, spe: 95 }, - abilities: { 0: "Orichalcum Pulse" }, - weightkg: 270.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Crimson Gem", - }, - whitefatalis: { - num: 16, - name: "White-Fatalis", - baseSpecies: "Fatalis", - forme: "Primal", - types: ["Dragon", "Electric"], - baseStats: { hp: 100, atk: 90, def: 100, spa: 130, spd: 115, spe: 95 }, - abilities: { 0: "Hadron Engine" }, - weightkg: 270.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "White Gem", - }, - kirin: { - num: 17, - name: "Kirin", - types: ["Ghost", "Electric"], - baseStats: { hp: 92, atk: 90, def: 82, spa: 130, spd: 103, spe: 105 }, - abilities: { 0: "Grim Neigh", H: "Stalwart" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Emperor Kirin"], - }, - emperorkirin: { - num: 17, - name: "Emperor Kirin", - baseSpecies: "Kirin", - forme: "Mega", - types: ["Ghost", "Electric"], - baseStats: { hp: 92, atk: 95, def: 91, spa: 135, spd: 112, spe: 125 }, - abilities: { 0: "Teravolt" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Kirinite", - }, - oroshirin: { - num: 17, - name: "Oroshirin", - types: ["Ghost", "Ice"], - baseStats: { hp: 92, atk: 130, def: 103, spa: 82, spd: 105, spe: 90 }, - abilities: { 0: "Chilling Neigh", H: "Stalwart" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - laoshanlung: { - num: 18, - name: "Lao-Shan Lung", - types: ["Dragon"], - baseStats: { hp: 113, atk: 111, def: 108, spa: 81, spd: 135, spe: 69 }, - abilities: { 0: "Oblivious", H: "Unaware" }, - weightkg: 400.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - ashshanlung: { - num: 18, - name: "Ash-Shan Lung", - types: ["Dragon"], - baseStats: { hp: 113, atk: 111, def: 135, spa: 81, spd: 108, spe: 69 }, - abilities: { 0: "Well-Baked Body", H: "Unaware" }, - weightkg: 400.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - akantor: { - num: 19, - name: "Akantor", - types: ["Ground"], - baseStats: { hp: 103, atk: 101, def: 102, spa: 128, spd: 88, spe: 78 }, - abilities: { 0: "Intimidate", 1: "Flare Boost", H: "Desolate Land" }, - weightkg: 150.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - blangonga: { - num: 20, - name: "Blangonga", - types: ["Ice", "Normal"], - gender: "M", - baseStats: { hp: 95, atk: 126, def: 99, spa: 65, spd: 79, spe: 84 }, - abilities: { 0: "Moxie", 1: "Inner Focus", H: "Scrappy" }, - weightkg: 95.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - bulldrome: { - num: 21, - name: "Bulldrome", - types: ["Normal"], - baseStats: { hp: 70, atk: 125, def: 85, spa: 60, spd: 75, spe: 115 }, - abilities: { 0: "Hustle" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - congalala: { - num: 21, - name: "Congalala", - types: ["Normal", "Poison"], - gender: "M", - baseStats: { hp: 87, atk: 83, def: 89, spa: 106, spd: 104, spe: 61 }, - abilities: { 0: "Harvest", 1: "Pungency", H: "Lingering Aroma" }, - weightkg: 50.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - emgalala: { - num: 21, - name: "Emgalala", - types: ["Grass", "Poison"], - gender: "M", - baseStats: { hp: 87, atk: 83, def: 89, spa: 106, spd: 104, spe: 61 }, - abilities: { 0: "Neutralizing Gas", H: "Lingering Aroma" }, - weightkg: 50.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - daimyohermitaur: { - num: 23, - name: "Daimyo Hermitaur", - types: ["Water"], - baseStats: { hp: 80, atk: 102, def: 138, spa: 78, spd: 112, spe: 52 }, - abilities: { 0: "Shell Armor", H: "Unaware" }, - weightkg: 160.0, - eggGroups: ["Undiscovered"], - // tags: ["Carapaceon"], - otherFormes: ["Stonefist Daimyo"], - }, - stonefistdaimyo: { - num: 23, - name: "Stonefist Daimyo", - baseSpecies: "Daimyo Hermitaur", - forme: "Mega", - types: ["Water", "Fighting"], - baseStats: { hp: 80, atk: 120, def: 160, spa: 120, spd: 115, spe: 55 }, - abilities: { 0: "Magic Bounce" }, - weightkg: 160.0, - eggGroups: ["Undiscovered"], - // tags: ["Carapaceon"], - requiredItem: "Daimyite", - }, - giadrome: { - num: 24, - name: "Giadrome", - types: ["Ice"], - baseStats: { hp: 80, atk: 107, def: 50, spa: 81, spd: 116, spe: 91 }, - abilities: { 0: "Slush Rush", H: "Friend Guard" }, - weightkg: 30.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - hypnocatrice: { - num: 25, - name: "Hypnocatrice", - types: ["Psychic"], - baseStats: { hp: 106, atk: 61, def: 92, spa: 118, spd: 112, spe: 84 }, - abilities: { 0: "Quick Feet", H: "Bad Dreams" }, - weightkg: 70.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - lavasioth: { - num: 26, - name: "Lavasioth", - types: ["Fire"], - baseStats: { hp: 126, atk: 114, def: 95, spa: 70, spd: 60, spe: 75 }, - abilities: { 0: "Blaze", 1: "Turboblaze", H: "Flame Body" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Piscine Wyvern"], - }, - nargacuga: { - num: 27, - name: "Nargacuga", - types: ["Flying", "Steel"], - baseStats: { hp: 88, atk: 116, def: 104, spa: 72, spd: 90, spe: 112 }, - abilities: { 0: "Sharpness", H: "Screen Cleaner" }, - weightkg: 88.8, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - lucacuga: { - num: 27, - name: "Lucacuga", - types: ["Ghost", "Steel"], - baseStats: { hp: 88, atk: 116, def: 90, spa: 72, spd: 104, spe: 112 }, - abilities: { 0: "Clear Body", H: "Screen Cleaner" }, - weightkg: 88.8, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - greencuga: { - num: 27, - name: "Greencuga", - types: ["Grass", "Steel"], - baseStats: { hp: 88, atk: 112, def: 104, spa: 72, spd: 90, spe: 116 }, - abilities: { 0: "Technician", H: "Screen Cleaner" }, - weightkg: 88.8, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - rajang: { - num: 28, - name: "Rajang", - types: ["Electric", "Fighting"], - baseStats: { hp: 75, atk: 133, def: 91, spa: 102, spd: 91, spe: 100 }, - abilities: { 0: "Anger Point", H: "Defiant" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - otherFormes: ["Furious Rajang"], - }, - furiousrajang: { - num: 28, - name: "Furious Rajang", - baseSpecies: "Rajang", - forme: "Mega", - types: ["Electric", "Fighting"], - baseStats: { hp: 75, atk: 150, def: 91, spa: 137, spd: 91, spe: 106 }, - abilities: { 0: "Gorilla Tactics" }, - weightkg: 113.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - requiredItem: "Rajanite", - }, - shengaoren: { - num: 29, - name: "Shen Gaoren", - types: ["Water", "Dark"], - baseStats: { hp: 94, atk: 129, def: 109, spa: 100, spd: 99, spe: 69 }, - abilities: { 0: "Adaptability", H: "Frisk" }, - weightkg: 300.0, - eggGroups: ["Undiscovered"], - // tags: ["Carapaceon"], - }, - shogunceanataur: { - num: 30, - name: "Shogun Ceanataur", - types: ["Water"], - baseStats: { hp: 60, atk: 140, def: 90, spa: 95, spd: 65, spe: 100 }, - abilities: { 0: "Sharpness", 1: "Swift Swim", H: "Shell Armor" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Carapaceon"], - }, - terrataur: { - num: 30, - name: "Terrataur", - types: ["Water", "Rock"], - baseStats: { hp: 60, atk: 140, def: 100, spa: 95, spd: 65, spe: 90 }, - abilities: { 0: "Dulled Blades", H: "Shell Armor" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Carapaceon"], - }, - tigrex: { - num: 31, - name: "Tigrex", - types: ["Normal"], - baseStats: { hp: 94, atk: 114, def: 100, spa: 108, spd: 82, spe: 82 }, - abilities: { 0: "Punk Rock", H: "Gluttony" }, - weightkg: 130.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - otherFormes: ["Grimclaw Tigrex"], - }, - grimclawtigrex: { - num: 31, - name: "Grimclaw Tigrex", - baseSpecies: "Tigrex", - forme: "Mega", - types: ["Normal", "Fighting"], - baseStats: { hp: 94, atk: 145, def: 120, spa: 108, spd: 108, spe: 75 }, - abilities: { 0: "Tough Claws" }, - weightkg: 130.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - requiredItem: "Tigrexite", - }, - molgrex: { - num: 31, - name: "Molgrex", - types: ["Fire"], - baseStats: { hp: 100, atk: 114, def: 94, spa: 108, spd: 82, spe: 82 }, - abilities: { 0: "Aggravation", 1: "Gravedrum", H: "Gluttony" }, - weightkg: 130.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - ukanlos: { - num: 32, - name: "Ukanlos", - types: ["Steel", "Ice"], - baseStats: { hp: 100, atk: 110, def: 180, spa: 70, spd: 75, spe: 65 }, - abilities: { 0: "Ice Scales", 1: "Mirror Armor", H: "Absolute Zero" }, - weightkg: 170.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - vespoidqueen: { - num: 33, - name: "Vespoid Queen", - types: ["Bug"], - gender: "F", - baseStats: { hp: 76, atk: 80, def: 112, spa: 80, spd: 112, spe: 60 }, - abilities: { 0: "Swarm", H: "Static" }, - weightkg: 9.0, - eggGroups: ["Undiscovered"], - // tags: ["Neopteron"], - }, - chameleos: { - num: 34, - name: "Chameleos", - types: ["Dragon", "Poison"], - baseStats: { hp: 78, atk: 128, def: 72, spa: 128, spd: 72, spe: 128 }, - abilities: { 0: "Neutralizing Gas", H: "Poison Puppeteer" }, - weightkg: 110.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Risen Chameleos"], - }, - risenchameleos: { - num: 34, - name: "Risen Chameleos", - baseSpecies: "Chameleos", - forme: "Mega", - types: ["Dragon", "Poison"], - baseStats: { hp: 78, atk: 136, def: 82, spa: 136, spd: 82, spe: 136 }, - abilities: { 0: "Risen Burst" }, - weightkg: 110.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Risenite-C", - }, - kushaladaora: { - num: 35, - name: "Kushala Daora", - types: ["Flying", "Steel"], - baseStats: { hp: 95, atk: 80, def: 103, spa: 119, spd: 120, spe: 88 }, - abilities: { 0: "Bulletproof", H: "Magic Bounce" }, - weightkg: 200.4, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Risen Kushala"], - }, - risenkushala: { - num: 35, - name: "Risen Kushala", - baseSpecies: "Kushala Daora", - forme: "Mega", - types: ["Flying", "Steel"], - baseStats: { hp: 95, atk: 85, def: 105, spa: 135, spd: 120, spe: 110 }, - abilities: { 0: "Risen Burst" }, - weightkg: 200.4, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Risenite-K", - }, - rushaladaora: { - num: 35, - name: "Rushala Daora", - types: ["Ground", "Steel"], - baseStats: { hp: 90, atk: 103, def: 120, spa: 88, spd: 119, spe: 85 }, - abilities: { 0: "Rusted Gale", H: "Magic Bounce" }, - weightkg: 200.4, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - lunastra: { - num: 36, - name: "Lunastra", - types: ["Fire", "Psychic"], - gender: "F", - baseStats: { hp: 85, atk: 100, def: 74, spa: 135, spd: 120, spe: 96 }, - abilities: { 0: "Turboblaze", H: "Berserk" }, - weightkg: 150.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - teostra: { - num: 37, - name: "Teostra", - types: ["Dragon", "Fire"], - gender: "M", - baseStats: { hp: 85, atk: 135, def: 120, spa: 100, spd: 74, spe: 96 }, - abilities: { 0: "Drought", H: "Reckless" }, - weightkg: 113.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Risen Teostra"], - }, - risenteostra: { - num: 37, - name: "Risen Teostra", - baseSpecies: "Teostra", - forme: "Mega", - types: ["Dragon", "Fire"], - baseStats: { hp: 85, atk: 145, def: 130, spa: 110, spd: 80, spe: 100 }, - abilities: { 0: "Risen Burst" }, - weightkg: 113.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Risenite-T", - }, - yamatsukami: { - num: 38, - name: "Yama Tsukami", - types: ["Dragon", "Grass"], - baseStats: { hp: 170, atk: 65, def: 100, spa: 68, spd: 105, spe: 95 }, - abilities: { 0: "Grassy Surge", H: "Levitate" }, - weightkg: 20.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - /* - Generation III - */ - agnaktor: { - num: 39, - name: "Agnaktor", - types: ["Fire"], - baseStats: { hp: 80, atk: 121, def: 106, spa: 70, spd: 81, spe: 107 }, - abilities: { 0: "Magma Armor", H: "Solar Wrath" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - glanaktor: { - num: 39, - name: "Glanaktor", - types: ["Ice"], - baseStats: { hp: 80, atk: 121, def: 106, spa: 70, spd: 81, spe: 107 }, - abilities: { 0: "Water Bubble", H: "Snow Seethe" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - arzuros: { - num: 40, - name: "Arzuros", - types: ["Normal"], - baseStats: { hp: 86, atk: 112, def: 125, spa: 60, spd: 78, spe: 74 }, - abilities: { 0: "Hustle", 1: "Tough Claws", H: "Honey Gather" }, - weightkg: 95.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - otherFormes: ["Redhelm Arzuros"], - }, - redhelmarzuros: { - num: 40, - name: "Redhelm Arzuros", - baseSpecies: "Arzuros", - forme: "Mega", - types: ["Normal"], - baseStats: { hp: 86, atk: 128, def: 144, spa: 100, spd: 88, spe: 104 }, - abilities: { 0: "Tough Claws" }, - weightkg: 178.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - requiredItem: "Arzurite", - }, - barioth: { - num: 41, - name: "Barioth", - types: ["Ice", "Flying"], - baseStats: { hp: 92, atk: 118, def: 70, spa: 105, spd: 80, spe: 100 }, - abilities: { 0: "Frostnip", H: "Slush Rush" }, - weightkg: 152.2, - otherFormes: ["Frostfang Barioth"], - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - frostfangbarioth: { - num: 41, - name: "Frostfang Barioth", - baseSpecies: "Barioth", - forme: "Mega", - types: ["Ice", "Flying"], - baseStats: { hp: 92, atk: 128, def: 90, spa: 125, spd: 110, spe: 105 }, - abilities: { 0: "Fur Coat" }, - weightkg: 152.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - requiredItem: "Bariothite", - }, - sandrioth: { - num: 41, - name: "Sandrioth", - types: ["Ground", "Flying"], - baseStats: { hp: 100, atk: 105, def: 118, spa: 70, spd: 80, spe: 92 }, - abilities: { 0: "Solid Rock", 1: "Rough Skin", H: "Sand Rush" }, - weightkg: 152.2, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - barroth: { - num: 42, - name: "Barroth", - types: ["Ground"], - baseStats: { hp: 86, atk: 84, def: 100, spa: 75, spd: 115, spe: 73 }, - abilities: { 0: "Earth Eater", 1: "Dry Skin", H: "Sand Stream" }, - weightkg: 105.8, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - brachydios: { - num: 43, - name: "Brachydios", - types: ["Fighting", "Poison"], - baseStats: { hp: 92, atk: 124, def: 105, spa: 102, spd: 90, spe: 74 }, - abilities: { 0: "Iron Fist", H: "Poison Touch" }, - weightkg: 105.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - otherFormes: ["Raging Brachydios"], - }, - ragingbrachydios: { - num: 43, - name: "Raging Brachydios", - baseSpecies: "Brachydios", - forme: "Mega", - types: ["Fighting", "Poison"], - baseStats: { hp: 92, atk: 135, def: 117, spa: 102, spd: 102, spe: 102 }, - abilities: { 0: "Raging Rebel" }, - weightkg: 105.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - requiredItem: "Brachylite", - }, - deviljho: { - num: 44, - name: "Deviljho", - types: ["Dark", "Fighting"], - baseStats: { hp: 105, atk: 120, def: 115, spa: 101, spd: 70, spe: 76 }, - abilities: { 0: "Dragon's Maw", H: "Cud Chew" }, - weightkg: 120.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - otherFormes: ["Savage Deviljho"], - }, - savagedeviljho: { - num: 44, - name: "Savage Deviljho", - baseSpecies: "Deviljho", - forme: "Mega", - types: ["Dark", "Fighting"], - baseStats: { hp: 105, atk: 140, def: 115, spa: 120, spd: 75, spe: 95 }, - abilities: { 0: "Mad Dragon" }, - weightkg: 120.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - requiredItem: "Devilite", - }, - deviljhostarving: { - num: 44, - name: "Deviljho-Starving", - types: ["Ghost", "Fighting"], - baseStats: { hp: 100, atk: 125, def: 110, spa: 75, spd: 100, spe: 95 }, - abilities: { 0: "Starving Bite" }, - weightkg: 120.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - duramboros: { - num: 45, - name: "Duramboros", - types: ["Grass", "Flying"], - baseStats: { hp: 110, atk: 115, def: 107, spa: 80, spd: 100, spe: 40 }, - abilities: { 0: "Grass Pelt", H: "Tempest Force" }, - weightkg: 110.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - rustramboros: { - num: 45, - name: "Rustramboros", - types: ["Ground", "Flying"], - baseStats: { hp: 110, atk: 115, def: 107, spa: 80, spd: 100, spe: 40 }, - abilities: { 0: "Mountaineer", H: "Tempest Force" }, - weightkg: 110.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - gigginox: { - num: 46, - name: "Gigginox", - types: ["Poison", "Dark"], - gender: "N", - baseStats: { hp: 98, atk: 80, def: 68, spa: 66, spd: 133, spe: 98 }, - abilities: { 0: "Liquid Ooze", H: "Long Reach" }, - weightkg: 50.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - balenox: { - num: 46, - name: "Balenox", - types: ["Electric", "Dark"], - baseStats: { hp: 98, atk: 66, def: 68, spa: 133, spd: 80, spe: 98 }, - abilities: { 0: "Volt Absorb", H: "Long Reach" }, - weightkg: 50.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - gobul: { - num: 47, - name: "Gobul", - types: ["Water", "Ghost"], - baseStats: { hp: 125, atk: 85, def: 80, spa: 85, spd: 100, spe: 50 }, - abilities: { 0: "Mimicry", H: "Color Change" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - greatjaggi: { - num: 48, - name: "Great Jaggi", - types: ["Normal"], - gender: "M", - baseStats: { hp: 90, atk: 107, def: 90, spa: 50, spd: 123, spe: 65 }, - abilities: { 0: "Skill Link", H: "Normalize" }, - weightkg: 45.5, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - greatbaggi: { - num: 49, - name: "Great Baggi", - types: ["Normal", "Psychic"], - gender: "M", - baseStats: { hp: 90, atk: 50, def: 107, spa: 90, spd: 123, spe: 65 }, - abilities: { 0: "Comatose", H: "Vital Spirit" }, - weightkg: 45.5, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - greatwroggi: { - num: 50, - name: "Great Wroggi", - types: ["Normal", "Poison"], - baseStats: { hp: 90, atk: 50, def: 65, spa: 123, spd: 107, spe: 90 }, - abilities: { 0: "Merciless", H: "Dry Skin" }, - weightkg: 45.5, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - lagiacrus: { - num: 51, - name: "Lagiacrus", - types: ["Water", "Electric"], - baseStats: { hp: 118, atk: 100, def: 110, spa: 100, spd: 110, spe: 43 }, - abilities: { 0: "Surge Surfer", 1: "Swift Swim", H: "Electromorphosis" }, - weightkg: 70.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - otherFormes: ["Abyssal Lagiacrus"], - }, - ivogiacrus: { - num: 51, - name: "Ivogiacrus", - types: ["Electric"], - baseStats: { hp: 118, atk: 110, def: 100, spa: 110, spd: 100, spe: 43 }, - abilities: { 0: "Terrestrial", 1: "Dense Cortex", H: "Electromorphosis" }, - weightkg: 70.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - landgiacrus: { - num: 51, - name: "Landgiacrus", - types: ["Water", "Ground"], - baseStats: { hp: 110, atk: 90, def: 96, spa: 125, spd: 100, spe: 60 }, - abilities: { 0: "Centrifuge", 1: "Competitive", H: "Electromorphosis" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - abyssallagiacrus: { - num: 51, - name: "Abyssal Lagiacrus", - baseSpecies: "Lagiacrus", - forme: "Mega", - types: ["Water", "Dark"], - baseStats: { hp: 118, atk: 106, def: 130, spa: 106, spd: 130, spe: 60 }, - abilities: { 0: "Riptide" }, - weightkg: 100.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - requiredItem: "Lagialite", - }, - lagombi: { - num: 52, - name: "Lagombi", - types: ["Normal", "Ice"], - baseStats: { hp: 88, atk: 112, def: 88, spa: 56, spd: 76, spe: 115 }, - abilities: { 0: "Fur Coat", H: "Slush Rush" }, - weightkg: 53.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - otherFormes: ["Snowbaron Lagombi"], - }, - snowbaronlagombi: { - num: 52, - name: "Snowbaron Lagombi", - baseSpecies: "Lagombi", - forme: "Mega", - types: ["Normal", "Ice"], - baseStats: { hp: 88, atk: 148, def: 101, spa: 68, spd: 95, spe: 150 }, - abilities: { 0: "Skill Link" }, - weightkg: 178.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - requiredItem: "Lagombite", - }, - royalludroth: { - num: 53, - name: "Royal Ludroth", - types: ["Water"], - gender: "M", - baseStats: { hp: 113, atk: 107, def: 70, spa: 69, spd: 85, spe: 90 }, - abilities: { 0: "Swift Swim", 1: "Spongy", H: "Water Absorb" }, - weightkg: 60.9, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - purpleludroth: { - num: 53, - name: "Purple Ludroth", - types: ["Poison"], - gender: "M", - baseStats: { hp: 113, atk: 107, def: 70, spa: 69, spd: 85, spe: 90 }, - abilities: { 0: "Liquid Ooze", 1: "Terrestrial", H: "Water Absorb" }, - weightkg: 60.9, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - nibelsnarf: { - num: 54, - name: "Nibelsnarf", - types: ["Ground"], - baseStats: { hp: 108, atk: 78, def: 108, spa: 112, spd: 82, spe: 50 }, - abilities: { 0: "Water Compaction", H: "Sand Spit" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - qurupeco: { - num: 55, - name: "Qurupeco", - types: ["Flying"], - baseStats: { hp: 75, atk: 75, def: 75, spa: 95, spd: 120, spe: 95 }, - abilities: { 0: "Dancer", H: "Triage" }, - weightkg: 20.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - uragaan: { - num: 56, - name: "Uragaan", - types: ["Ground"], - baseStats: { hp: 97, atk: 113, def: 105, spa: 46, spd: 90, spe: 108 }, - abilities: { 0: "No Guard", 1: "Relentless", H: "Sturdy" }, - weightkg: 80.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - otherFormes: ["Crystalbeard Uragaan"], - }, - crystalbearduragaan: { - num: 56, - name: "Crystalbeard Uragaan", - baseSpecies: "Uragaan", - forme: "Mega", - types: ["Ground", "Fairy"], - baseStats: { hp: 97, atk: 122, def: 132, spa: 68, spd: 143, spe: 88 }, - abilities: { 0: "Serene Grace" }, - weightkg: 80.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - requiredItem: "Uragaanite", - }, - volvidon: { - num: 57, - name: "Volvidon", - types: ["Normal", "Ground"], - baseStats: { hp: 60, atk: 72, def: 120, spa: 82, spd: 106, spe: 86 }, - abilities: { 0: "Pungency", H: "Neutralizing Gas" }, - weightkg: 58.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - zinogre: { - num: 58, - name: "Zinogre", - types: ["Electric", "Normal"], - baseStats: { hp: 73, atk: 103, def: 92, spa: 109, spd: 92, spe: 114 }, - abilities: { 0: "Speed Boost", H: "Insect Armor" }, - weightkg: 178.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - otherFormes: ["Thunderlord Zinogre"], - }, - stygiogre: { - num: 58, - name: "Stygiogre", - types: ["Dragon", "Normal"], - baseStats: { hp: 73, atk: 109, def: 92, spa: 103, spd: 92, spe: 114 }, - abilities: { 0: "Dragon Point", H: "Insect Armor" }, - weightkg: 178.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - zinogrehowling: { - num: 58, - name: "Zinogre-Howling", - types: ["Electric"], - baseStats: { hp: 90, atk: 95, def: 85, spa: 160, spd: 90, spe: 85 }, - abilities: { 0: "Howling Thunder" }, - weightkg: 178.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - thunderlordzinogre: { - num: 58, - name: "Thunderlord Zinogre", - baseSpecies: "Zinogre", - forme: "Mega", - types: ["Electric"], - baseStats: { hp: 73, atk: 133, def: 82, spa: 144, spd: 97, spe: 121 }, - abilities: { 0: "Galvanize" }, - weightkg: 178.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - requiredItem: "Zinogrite", - }, - alatreon: { - num: 59, - name: "Alatreon", - types: ["Dragon"], - baseStats: { hp: 100, atk: 105, def: 105, spa: 105, spd: 105, spe: 105 }, - abilities: { 0: "Escaton" }, - weightkg: 210.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - amatsu: { - num: 60, - name: "Amatsu", - types: ["Water", "Flying"], - baseStats: { hp: 101, atk: 91, def: 91, spa: 125, spd: 119, spe: 85 }, - abilities: { 0: "Regenerator", H: "Delta Stream" }, - weightkg: 392.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - ceadeus: { - num: 61, - name: "Ceadeus", - types: ["Dragon", "Water"], - baseStats: { hp: 100, atk: 110, def: 99, spa: 100, spd: 123, spe: 81 }, - abilities: { 0: "Shield Dust", 1: "Regenerator", H: "Primordial Sea" }, - weightkg: 200.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - goldeus: { - num: 61, - name: "Goldeus", - types: ["Steel", "Water"], - baseStats: { hp: 100, atk: 99, def: 123, spa: 110, spd: 100, spe: 81 }, - abilities: { 0: "No Guard", 1: "Good as Gold", H: "Primordial Sea" }, - weightkg: 250.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - diremiralis: { - num: 62, - name: "Dire Miralis", - types: ["Fire", "Water"], - baseStats: { hp: 124, atk: 97, def: 100, spa: 120, spd: 126, spe: 58 }, - abilities: { 0: "Megiddo's Gift" }, - weightkg: 335.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - jhenmohran: { - num: 63, - name: "Jhen Mohran", - types: ["Dragon", "Ground"], - baseStats: { hp: 104, atk: 101, def: 123, spa: 87, spd: 114, spe: 86 }, - abilities: { 0: "Purifying Salt", 1: "Sand Force", H: "Mold Breaker" }, - weightkg: 330.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - hallowedmohran: { - num: 63, - name: "Hallowed Mohran", - types: ["Ghost", "Ground"], - baseStats: { hp: 104, atk: 87, def: 114, spa: 101, spd: 123, spe: 86 }, - abilities: { 0: "Sacred Jewel", 1: "Cursed Body", H: "Mold Breaker" }, - weightkg: 330.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - astalos: { - num: 64, - name: "Astalos", - types: ["Bug", "Electric"], - gender: "M", - baseStats: { hp: 50, atk: 92, def: 84, spa: 120, spd: 112, spe: 125 }, - abilities: { 0: "Lightning Rod", H: "Surge Surfer" }, - weightkg: 45.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - otherFormes: ["Boltreaver Astalos"], - }, - boltreaverastalos: { - num: 64, - name: "Boltreaver Astalos", - baseSpecies: "Astalos", - forme: "Mega", - types: ["Bug", "Electric"], - baseStats: { hp: 50, atk: 114, def: 84, spa: 140, spd: 117, spe: 145 }, - abilities: { 0: "Quark Drive" }, - weightkg: 45.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - requiredItem: "Astalite", - }, - ahtalka: { - num: 65, - name: "Ahtal-Ka", - types: ["Bug", "Steel"], - gender: "F", - baseStats: { hp: 89, atk: 115, def: 129, spa: 71, spd: 107, spe: 80 }, - abilities: { 0: "Technician", 1: "Steelworker", H: "Empress Throne" }, - weightkg: 45.0, - eggGroups: ["Undiscovered"], - // tags: ["Neopteron"], - otherFormes: ["Ahtal-Neset"], - }, - ahtalneset: { - num: 65, - name: "Ahtal-Neset", - baseSpecies: "Ahtal-Ka", - forme: "Neset", - types: ["Bug", "Steel"], - gender: "F", - baseStats: { hp: 178, atk: 115, def: 129, spa: 71, spd: 107, spe: 20 }, - abilities: { 0: "Empress Throne" }, - weightkg: 1000, - eggGroups: ["Undiscovered"], - // tags: ["Neopteron"], - requiredAbility: "Empress Throne", - battleOnly: "Ahtal-Ka", - }, - gammoth: { - num: 66, - name: "Gammoth", - types: ["Ground", "Ice"], - gender: "F", - baseStats: { hp: 108, atk: 110, def: 130, spa: 75, spd: 103, spe: 57 }, - abilities: { 0: "Dauntless Shield", H: "Snow Warning" }, - weightkg: 220.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - otherFormes: ["Elderfrost Gammoth"], - }, - elderfrostgammoth: { - num: 66, - name: "Elderfrost Gammoth", - baseSpecies: "Gammoth", - forme: "Mega", - types: ["Ground", "Ice"], - baseStats: { hp: 108, atk: 130, def: 155, spa: 82, spd: 125, spe: 50 }, - abilities: { 0: "Icebreaker" }, - weightkg: 300, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - requiredItem: "Gammothite", - }, - glavenus: { - num: 67, - name: "Glavenus", - types: ["Fire", "Rock"], - gender: "M", - baseStats: { hp: 99, atk: 134, def: 105, spa: 80, spd: 71, spe: 94 }, - abilities: { 0: "Dulled Blades", H: "Beast Boost" }, - weightkg: 80.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - otherFormes: ["Hellblade Glavenus"], - }, - hellbladeglavenus: { - num: 67, - name: "Hellblade Glavenus", - baseSpecies: "Glavenus", - forme: "Mega", - types: ["Fire", "Steel"], - baseStats: { hp: 99, atk: 135, def: 115, spa: 95, spd: 100, spe: 106 }, - abilities: { 0: "Sharpness" }, - weightkg: 80.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - requiredItem: "Glavenite", - }, - acidinus: { - num: 67, - name: "Acidinus", - types: ["Poison", "Rock"], - baseStats: { hp: 99, atk: 134, def: 105, spa: 71, spd: 80, spe: 94 }, - abilities: { 0: "Perforating", 1: "Toxic Debris", H: "Beast Boost" }, - weightkg: 80.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - goremagala: { - num: 68, - name: "Gore Magala", - types: ["Dark", "Dragon"], - gender: "N", - baseStats: { hp: 95, atk: 96, def: 108, spa: 128, spd: 50, spe: 98 }, - abilities: { 0: "Wandering Spirit", H: "Overcoat" }, - weightkg: 230.3, - eggGroups: ["Undiscovered"], - // tags: ["Demi-Elder"], - evos: ["Shagaru Magala"], - }, - chaoticgore: { - num: 68, - name: "Chaotic Gore", - types: ["Dark", "Fairy"], - gender: "N", - baseStats: { hp: 95, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 }, - abilities: { 0: "Contrary" }, - weightkg: 230.3, - eggGroups: ["Undiscovered"], - // tags: ["Demi-Elder"], - }, - greatmaccao: { - num: 69, - name: "Great Maccao", - types: ["Fighting", "Grass"], - baseStats: { hp: 90, atk: 123, def: 107, spa: 50, spd: 65, spe: 90 }, - abilities: { 0: "Reckless", H: "Propeller Tail" }, - weightkg: 55.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - kechawacha: { - num: 70, - name: "Kecha Wacha", - types: ["Normal", "Water"], - baseStats: { hp: 77, atk: 68, def: 73, spa: 112, spd: 101, spe: 105 }, - abilities: { 0: "Mold Breaker", 1: "Mega Launcher", H: "Foolproof" }, - weightkg: 20.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - malfestio: { - num: 71, - name: "Malfestio", - types: ["Psychic", "Flying"], - baseStats: { hp: 108, atk: 70, def: 100, spa: 105, spd: 120, spe: 68 }, - abilities: { 0: "Wonder Skin", H: "Trace" }, - weightkg: 50.0, - otherFormes: ["Nightcloak Malfestio"], - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - nightcloakmalfestio: { - num: 71, - name: "Nightcloak Malfestio", - baseSpecies: "Malfestio", - forme: "Mega", - types: ["Ghost", "Flying"], - baseStats: { hp: 108, atk: 94, def: 110, spa: 120, spd: 150, spe: 68 }, - abilities: { 0: "Twilight Dust" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - requiredItem: "Malfestite", - }, - mizutsune: { - num: 72, - name: "Mizutsune", - types: ["Water", "Fairy"], - gender: "M", - baseStats: { hp: 88, atk: 93, def: 72, spa: 102, spd: 116, spe: 112 }, - abilities: { 0: "Liquid Voice", H: "Marvel Scale" }, - weightkg: 70.3, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - otherFormes: ["Soulseer Mizutsune"], - }, - soulseermizutsune: { - num: 72, - name: "Soulseer Mizutsune", - baseSpecies: "Mizutsune", - forme: "Mega", - types: ["Water", "Fairy"], - gender: "M", - baseStats: { hp: 88, atk: 100, def: 90, spa: 140, spd: 109, spe: 123 }, - abilities: { 0: "Ignite" }, - weightkg: 70.3, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - requiredItem: "Mizutsunite", - }, - vizutsune: { - num: 72, - name: "Vizutsune", - types: ["Fire", "Fairy"], - baseStats: { hp: 88, atk: 93, def: 72, spa: 116, spd: 102, spe: 112 }, - abilities: { 0: "Serene Grace", H: "Marvel Scale" }, - weightkg: 70.3, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - najarala: { - num: 73, - name: "Najarala", - types: ["Psychic", "Normal"], - baseStats: { hp: 97, atk: 73, def: 99, spa: 111, spd: 106, spe: 75 }, - abilities: { 0: "Battle Armor", H: "Soundproof" }, - weightkg: 100.0, - eggGroups: ["Undiscovered"], - // tags: ["Snake Wyvern"], - }, - nerscylla: { - num: 74, - name: "Nerscylla", - types: ["Poison", "Bug"], - baseStats: { hp: 80, atk: 110, def: 110, spa: 100, spd: 85, spe: 60 }, - abilities: { 0: "Lightning Rod", H: "Liquid Ooze" }, - weightkg: 40.0, - eggGroups: ["Undiscovered"], - // tags: ["Temnoceran"], - }, - shroudcylla: { - num: 74, - name: "Shroudcylla", - types: ["Dark", "Bug"], - baseStats: { hp: 80, atk: 110, def: 85, spa: 100, spd: 110, spe: 60 }, - abilities: { 0: "Thick Fat", H: "Liquid Ooze" }, - weightkg: 40.0, - eggGroups: ["Undiscovered"], - // tags: ["Temnoceran"], - }, - seltas: { - num: 75, - name: "Seltas", - types: ["Bug", "Flying"], - gender: "M", - baseStats: { hp: 60, atk: 110, def: 45, spa: 50, spd: 50, spe: 150 }, - abilities: { 0: "Swarm" }, - weightkg: 20.0, - eggGroups: ["Undiscovered"], - // tags: ["Neopteron"], - }, - seltasqueen: { - num: 76, - name: "Seltas Queen", - types: ["Bug", "Water"], - gender: "F", - baseStats: { hp: 95, atk: 90, def: 107, spa: 135, spd: 107, spe: 29 }, - abilities: { 0: "Mega Launcher", H: "Analytic" }, - weightkg: 180.0, - eggGroups: ["Undiscovered"], - // tags: ["Neopteron"], - }, - seregios: { - num: 77, - name: "Seregios", - types: ["Fighting", "Flying"], - baseStats: { hp: 90, atk: 127, def: 99, spa: 64, spd: 92, spe: 112 }, - abilities: { 0: "Weak Armor", 1: "Iron Barbs", H: "Well-Baked Body" }, - weightkg: 160.4, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - tetsucabra: { - num: 78, - name: "Tetsucabra", - types: ["Rock", "Steel"], - baseStats: { hp: 110, atk: 135, def: 105, spa: 60, spd: 81, spe: 65 }, - abilities: { 0: "Strong Jaw", 1: "Stamina", H: "Plow" }, - weightkg: 110.0, - eggGroups: ["Undiscovered"], - // tags: ["Amphibian"], - }, - zamtrios: { - num: 79, - name: "Zamtrios", - types: ["Water"], - baseStats: { hp: 110, atk: 90, def: 105, spa: 90, spd: 105, spe: 60 }, - abilities: { 0: "Ice-Armor", 1: "Puff-Up" }, - weightkg: 90, - eggGroups: ["Undiscovered"], - // tags: ["Amphibian"], - otherFormes: ["Zamtrios-Iced", "Zamtrios-Puffed"], - formeOrder: ["Zamtrios", "Zamtrios-Iced", "Zamtrios-Puffed"], - }, - zamtriosiced: { - num: 79, - name: "Zamtrios-Iced", - baseSpecies: "Zamtrios", - forme: "Iced", - types: ["Water", "Ice"], - baseStats: { hp: 110, atk: 125, def: 60, spa: 60, spd: 90, spe: 120 }, - abilities: { 0: "Ice-Armor" }, - weightkg: 110, - eggGroups: ["Undiscovered"], - // tags: ["Amphibian"], - requiredAbility: "Ice-Armor", - battleOnly: "Zamtrios", - }, - zamtriospuffed: { - num: 79, - name: "Zamtrios-Puffed", - baseSpecies: "Zamtrios", - forme: "Puffed", - types: ["Water"], - baseStats: { hp: 110, atk: 70, def: 115, spa: 90, spd: 120, spe: 60 }, - abilities: { 0: "Puff-Up" }, - weightkg: 95, - eggGroups: ["Undiscovered"], - // tags: ["Amphibian"], - requiredAbility: "Puff-Up", - battleOnly: "Zamtrios", - }, - dahrenmohran: { - num: 80, - name: "Dah'ren Mohran", - types: ["Rock", "Ground"], - baseStats: { hp: 104, atk: 123, def: 114, spa: 87, spd: 101, spe: 86 }, - abilities: { 0: "Rough Skin", H: "Sand Rush" }, - weightkg: 205.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - dalamadur: { - num: 81, - name: "Dalamadur", - types: ["Dragon", "Rock"], - baseStats: { hp: 110, atk: 100, def: 130, spa: 100, spd: 130, spe: 50 }, - abilities: { 0: "Direspike Scales", 1: "Iron Barbs", H: "Gemini Core" }, - weightkg: 500.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - shahmadur: { - num: 81, - name: "Shahmadur", - types: ["Dragon"], - baseStats: { hp: 100, atk: 125, def: 70, spa: 125, spd: 100, spe: 100 }, - abilities: { 0: "Shed Skin", H: "Reactive Core" }, - weightkg: 500.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - gogmazios: { - num: 82, - name: "Gogmazios", - types: ["Steel", "Dark"], - baseStats: { hp: 100, atk: 102, def: 108, spa: 129, spd: 100, spe: 73 }, - abilities: { 0: "Debris", H: "Sheer Force" }, - weightkg: 300.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - shagarumagala: { - num: 83, - name: "Shagaru Magala", - types: ["Dragon", "Fairy"], - gender: "N", - baseStats: { hp: 100, atk: 76, def: 96, spa: 130, spd: 110, spe: 95 }, - abilities: { 0: "Magic Guard" }, - weightkg: 230.3, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - prevo: "Gore Magala", - otherFormes: ["Risen Shagaru"], - }, - risenshagaru: { - num: 83, - name: "Risen Shagaru", - baseSpecies: "Shagaru Magala", - forme: "Mega", - types: ["Dragon", "Fairy"], - baseStats: { hp: 100, atk: 74, def: 100, spa: 150, spd: 123, spe: 103 }, - abilities: { 0: "Risen Burst" }, - weightkg: 230.3, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Risenite-S", - }, - nakarkos: { - num: 84, - name: "Nakarkos", - types: ["Dragon", "Ghost"], - baseStats: { hp: 116, atk: 85, def: 118, spa: 137, spd: 108, spe: 42 }, - abilities: { 0: "Vessel of Ruin" }, - weightkg: 250.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - valstrax: { - num: 85, - name: "Valstrax", - types: ["Steel", "Dragon"], - baseStats: { hp: 95, atk: 105, def: 115, spa: 80, spd: 85, spe: 135 }, - abilities: { 0: "Power Spot", H: "Strafe" }, - weightkg: 130.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - glowstrax: { - num: 85, - name: "Glowstrax", - types: ["Dragon"], - baseStats: { hp: 95, atk: 85, def: 80, spa: 115, spd: 105, spe: 135 }, - abilities: { 0: "Overload", H: "Strafe" }, - weightkg: 130.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - aknosom: { - num: 86, - name: "Aknosom", - types: ["Flying", "Fire"], - baseStats: { hp: 100, atk: 62, def: 90, spa: 110, spd: 82, spe: 88 }, - abilities: { 0: "Flame Body", H: "Dancer" }, - weightkg: 39.2, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - almudron: { - num: 87, - name: "Almudron", - types: ["Ground"], - baseStats: { hp: 112, atk: 100, def: 112, spa: 59, spd: 112, spe: 75 }, - abilities: { 0: "Mold Breaker", 1: "Stamina", H: "Earth Eater" }, - weightkg: 52.5, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - magmadron: { - num: 87, - name: "Magmadron", - types: ["Fire", "Ground"], - baseStats: { hp: 112, atk: 100, def: 112, spa: 59, spd: 112, spe: 75 }, - abilities: { 0: "Flash Fire", H: "Earth Eater" }, - weightkg: 52.5, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - anjanath: { - num: 88, - name: "Anjanath", - types: ["Fire"], - baseStats: { hp: 94, atk: 135, def: 80, spa: 74, spd: 78, spe: 93 }, - abilities: { 0: "Strong Jaw", H: "Anger Point" }, - weightkg: 155.5, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - fuljanath: { - num: 88, - name: "Fuljanath", - types: ["Electric"], - baseStats: { hp: 94, atk: 135, def: 80, spa: 74, spd: 78, spe: 93 }, - abilities: { 0: "Motor Drive", H: "Anger Point" }, - weightkg: 155.5, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - banbaro: { - num: 89, - name: "Banbaro", - types: ["Ground", "Ice"], - baseStats: { hp: 94, atk: 111, def: 99, spa: 66, spd: 80, spe: 81 }, - abilities: { 0: "Ice Body", 1: "Sap Sipper", H: "Rocky Payload" }, - weightkg: 95.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - bazelgeuse: { - num: 90, - name: "Bazelgeuse", - types: ["Fire", "Flying"], - baseStats: { hp: 102, atk: 120, def: 86, spa: 81, spd: 102, spe: 105 }, - abilities: { 0: "Skill Link", H: "Reckless" }, - weightkg: 220.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - otherFormes: ["Seething Bazelgeuse"], - }, - seethingbazelgeuse: { - num: 90, - name: "Seething Bazelgeuse", - baseSpecies: "Bazelgeuse", - forme: "Mega", - types: ["Fire", "Dark"], - baseStats: { hp: 102, atk: 138, def: 86, spa: 102, spd: 102, spe: 120 }, - abilities: { 0: "Anger Shell" }, - weightkg: 280.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - requiredItem: "Bazelnite", - }, - beotodus: { - num: 91, - name: "Beotodus", - types: ["Ice"], - baseStats: { hp: 78, atk: 110, def: 83, spa: 85, spd: 81, spe: 105 }, - abilities: { 0: "Hustle", H: "Slush Rush" }, - weightkg: 45.0, - eggGroups: ["Undiscovered"], - // tags: ["Piscine Wyvern"], - }, - bishaten: { - num: 92, - name: "Bishaten", - types: ["Fighting"], - baseStats: { hp: 110, atk: 102, def: 78, spa: 94, spd: 80, spe: 94 }, - abilities: { 0: "Ripen", H: "Magician" }, - weightkg: 55.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - orangaten: { - num: 92, - name: "Orangaten", - types: ["Fighting", "Fire"], - baseStats: { hp: 110, atk: 102, def: 78, spa: 94, spd: 80, spe: 94 }, - abilities: { 0: "Flame Body", H: "Magician" }, - weightkg: 55.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - dodogama: { - num: 93, - name: "Dodogama", - types: ["Rock"], - baseStats: { hp: 111, atk: 89, def: 96, spa: 76, spd: 95, spe: 53 }, - abilities: { 0: "Cheek Pouch", 1: "Unaware", H: "Stalwart" }, - weightkg: 48.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - espinas: { - num: 94, - name: "Espinas", - types: ["Poison", "Grass"], - baseStats: { hp: 98, atk: 100, def: 105, spa: 98, spd: 108, spe: 81 }, - abilities: { 0: "Unaware", H: "Toxic Debris" }, - weightkg: 130.4, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - flaminas: { - num: 94, - name: "Flaminas", - types: ["Fire", "Grass"], - baseStats: { hp: 98, atk: 100, def: 105, spa: 98, spd: 108, spe: 81 }, - abilities: { 0: "Poison Heal", H: "Toxic Debris" }, - weightkg: 130.4, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - palepinas: { - num: 94, - name: "Palepinas", - types: ["Fire", "Poison"], - baseStats: { hp: 98, atk: 100, def: 81, spa: 105, spd: 98, spe: 108 }, - abilities: { 0: "Blind Rage", H: "Toxic Debris" }, - weightkg: 130.4, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - garangolm: { - num: 95, - name: "Garangolm", - types: ["Grass", "Ground"], - baseStats: { hp: 113, atk: 115, def: 108, spa: 78, spd: 94, spe: 70 }, - abilities: { 0: "Rocky Payload", H: "Gorilla Tactics" }, - weightkg: 150.5, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - gossharag: { - num: 96, - name: "Goss Harag", - types: ["Ice", "Fighting"], - baseStats: { hp: 80, atk: 126, def: 104, spa: 80, spd: 102, spe: 68 }, - abilities: { 0: "Stakeout", H: "Adaptability" }, - weightkg: 240.5, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - greatgirros: { - num: 97, - name: "Great Girros", - types: ["Normal", "Electric"], - baseStats: { hp: 107, atk: 123, def: 90, spa: 50, spd: 90, spe: 65 }, - abilities: { 0: "Static", H: "Intimidate" }, - weightkg: 30.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - greatizuchi: { - num: 98, - name: "Great Izuchi", - types: ["Normal", "Fighting"], - baseStats: { hp: 90, atk: 123, def: 90, spa: 50, spd: 65, spe: 107 }, - abilities: { 0: "Hyper Cutter", H: "Sharpness" }, - weightkg: 45.5, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - greatjagras: { - num: 99, - name: "Great Jagras", - types: ["Normal", "Dark"], - baseStats: { hp: 123, atk: 90, def: 107, spa: 65, spd: 90, spe: 50 }, - abilities: { 0: "Innards Out", H: "Tangling Hair" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - jyuratodus: { - num: 100, - name: "Jyuratodus", - types: ["Ground", "Water"], - baseStats: { hp: 126, atk: 70, def: 60, spa: 114, spd: 95, spe: 75 }, - abilities: { 0: "Storm Drain", H: "Hydration" }, - weightkg: 90.3, - eggGroups: ["Undiscovered"], - // tags: ["Piscine Wyvern"], - }, - kuluyaku: { - num: 101, - name: "Kulu-Ya-Ku", - types: ["Normal", "Flying"], - baseStats: { hp: 75, atk: 95, def: 117, spa: 54, spd: 84, spe: 105 }, - abilities: { 0: "Quick Feet", H: "Unburden" }, - weightkg: 30.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - legiana: { - num: 102, - name: "Legiana", - types: ["Flying", "Ice"], - baseStats: { hp: 72, atk: 80, def: 65, spa: 116, spd: 108, spe: 122 }, - abilities: { 0: "Aerilate", H: "Tempest Energy" }, - weightkg: 45.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - lunagaron: { - num: 103, - name: "Lunagaron", - types: ["Ice", "Dark"], - baseStats: { hp: 88, atk: 125, def: 84, spa: 87, spd: 84, spe: 110 }, - abilities: { 0: "Hyper Cutter", H: "Tough Claws" }, - weightkg: 90.5, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - magnamalo: { - num: 104, - name: "Magnamalo", - types: ["Ghost", "Fire"], - gender: "M", - baseStats: { hp: 105, atk: 115, def: 86, spa: 88, spd: 86, spe: 102 }, - abilities: { 0: "Intimidate", H: "Defiant" }, - weightkg: 212.2, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - otherFormes: ["Scorned Magnamalo"], - }, - scornedmagnamalo: { - num: 104, - name: "Scorned Magnamalo", - baseSpecies: "Magnamalo", - forme: "Mega", - types: ["Ghost", "Dark"], - baseStats: { hp: 105, atk: 145, def: 90, spa: 100, spd: 110, spe: 100 }, - abilities: { 0: "Supreme Overlord" }, - weightkg: 212.2, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - requiredItem: "Magnamalite", - }, - odogaron: { - num: 105, - name: "Odogaron", - types: ["Dark"], - baseStats: { hp: 80, atk: 115, def: 95, spa: 90, spd: 95, spe: 85 }, - abilities: { 0: "Intimidate", 1: "Guard Dog", H: "Unburden" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - ebogaron: { - num: 105, - name: "Ebogaron", - types: ["Dragon"], - baseStats: { hp: 80, atk: 115, def: 95, spa: 95, spd: 90, spe: 85 }, - abilities: { 0: "Dragon Eater", H: "Unburden" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - paolumu: { - num: 106, - name: "Paolumu", - types: ["Normal", "Flying"], - baseStats: { hp: 102, atk: 105, def: 107, spa: 60, spd: 103, spe: 80 }, - abilities: { 0: "Cotton Down", H: "Fluffy" }, - weightkg: 40.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - nightlumu: { - num: 106, - name: "Nightlumu", - types: ["Dark", "Flying"], - baseStats: { hp: 102, atk: 60, def: 105, spa: 107, spd: 103, spe: 80 }, - abilities: { 0: "Cursed Body", H: "Fluffy" }, - weightkg: 40.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - pukeipukei: { - num: 107, - name: "Pukei-Pukei", - types: ["Poison", "Flying"], - baseStats: { hp: 72, atk: 74, def: 70, spa: 112, spd: 103, spe: 109 }, - abilities: { 0: "Liquid Ooze", H: "Power of Alchemy" }, - weightkg: 22.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - coralpukei: { - num: 107, - name: "Coral-Pukei", - types: ["Water", "Flying"], - baseStats: { hp: 72, atk: 70, def: 74, spa: 112, spd: 109, spe: 103 }, - abilities: { 0: "Spongy", H: "Power of Alchemy" }, - weightkg: 22.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - radobaan: { - num: 108, - name: "Radobaan", - types: ["Rock", "Ghost"], - baseStats: { hp: 90, atk: 112, def: 112, spa: 55, spd: 95, spe: 108 }, - abilities: { 0: "Solid Rock", H: "Shadow Shield" }, - weightkg: 190.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - raknakadaki: { - num: 109, - name: "Rakna-Kadaki", - types: ["Ghost", "Bug"], - gender: "F", - baseStats: { hp: 102, atk: 104, def: 112, spa: 104, spd: 78, spe: 64 }, - abilities: { 0: "Swarm", H: "Mummy" }, - weightkg: 188.8, - eggGroups: ["Undiscovered"], - // tags: ["Temnoceran"], - }, - pyrekadaki: { - num: 109, - name: "Pyre-Kadaki", - types: ["Fire", "Bug"], - gender: "F", - baseStats: { hp: 102, atk: 104, def: 78, spa: 104, spd: 112, spe: 64 }, - abilities: { 0: "Blaze", H: "Mummy" }, - weightkg: 188.8, - eggGroups: ["Undiscovered"], - // tags: ["Temnoceran"], - }, - somnacanth: { - num: 110, - name: "Somnacanth", - types: ["Water", "Ghost"], - gender: "F", - baseStats: { hp: 70, atk: 70, def: 65, spa: 125, spd: 96, spe: 116 }, - abilities: { 0: "Opportunist", H: "Magic Guard" }, - weightkg: 5.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - auroracanth: { - num: 110, - name: "Auroracanth", - types: ["Ice", "Ghost"], - gender: "F", - baseStats: { hp: 70, atk: 70, def: 65, spa: 125, spd: 96, spe: 116 }, - abilities: { 0: "Illusion", H: "Magic Guard" }, - weightkg: 5.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - tetranadon: { - num: 111, - name: "Tetranadon", - types: ["Water", "Grass"], - baseStats: { hp: 111, atk: 108, def: 89, spa: 85, spd: 108, spe: 54 }, - abilities: { 0: "Thick Fat", H: "Drizzle" }, - weightkg: 105.5, - eggGroups: ["Undiscovered"], - // tags: ["Amphibian"], - }, - tobikadachi: { - num: 112, - name: "Tobi-Kadachi", - types: ["Electric"], - baseStats: { hp: 60, atk: 105, def: 70, spa: 108, spd: 72, spe: 115 }, - abilities: { 0: "Prankster", H: "Static" }, - weightkg: 42.4, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Wyvern"], - }, - tzitziyaku: { - num: 113, - name: "Tzitzi-Ya-Ku", - types: ["Fairy", "Psychic"], - baseStats: { hp: 69, atk: 94, def: 76, spa: 126, spd: 104, spe: 55 }, - abilities: { 0: "Dazzling", H: "Anticipation" }, - weightkg: 40.0, - eggGroups: ["Undiscovered"], - // tags: ["Bird Wyvern"], - }, - gaismagorm: { - num: 114, - name: "Gaismagorm", - types: ["Dragon", "Dark"], - baseStats: { hp: 125, atk: 106, def: 115, spa: 95, spd: 115, spe: 60 }, - abilities: { 0: "Regenerator", H: "Dark Aura" }, - weightkg: 1000.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - ibushi: { - num: 115, - name: "Ibushi", - types: ["Dragon", "Flying"], - baseStats: { hp: 104, atk: 82, def: 112, spa: 102, spd: 122, spe: 88 }, - gender: "M", - abilities: { 0: "Air Lock", H: "Minus" }, - weightkg: 232.3, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - kulvetaroth: { - num: 116, - name: "Kulve Taroth", - types: ["Fire", "Steel"], - gender: "F", - baseStats: { hp: 107, atk: 87, def: 100, spa: 133, spd: 100, spe: 89 }, - abilities: { 0: "Good as Gold", H: "Magic Guard" }, - weightkg: 400.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - malzeno: { - num: 117, - name: "Malzeno", - types: ["Dark", "Fairy"], - baseStats: { hp: 90, atk: 110, def: 80, spa: 130, spd: 85, spe: 120 }, - abilities: { 0: "Vampirism", H: "Multiscale" }, - weightkg: 85.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - primozeno: { - num: 117, - name: "Primozeno", - types: ["Dragon", "Fairy"], - baseStats: { hp: 90, atk: 130, def: 120, spa: 110, spd: 85, spe: 80 }, - abilities: { 0: "Duke's Bayonet", 1: "Justified", H: "Multiscale" }, - weightkg: 85.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - namielle: { - num: 118, - name: "Namielle", - types: ["Water", "Electric"], - baseStats: { hp: 90, atk: 85, def: 73, spa: 140, spd: 135, spe: 80 }, - abilities: { 0: "Water Absorb", H: "Mucus Veil" }, - weightkg: 165.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - narwa: { - num: 119, - name: "Narwa", - types: ["Dragon", "Electric"], - baseStats: { hp: 105, atk: 100, def: 87, spa: 122, spd: 92, spe: 112 }, - gender: "F", - abilities: { 0: "Electric Surge", H: "Plus" }, - weightkg: 154.3, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Allmother Narwa"], - }, - allmothernarwa: { - num: 119, - name: "Allmother Narwa", - baseSpecies: "Narwa", - forme: "Mega", - types: ["Electric", "Flying"], - baseStats: { hp: 105, atk: 105, def: 92, spa: 150, spd: 108, spe: 90 }, - gender: "F", - abilities: { 0: "Thunderstorm" }, - weightkg: 154.3, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Narwanite", - }, - nergigante: { - num: 120, - name: "Nergigante", - types: ["Dragon", "Fighting"], - gender: "N", - baseStats: { hp: 94, atk: 119, def: 111, spa: 80, spd: 95, spe: 106 }, - abilities: { 0: "Guts", H: "Debris" }, - weightkg: 150.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - safijiiva: { - num: 121, - name: "Safi'jiiva", - types: ["Dragon", "Psychic"], - gender: "N", - baseStats: { hp: 100, atk: 91, def: 85, spa: 130, spd: 124, spe: 95 }, - abilities: { 0: "Multiscale" }, - weightkg: 200.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - prevo: "Xeno'jiiva", - }, - sharaishvalda: { - num: 122, - name: "Shara Ishvalda", - types: ["Psychic", "Rock"], - baseStats: { hp: 103, atk: 135, def: 120, spa: 115, spd: 90, spe: 51 }, - abilities: { 0: "Earth Eater", H: "Tablets of Ruin" }, - weightkg: 300.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - vaalhazak: { - num: 123, - name: "Vaal Hazak", - types: ["Poison", "Ghost"], - baseStats: { hp: 95, atk: 83, def: 100, spa: 110, spd: 145, spe: 75 }, - abilities: { 0: "Toxic Chain", H: "Perish Body" }, - weightkg: 125.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - blackveilhazak: { - num: 123, - name: "Blackveil Hazak", - types: ["Grass", "Ghost"], - baseStats: { hp: 95, atk: 100, def: 145, spa: 110, spd: 83, spe: 75 }, - abilities: { 0: "Pathogenic", H: "Perish Body" }, - weightkg: 125.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - velkhana: { - num: 124, - name: "Velkhana", - types: ["Dragon", "Ice"], - baseStats: { hp: 76, atk: 100, def: 65, spa: 140, spd: 100, spe: 128 }, - abilities: { 0: "Ice Scales", H: "Snow Warning" }, - weightkg: 55.4, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - xenojiiva: { - num: 125, - name: "Xeno'jiiva", - types: ["Dragon", "Psychic"], - gender: "N", - baseStats: { hp: 74, atk: 105, def: 70, spa: 125, spd: 100, spe: 116 }, - abilities: { 0: "Psychic Surge", H: "Quark Drive" }, - weightkg: 125.0, - evos: ["Safi'jiiva"], - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - zorahmagdaros: { - num: 126, - name: "Zorah Magdaros", - types: ["Dragon", "Fire"], - baseStats: { hp: 225, atk: 115, def: 70, spa: 100, spd: 70, spe: 20 }, - abilities: { 0: "Slow Start", 1: "Defeatist", H: "Mighty Wall" }, - weightkg: 700.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - ajarakan: { - num: 127, - name: "Ajarakan", - types: ["Fire", "Fighting"], - baseStats: { hp: 90, atk: 135, def: 115, spa: 60, spd: 78, spe: 88 }, - abilities: { 0: "Weak Armor", 1: "Reactive Touch", H: "Fervent Scales" }, - weightkg: 100.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - arkveld: { - num: 128, - name: "Arkveld", - types: ["Dragon", "Ghost"], - baseStats: { hp: 95, atk: 125, def: 110, spa: 65, spd: 75, spe: 110 }, - abilities: { 0: "Wyversion", H: "Long Reach" }, - weightkg: 110.0, - eggGroups: ["Undiscovered"], - }, - balahara: { - num: 129, - name: "Balahara", - types: ["Ground", "Water"], - baseStats: { hp: 87, atk: 109, def: 90, spa: 104, spd: 70, spe: 80 }, - abilities: { 0: "Sand Rush", H: "Oilslick" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - chatacabra: { - num: 130, - name: "Chatacabra", - types: ["Rock", "Fighting"], - baseStats: { hp: 109, atk: 101, def: 101, spa: 58, spd: 87, spe: 69 }, - abilities: { 0: "Iron Fist", H: "Rough Skin" }, - weightkg: 95.0, - eggGroups: ["Undiscovered"], - // tags: ["Amphibian"], - }, - doshaguma: { - num: 131, - name: "Doshaguma", - types: ["Fighting"], - baseStats: { hp: 110, atk: 105, def: 105, spa: 75, spd: 90, spe: 65 }, - abilities: { 0: "Aggravation", H: "Guts" }, - weightkg: 90.0, - eggGroups: ["Undiscovered"], - // tags: ["Fanged Beast"], - }, - hirabami: { - num: 137, - name: "Hirabami", - types: ["Ice"], - baseStats: { hp: 60, atk: 119, def: 71, spa: 74, spd: 82, spe: 121 }, - abilities: { 0: "Gale Wings", 1: "Levitate", H: "Ice Breaker" }, - weightkg: 10.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - jindahaad: { - num: 138, - name: "Jin Dahaad", - types: ["Ice", "Steel"], - baseStats: { hp: 114, atk: 100, def: 112, spa: 134, spd: 80, spe: 65 }, - abilities: { 0: "Mountaineer", 1: "Ice Breaker", H: "Heat Sink" }, - weightkg: 210.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - lalabarina: { - num: 139, - name: "Lala Barina", - types: ["Bug", "Grass"], - baseStats: { hp: 83, atk: 94, def: 102, spa: 92, spd: 103, spe: 83 }, - abilities: { 0: "Dancer", 1: "Flower Veil", H: "Tinted Lens" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Temnoceran"], - }, - nuudra: { - num: 140, - name: "Nu Udra", - types: ["Fire", "Dark"], - baseStats: { hp: 120, atk: 80, def: 94, spa: 115, spd: 112, spe: 59 }, - abilities: { 0: "Oilmucus", 1: "Regenerator", H: "Solar Power" }, - weightkg: 105.0, - eggGroups: ["Undiscovered"], - // tags: ["Cephalopod"], - }, - quematrice: { - num: 141, - name: "Quematrice", - types: ["Fire"], - baseStats: { hp: 85, atk: 111, def: 76, spa: 78, spd: 86, spe: 100 }, - abilities: { 0: "Gluttony", 1: "Flame Body", H: "Ignite" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - reydau: { - num: 142, - name: "Rey Dau", - types: ["Electric", "Flying"], - baseStats: { hp: 90, atk: 71, def: 96, spa: 131, spd: 82, spe: 110 }, - abilities: { 0: "Volt Absorb", 1: "Rocky Payload", H: "Tempest Energy" }, - weightkg: 110.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - rompopolo: { - num: 143, - name: "Rompopolo", - types: ["Poison"], - baseStats: { hp: 105, atk: 75, def: 83, spa: 104, spd: 107, spe: 80 }, - abilities: { 0: "Airbag", H: "Corrosion" }, - weightkg: 40.0, - eggGroups: ["Undiscovered"], - // tags: ["Brute Wyvern"], - }, - uthduna: { - num: 144, - name: "Uth Duna", - types: ["Water", "Fairy"], - baseStats: { hp: 155, atk: 100, def: 105, spa: 60, spd: 85, spe: 75 }, - abilities: { 0: "Rain Dish", H: "Oceanic Veil" }, - weightkg: 95.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - xuwu: { - num: 145, - name: "Xu Wu", - types: ["Dark", "Ghost"], - baseStats: { hp: 70, atk: 129, def: 87, spa: 71, spd: 108, spe: 105 }, - abilities: { 0: "Technician", H: "Ambush" }, - weightkg: 80.0, - eggGroups: ["Undiscovered"], - // tags: ["Cephalopod"], - }, - zohshia: { - num: 146, - name: "Zoh Shia", - types: ["Fire", "Electric"], - gender: "N", - baseStats: { hp: 112, atk: 131, def: 70, spa: 142, spd: 70, spe: 110 }, - abilities: { 0: "Wylk Encasing" }, - weightkg: 250.0, - eggGroups: ["Undiscovered"], - // tags: ["Construct"], - otherFormes: ["Zoh Shia-Encased"], - }, - zohshiaencased: { - num: 146, - name: "Zoh Shia-Encased", - baseSpecies: "Zoh Shia", - forme: "Encased", - types: ["Normal", "Dragon"], - gender: "N", - baseStats: { hp: 112, atk: 100, def: 115, spa: 102, spd: 115, spe: 66 }, - abilities: { 0: "Wylk Encasing" }, - weightkg: 350.0, - eggGroups: ["Undiscovered"], - // tags: ["Construct"], - requiredAbility: "Wylk Encasing", - battleOnly: "Zoh Shia", - }, - akuravashimu: { - num: 148, - name: "Akura Vashimu", - types: ["Bug", "Fairy"], - baseStats: { hp: 80, atk: 70, def: 110, spa: 100, spd: 150, spe: 70 }, - abilities: { 0: "Rocky Payload", H: "Crystalblight" }, - weightkg: 125.0, - eggGroups: ["Undiscovered"], - // tags: ["Carapaceon"], - }, - gureadomosu: { - num: 165, - name: "Gureadomosu", - types: ["Grass", "Water"], - baseStats: { hp: 105, atk: 92, def: 97, spa: 124, spd: 103, spe: 65 }, - abilities: { 0: "Storm Drain", 1: "Chlorophyll", H: "Protosynthesis" }, - weightkg: 170.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - odibatorasu: { - num: 175, - name: "Odibatorasu", - types: ["Rock"], - baseStats: { hp: 105, atk: 70, def: 120, spa: 130, spd: 120, spe: 55 }, - abilities: { 0: "Mega Launcher", H: "Dust Devil" }, - weightkg: 200.0, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - pokaradon: { - num: 178, - name: "Pokaradon", - types: ["Water", "Ice"], - baseStats: { hp: 110, atk: 105, def: 90, spa: 80, spd: 90, spe: 68 }, - abilities: { 0: "Thick Fat", H: "Ice Breaker" }, - weightkg: 80.0, - eggGroups: ["Undiscovered"], - // tags: ["Leviathan"], - }, - unknown: { - num: 181, - name: "Unknown", - types: ["Dark", "Flying"], - baseStats: { hp: 85, atk: 120, def: 80, spa: 120, spd: 80, spe: 115 }, - abilities: { 0: "Berserk", 1: "Aggravation", H: "Blind Rage" }, - weightkg: 120.5, - eggGroups: ["Undiscovered"], - // tags: ["Flying Wyvern"], - }, - disufiroa: { - num: 186, - name: "Disufiroa", - baseForme: "Fire", - types: ["Dragon", "Fire"], - baseStats: { hp: 101, atk: 92, def: 90, spa: 130, spd: 105, spe: 107 }, - abilities: { 0: "Frozen Calamity" }, - weightkg: 180.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Disufiroa-Sol"], - formeOrder: ["Disufiroa", "Disufiroa-Sol"], - }, - disufiroasol: { - num: 186, - name: "Disufiroa-Sol", - baseSpecies: "Disufiroa", - forme: "Solstice", - types: ["Dragon", "Ice"], - baseStats: { hp: 101, atk: 92, def: 90, spa: 130, spd: 105, spe: 107 }, - abilities: { 0: "Frozen Calamity" }, - weightkg: 180.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredMove: "Seraphic Shift", - battleOnly: "Disufiroa", - }, - duremudira: { - num: 187, - name: "Duremudira", - types: ["Ice", "Poison"], - baseStats: { hp: 95, atk: 119, def: 81, spa: 119, spd: 75, spe: 131 }, - abilities: { 0: "Corrupted Poison" }, - weightkg: 200.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - eruzerion: { - num: 188, - name: "Eruzerion", - types: ["Fire", "Ice"], - baseStats: { hp: 90, atk: 91, def: 89, spa: 110, spd: 120, spe: 105 }, - abilities: { 0: "Heat Sink", 1: "Permafrost" }, - weightkg: 150.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - harudomerugu: { - num: 191, - name: "Harudomerugu", - types: ["Steel"], - baseStats: { hp: 90, atk: 100, def: 125, spa: 90, spd: 100, spe: 100 }, - abilities: { 0: "Silver Subsume", H: "Iron Barbs" }, - weightkg: 300.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Harudomerugu-Z"], - }, - harudomeruguz: { - num: 191, - name: "Harudomerugu-Z", - baseSpecies: "Harudomerugu", - forme: "Mega", - types: ["Steel", "Psychic"], - baseStats: { hp: 90, atk: 130, def: 130, spa: 90, spd: 100, spe: 110 }, - abilities: { 0: "Stealth Silver" }, - weightkg: 300.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Harudomerite", - }, - inagami: { - num: 192, - name: "Inagami", - types: ["Grass", "Fighting"], - baseStats: { hp: 100, atk: 120, def: 118, spa: 72, spd: 98, spe: 97 }, - abilities: { 0: "Seed Sower", H: "Stamina" }, - weightkg: 150.2, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - otherFormes: ["Inagami-Z"], - }, - inagamiz: { - num: 192, - name: "Inagami-Z", - baseSpecies: "Inagami", - forme: "Mega", - types: ["Grass", "Fighting"], - baseStats: { hp: 100, atk: 126, def: 122, spa: 82, spd: 112, spe: 108 }, - abilities: { 0: "Bewitching Tail" }, - weightkg: 150.2, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - requiredItem: "Inagamite", - }, - shantien: { - num: 196, - name: "Shantien", - types: ["Flying"], - baseStats: { hp: 99, atk: 85, def: 79, spa: 122, spd: 111, spe: 112 }, - abilities: { 0: "Galvanize", 1: "Ignite", H: "Drizzle" }, - weightkg: 230.3, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - yamakurai: { - num: 198, - name: "Yama Kurai", - types: ["Grass"], - baseStats: { hp: 110, atk: 117, def: 80, spa: 117, spd: 80, spe: 100 }, - abilities: { 0: "Chlorophyll", H: "Effect Spore" }, - weightkg: 80, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - tartaronis: { - num: 207, - name: "Tartaronis", - types: ["Ground"], - baseStats: { hp: 160, atk: 88, def: 108, spa: 119, spd: 87, spe: 48 }, - abilities: { 0: "Shell Armor", H: "Levitate" }, - weightkg: 300, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - inferonis: { - num: 207, - name: "Inferonis", - types: ["Fire", "Ground"], - baseStats: { hp: 160, atk: 88, def: 108, spa: 119, spd: 87, spe: 48 }, - abilities: { 0: "Magma Armor", H: "Levitate" }, - weightkg: 300, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - }, - estrellian: { - num: 208, - name: "Estrellian", - types: ["Fire"], - baseStats: { hp: 90, atk: 100, def: 90, spa: 100, spd: 90, spe: 110 }, - abilities: { 0: "Butterfly Star" }, - weightkg: 100, - eggGroups: ["Undiscovered"], - // tags: ["Unclassified"], - otherFormes: ["Estrellian-Armored", "Estrellian-Winged"], - formeOrder: ["Estrellian-Armored", "Estrellian-Winged"], - }, - estrellianarmored: { - num: 208, - name: "Estrellian-Armored", - baseSpecies: "Estrellian", - forme: "Armored", - types: ["Fire", "Bug"], - baseStats: { hp: 90, atk: 80, def: 125, spa: 105, spd: 125, spe: 80 }, - abilities: { 0: "Butterfly Star" }, - weightkg: 100, - eggGroups: ["Undiscovered"], - // tags: ["Unclassified"], - requiredAbility: "Butterfly Star", - battleOnly: "Estrellian", - }, - estrellianwinged: { - num: 208, - name: "Estrellian-Winged", - baseSpecies: "Estrellian", - forme: "Winged", - types: ["Fire", "Flying"], - baseStats: { hp: 90, atk: 121, def: 70, spa: 109, spd: 90, spe: 125 }, - abilities: { 0: "Butterfly Star" }, - weightkg: 100, - eggGroups: ["Undiscovered"], - // tags: ["Unclassified"], - requiredAbility: "Butterfly Star", - battleOnly: "Estrellian", - }, - arbitrellian: { - num: 209, - name: "Arbitrellian", - types: ["Dragon", "Bug"], - baseStats: { hp: 90, atk: 70, def: 90, spa: 110, spd: 110, spe: 110 }, - abilities: { 0: "Destruction Star" }, - weightkg: 100.0, - eggGroups: ["Undiscovered"], - // tags: ["Unclassified"], - }, - arbitrelliancharged: { - num: 209, - name: "Arbitrellian-Charged", - baseSpecies: "Arbitrellian", - forme: "Charged", - types: ["Dragon", "Bug"], - baseStats: { hp: 90, atk: 64, def: 90, spa: 135, spd: 108, spe: 123 }, - abilities: { 0: "Destruction Star" }, - weightkg: 100, - eggGroups: ["Undiscovered"], - // tags: ["Unclassified"], - requiredAbility: "Destruction Star", - battleOnly: "Arbitrellian", - }, - doomtrellian: { - num: 209, - name: "Doomtrellian", - types: ["Fire", "Fairy"], - baseStats: { hp: 90, atk: 110, def: 110, spa: 70, spd: 90, spe: 110 }, - abilities: { 0: "Disaster Star" }, - weightkg: 100, - eggGroups: ["Undiscovered"], - // tags: ["Unclassified"], - }, - doomtrelliancharged: { - num: 209, - name: "Doomtrellian-Charged", - baseSpecies: "Doomtrellian", - forme: "Charged", - types: ["Fire", "Fairy"], - baseStats: { hp: 90, atk: 135, def: 108, spa: 64, spd: 90, spe: 123 }, - abilities: { 0: "Disaster Star" }, - weightkg: 100, - eggGroups: ["Undiscovered"], - // tags: ["Unclassified"], - requiredAbility: "Disaster Star", - battleOnly: "Doomtrellian", - }, - nefgarmat: { - num: 214, - name: "Nef-Garmat", - types: ["Ground", "Fairy"], - baseStats: { hp: 100, atk: 79, def: 100, spa: 121, spd: 109, spe: 97 }, - abilities: { 0: "Sand Stream", H: "Centrifuge" }, - weightkg: 150, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - color: "Green", - }, - agnaktorex: { - num: 215, - name: "Agnaktor-EX", - types: ["Fire", "Steel"], - baseStats: { hp: 79, atk: 67, def: 101, spa: 127, spd: 97, spe: 113 }, - abilities: { 0: "Protopyre" }, - weightkg: 60.0, - eggGroups: ["Undiscovered"], - // tags: ["EX"], - }, - olturalarval: { - num: 221, - name: "Oltura-Larval", - types: ["Bug", "Psychic"], - baseStats: { hp: 130, atk: 88, def: 112, spa: 88, spd: 100, spe: 45 }, - abilities: { 0: "Arena Trap" }, - weightkg: 700.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - evos: ["Oltura"], - }, - oltura: { - num: 221, - name: "Oltura", - types: ["Fairy", "Psychic"], - baseStats: { hp: 80, atk: 78, def: 82, spa: 126, spd: 130, spe: 124 }, - abilities: { 0: "Generalist" }, - weightkg: 50.0, - eggGroups: ["Undiscovered"], - // tags: ["Elder Dragon"], - prevo: "Oltura-Larval", - }, - palico: { - num: 506, - name: "Palico", - types: ["Normal"], - baseStats: { hp: 85, atk: 105, def: 80, spa: 100, spd: 80, spe: 110 }, - abilities: { 0: "Prankster", H: "Itembag" }, - weightkg: 10.0, - eggGroups: ["Undiscovered"], - // tags: ["Lynian"], - }, - kingshakalaka: { - num: 510, - name: "King Shakalaka", - types: ["Fire", "Grass"], - baseStats: { hp: 76, atk: 113, def: 75, spa: 113, spd: 75, spe: 95 }, - abilities: { 0: "Chlorophyll", H: "Stakeout" }, - weightkg: 9.0, - eggGroups: ["Undiscovered"], - // tags: ["Lynian"], - }, - palamute: { - num: 519, - name: "Palamute", - types: ["Normal", "Fighting"], - baseStats: { hp: 76, atk: 116, def: 88, spa: 70, spd: 82, spe: 113 }, - abilities: { 0: "Guard Dog", H: "Generalist" }, - weightkg: 40.0, - eggGroups: ["Undiscovered"], - // tags: ["Canyne"], - }, - spiribird: { - num: 500, - name: "Spiribird", - types: ["Grass", "Fairy"], - baseStats: { hp: 100, atk: 5, def: 10, spa: 60, spd: 225, spe: 50 }, - abilities: { 0: "Shield Dust", H: "Hospitality" }, - heightm: 0.3, - weightkg: 0.3, - // tags: ["Endemic"], - color: "Green", - eggGroups: ["Amorphous"], - }, - spiribirdred: { - num: 500, - name: "Spiribird-Red", - types: ["Dragon", "Fairy"], - baseStats: { hp: 100, atk: 5, def: 10, spa: 60, spd: 225, spe: 50 }, - abilities: { 0: "Shield Dust", H: "Hospitality" }, - heightm: 0.3, - weightkg: 0.3, - // tags: ["Endemic"], - color: "Red", - eggGroups: ["Amorphous"], - }, - spiribirdyellow: { - num: 500, - name: "Spiribird-Yellow", - types: ["Electric", "Fairy"], - baseStats: { hp: 100, atk: 5, def: 10, spa: 60, spd: 225, spe: 50 }, - abilities: { 0: "Shield Dust", H: "Hospitality" }, - heightm: 0.3, - weightkg: 0.3, - // tags: ["Endemic"], - color: "Yellow", - eggGroups: ["Amorphous"], - }, - spiribirdorange: { - num: 500, - name: "Spiribird-Orange", - types: ["Fire", "Fairy"], - baseStats: { hp: 100, atk: 5, def: 10, spa: 60, spd: 225, spe: 50 }, - abilities: { 0: "Shield Dust", H: "Hospitality" }, - heightm: 0.3, - weightkg: 0.3, - // tags: ["Endemic"], - color: "Red", - eggGroups: ["Amorphous"], - }, -}; diff --git a/data/mods/monsterhunter/rulesets.ts b/data/mods/monsterhunter/rulesets.ts deleted file mode 100644 index 3e095006c7..0000000000 --- a/data/mods/monsterhunter/rulesets.ts +++ /dev/null @@ -1,69 +0,0 @@ -export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = { - statusmod: { - effectType: 'Rule', - name: 'Status Mod', - desc: "Displays Dragonblight as a volatile", - onSwitchIn(pokemon) { - if (pokemon.status === 'dragonblight') { - this.add('-start', pokemon, 'dragonblight', '[silent]'); - } - }, - onSetStatus(status, target, source, effect) { - if (target.status === 'dragonblight') { - this.add('-start', target, 'dragonblight', '[silent]'); - } - }, - /* onCureStatus(pokemon, source, effect) { - const cured = effect?.status || pokemon.statusState?.prevStatus; - if (cured === 'dragonblight') { - this.add('-end', pokemon, 'dragonblight', '[silent]'); - } - }, */ - }, - megadatamod: { - effectType: 'Rule', - name: 'Mega Data Mod', - desc: 'Gives data on stats, Ability and types when a Pokémon Mega Evolves or undergoes Ultra Burst.', - onSwitchIn(pokemon) { - if (pokemon.species.forme.startsWith('Mega') || pokemon.species.forme.startsWith('Ultra')) { - this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); - } - }, - onAfterMega(pokemon) { - this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); - const species = pokemon.species; - let buf = `${species.name} `; - buf += ``; - buf += `${species.types[0]}`; - if (species.types[1]) { - buf += `${species.types[1]}`; - } - buf += ` `; - buf += `${species.abilities[0]}`; - const stats = []; - let stat: StatID; - for (stat in species.baseStats) { - const statNames: { [k in StatID]: string } = { hp: "HP", atk: "Atk", def: "Def", spa: "SpA", spd: "SpD", spe: "Spe" }; - stats.push(`${statNames[stat]}
${species.baseStats[stat]}
`); - } - buf += `${stats.join(' ')}`; - buf += ``; - this.add(`raw|
  • ${buf}
`); - }, - }, - spriteviewer: { - effectType: 'ValidatorRule', - name: 'Sprite Viewer', - desc: "Displays a fakemon's sprite in chat when it is switched in for the first time", - onBegin() { - this.add('rule', 'Sprite Viewer: Displays sprites in chat'); - }, - onSwitchIn(pokemon) { - if (!this.effectState[pokemon.species.id]) { - this.add('-message', `${pokemon.species.name}'s Sprite:`); - this.add(`raw|`); - this.effectState[pokemon.species.id] = true; - } - }, - }, -}; diff --git a/data/mods/monsterhunter/scripts.ts b/data/mods/monsterhunter/scripts.ts deleted file mode 100644 index 8013d0530a..0000000000 --- a/data/mods/monsterhunter/scripts.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const Scripts: ModdedBattleScriptsData = { - gen: 9, - pokemon: { - ignoringItem() { - return !!( - this.itemState.knockedOff || // Gen 3-4 - (this.battle.gen >= 5 && !this.isActive) || - (!this.getItem().ignoreKlutz && this.hasAbility('klutz')) || - this.volatiles['embargo'] || this.battle.field.pseudoWeather['magicroom'] || - this.volatiles['stench'] - ); - }, - }, -}; diff --git a/data/mods/scootopiav2/abilities.ts b/data/mods/scootopiav2/abilities.ts new file mode 100644 index 0000000000..90d59ddb10 --- /dev/null +++ b/data/mods/scootopiav2/abilities.ts @@ -0,0 +1,135 @@ +export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = { + mythicalpresence: { + name: "Mythical Presence", + shortDesc: "Lowers opposing Pokemon Special Attack by 1 stage when switching in.", + onStart(pokemon) { + let activated = false; + for (const target of pokemon.adjacentFoes()) { + if (!activated) { + this.add('-ability', pokemon, 'Mythical Presence', 'boost'); + activated = true; + } + if (target.volatiles['substitute']) { + this.add('-immune', target); + } else { + this.boost({ spa: -1 }, target, pokemon, null, true); + } + } + }, + }, + powerconstruct: { + onResidualOrder: 27, + onResidual(pokemon) { + if (pokemon.baseSpecies.baseSpecies !== 'Flocura' || pokemon.transformed || !pokemon.hp) return; + if (pokemon.species.id === 'flocuranexus' || pokemon.hp > pokemon.maxhp / 2) return; + this.add('-activate', pokemon, 'ability: Power Construct'); + pokemon.formeChange('Flocura-Nexus', this.effect, true); + pokemon.baseMaxhp = Math.floor(Math.floor( + 2 * pokemon.species.baseStats['hp'] + pokemon.set.ivs['hp'] + Math.floor(pokemon.set.evs['hp'] / 4) + 100 + ) * pokemon.level / 100 + 10); + const newMaxHP = pokemon.volatiles['dynamax'] ? (2 * pokemon.baseMaxhp) : pokemon.baseMaxhp; + pokemon.hp = newMaxHP - (pokemon.maxhp - pokemon.hp); + pokemon.maxhp = newMaxHP; + this.add('-heal', pokemon, pokemon.getHealth, '[silent]'); + }, + flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, + name: "Power Construct", + rating: 5, + num: 211, + }, + battlebond: { + shortDesc: "Change to a stronger forme after getting a KO.", + onSourceAfterFaint(length, target, source, effect) { + if (effect?.effectType !== 'Move') { + return; + } + if (source.species.id === 'soleron' && source.hp && !source.transformed && source.side.foe.pokemonLeft) { + this.add('-activate', source, 'ability: Battle Bond'); + source.formeChange('Soleron-Awakened', this.effect, true); + } + }, + onModifyMovePriority: -1, + flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, + name: "Battle Bond", + rating: 4, + num: 210, + }, + crystalheart: { + shortDesc: "User becomes Crystal type. While Crystal type, 33% boost to Def and SpD", + onStart(pokemon) { + if (pokemon.hasType('Crystal')) return false; + if (!pokemon.addType('Crystal')) return false; + pokemon.setType(["Crystal"]); + this.add('-start', pokemon, 'typechange', 'Crystal', '[from] ability: Crystal Heart'); + }, + onModifyDefPriority: 6, + onModifyDef(def, pokemon) { + if (pokemon.hasType('Crystal')) return this.chainModify(1 + (1 / 3)); + }, + onModifySpDPriority: 6, + onModifySpD(spd, pokemon) { + if (pokemon.hasType('Crystal')) return this.chainModify(1 + (1 / 3)); + }, + name: "Crystal Heart", + }, + wildheart: { + onStart(pokemon) { + if (pokemon.hasType('Feral')) return false; + if (!pokemon.addType('Feral')) return false; + pokemon.setType(["Feral"]); + this.add('-start', pokemon, 'typechange', "Feral", '[from] ability: Wild Heart'); + }, + onModifyAtkPriority: 6, + onModifyAtk(atk, pokemon) { + if (pokemon.hasType('Feral')) return this.chainModify(1 + (1 / 3)); + }, + onModifySpAPriority: 6, + onModifySpA(spa, pokemon) { + if (pokemon.hasType('Feral')) return this.chainModify(1 + (1 / 3)); + }, + name: "Wild Heart", + shortDesc: "User becomes Feral type. While Feral type, 33% boost to Atk and SpA", + }, + schooling: { + onStart(pokemon) { + if (pokemon.baseSpecies.baseSpecies !== 'Jaegorm' || pokemon.transformed) return; + if (pokemon.hp > pokemon.maxhp / 4) { + if (pokemon.species.id === 'jaegorm') { + pokemon.formeChange('Jaegorm-Collective'); + } + } else { + if (pokemon.species.id === 'jaegormcollective') { + pokemon.formeChange('Jaegorm'); + } + } + }, + onResidualOrder: 27, + onResidual(pokemon) { + if ( + pokemon.baseSpecies.baseSpecies !== 'Jaegorm' || pokemon.transformed || !pokemon.hp + ) return; + if (pokemon.hp > pokemon.maxhp / 4) { + if (pokemon.species.id === 'jaegorm') { + pokemon.formeChange('Jaegorm-Collective'); + } + } else { + if (pokemon.species.id === 'jaegormcollective') { + pokemon.formeChange('Jaegorm'); + } + } + }, + flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, + name: "Schooling", + shortDesc: "If user is Jaegorm, changes to Collective Form if it has > 1/4 max HP, else Solo Form.", + rating: 3, + num: 208, + }, + shellbunker: { + onDamage(damage, target, source, effect) { + if (effect.effectType !== 'Move' || !target.hurtThisTurn) return damage; + return damage / 2; + }, + name: "Shell Bunker", + shortDesc: "After taking damage, Def and SpD are doubled for the rest of the turn.", + }, +}; diff --git a/data/mods/scootopiav2/conditions.ts b/data/mods/scootopiav2/conditions.ts new file mode 100644 index 0000000000..7086193b90 --- /dev/null +++ b/data/mods/scootopiav2/conditions.ts @@ -0,0 +1,67 @@ +export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = { + frz: { + name: 'frz', + /* + start: " [Pokemon] was chilled!", + alreadyStarted: " [POKEMON] is already chilled!", + end: " [POKEMON] warmed up!", + endFromItem: " [POKEMON]'s [ITEM] warmed it up!", + endFromMove: " [POKEMON]'s [MOVE] warmed it up!", + cant: "[POKEMON] is chilled!", + */ + effectType: 'Status', + onStart(target, source, sourceEffect) { + if (sourceEffect && sourceEffect.effectType === 'Ability') { + this.add('-status', target, 'frz', '[from] ability: ' + sourceEffect.name, `[of] ${source}`); + } else { + this.add('-status', target, 'frz'); + } + }, + onResidualOrder: 9, + onResidual(pokemon) { + this.damage(pokemon.baseMaxhp / 16); + }, + onModifySpA(spa, pokemon) { + return this.chainModify(0.5); + }, + }, + slp: { + name: 'slp', + effectType: 'Status', + onStart(target, source, sourceEffect) { + if (sourceEffect && sourceEffect.effectType === 'Ability') { + this.add('-status', target, 'slp', '[from] ability: ' + sourceEffect.name, `[of] ${source}`); + } else if (sourceEffect && sourceEffect.effectType === 'Move') { + this.add('-status', target, 'slp', '[from] move: ' + sourceEffect.name); + } else { + this.add('-status', target, 'slp'); + } + // 1-3 turns + this.effectState.startTime = 3; + const sleepMoves = ["sleeppowder", "spore", "grasswhistle", "darkvoid", "hypnosis"]; + if (sourceEffect && sourceEffect.effectType === 'Move') { + if (sleepMoves.includes(sourceEffect.id)) this.effectState.startTime = 2; + } + this.effectState.time = this.effectState.startTime; + }, + onBeforeMovePriority: 10, + onBeforeMove(pokemon, target, move) { + if (pokemon.hasAbility('earlybird')) { + pokemon.statusState.time--; + } + pokemon.statusState.time--; + if (pokemon.statusState.time <= 0) { + pokemon.cureStatus(); + return; + } + this.add('cant', pokemon, 'slp'); + if (move.sleepUsable) { + return; + } + return false; + }, + onModifySpe(spe, pokemon) { + return this.chainModify(0.5); + }, + }, +}; diff --git a/data/mods/scootopiav2/formats-data.ts b/data/mods/scootopiav2/formats-data.ts new file mode 100644 index 0000000000..a917f298fa --- /dev/null +++ b/data/mods/scootopiav2/formats-data.ts @@ -0,0 +1,218 @@ +export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = { + arbrella: { + tier: "OU", + doublesTier: "DOU", + }, + krachiten: { + tier: "OU", + doublesTier: "DOU", + }, + scalaron: { + tier: "OU", + doublesTier: "DOU", + }, + rantler: { + tier: "OU", + doublesTier: "DOU", + }, + woolora: { + tier: "OU", + doublesTier: "DOU", + }, + albatrygon: { + tier: "OU", + doublesTier: "DOU", + }, + orchile: { + tier: "OU", + doublesTier: "DOU", + }, + embuck: { + tier: "OU", + doublesTier: "DOU", + }, + cindoe: { + tier: "OU", + doublesTier: "DOU", + }, + cobracotta: { + tier: "OU", + doublesTier: "DOU", + }, + minillow: { + tier: "OU", + doublesTier: "DOU", + }, + crossont: { + tier: "OU", + doublesTier: "DOU", + }, + torgeist: { + tier: "OU", + doublesTier: "DOU", + }, + platypad: { + tier: "OU", + doublesTier: "DOU", + }, + lumoth: { + tier: "OU", + doublesTier: "DOU", + }, + aurorowl: { + tier: "OU", + doublesTier: "DOU", + }, + carapex: { + tier: "OU", + doublesTier: "DOU", + }, + dojodo: { + tier: "OU", + doublesTier: "DOU", + }, + nunopod: { + tier: "OU", + doublesTier: "DOU", + }, + zeploom: { + tier: "OU", + doublesTier: "DOU", + }, + sturgard: { + tier: "OU", + doublesTier: "DOU", + }, + brawnkey: { + tier: "OU", + doublesTier: "DOU", + }, + salamalix: { + tier: "OU", + doublesTier: "DOU", + }, + cinnastar: { + tier: "OU", + doublesTier: "DOU", + }, + muabboa: { + tier: "OU", + doublesTier: "DOU", + }, + harzodia: { + tier: "OU", + doublesTier: "DOU", + }, + cyllindrake: { + tier: "OU", + doublesTier: "DOU", + }, + kodokai: { + tier: "OU", + doublesTier: "DOU", + }, + electangle: { + tier: "OU", + doublesTier: "DOU", + }, + dolphena: { + tier: "OU", + doublesTier: "DOU", + }, + soleron: { + tier: "OU", + doublesTier: "DOU", + }, + jaegorm: { + tier: "OU", + doublesTier: "DOU", + }, + elemadillo: { + tier: "OU", + doublesTier: "DOU", + }, + axolacred: { + tier: "OU", + doublesTier: "DOU", + }, + roscenti: { + tier: "OU", + doublesTier: "DOU", + }, + blunderbusk: { + tier: "OU", + doublesTier: "DOU", + }, + barracoth: { + tier: "OU", + doublesTier: "DOU", + }, + jamborai: { + tier: "OU", + doublesTier: "DOU", + }, + dracoil: { + tier: "OU", + doublesTier: "DOU", + }, + celespirit: { + tier: "OU", + doublesTier: "DOU", + }, + noxtrice: { + tier: "OU", + doublesTier: "DOU", + }, + avastar: { + tier: "OU", + doublesTier: "DOU", + }, + faerenheit: { + tier: "OU", + doublesTier: "DOU", + }, + cellsius: { + tier: "OU", + doublesTier: "DOU", + }, + kelven: { + tier: "OU", + doublesTier: "DOU", + }, + salaos: { + tier: "OU", + doublesTier: "DOU", + }, + morndos: { + tier: "OU", + doublesTier: "DOU", + }, + pythos: { + tier: "OU", + doublesTier: "DOU", + }, + corundell: { + tier: "OU", + doublesTier: "DOU", + }, + quadringo: { + tier: "OU", + doublesTier: "DOU", + }, + saphor: { + tier: "OU", + doublesTier: "DOU", + }, + fenreil: { + tier: "OU", + doublesTier: "DOU", + }, + efflor: { + tier: "OU", + doublesTier: "DOU", + }, + flocura: { + tier: "OU", + doublesTier: "DOU", + }, +}; diff --git a/data/mods/scootopiav2/items.ts b/data/mods/scootopiav2/items.ts new file mode 100644 index 0000000000..5b340b51a1 --- /dev/null +++ b/data/mods/scootopiav2/items.ts @@ -0,0 +1,88 @@ +export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { + crystalorb: { + name: "Crystal Orb", + num: 1001, + desc: "The holder's secondary type is replaced with Crystal. 20% boost to Crystal attacks.", + onBeforeSwitchIn(pokemon) { + if (this.effectState.usedSuperType && this.effectState.superTypeUser !== pokemon.fullname) return false; + if (pokemon.hasType('Crystal')) return false; + if (!pokemon.addType('Crystal')) return false; + pokemon.setType([pokemon.types[0], "Crystal"]); + this.effectState.usedSuperType = true; + this.effectState.superTypeUser = "first_switch"; + }, + onStart(pokemon) { + if (this.effectState.usedSuperType && this.effectState.superTypeUser === "first_switch") { + this.add('-message', pokemon.name + " is a Crystal type!"); + this.effectState.superTypeUser = pokemon.fullname; + } + if (this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname) { + this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); + } + }, + onUpdate(pokemon) { + if ( + this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname && !pokemon.hasType('Crystal') + ) { + pokemon.setType([pokemon.types[0], "Crystal"]); + this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); + } + }, + onTakeItem(item, pokemon, source) { + if (source?.hasType("Crystal")) { + return false; + } + return true; + }, + onBasePowerPriority: 15, + onBasePower(basePower, user, target, move) { + if (move && move.type === 'Crystal') { + return this.chainModify([0x1333, 0x1000]); + } + }, + gen: 9, + }, + feralorb: { + name: "Feral Orb", + num: 1002, + desc: "The holder's secondary type is replaced with Feral. 20% boost to Feral attacks.", + onBeforeSwitchIn(pokemon) { + if (this.effectState.usedSuperType && this.effectState.superTypeUser !== pokemon.fullname) return false; + if (pokemon.hasType('Feral')) return false; + if (!pokemon.addType('Feral')) return false; + pokemon.setType([pokemon.types[0], "Feral"]); + this.effectState.usedSuperType = true; + this.effectState.superTypeUser = "first_switch"; + }, + onStart(pokemon) { + if (this.effectState.usedSuperType && this.effectState.superTypeUser === "first_switch") { + this.add('-message', pokemon.name + " is a Feral type!"); + this.effectState.superTypeUser = pokemon.fullname; + } + if (this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname) { + this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); + } + }, + onUpdate(pokemon) { + if ( + this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname && !pokemon.hasType('Feral') + ) { + pokemon.setType([pokemon.types[0], "Feral"]); + this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); + } + }, + onTakeItem(item, pokemon, source) { + if (source?.hasType("Feral")) { + return false; + } + return true; + }, + onBasePowerPriority: 15, + onBasePower(basePower, user, target, move) { + if (move && move.type === 'Feral') { + return this.chainModify([0x1333, 0x1000]); + } + }, + gen: 9, + }, +}; diff --git a/data/mods/scootopiav2/learnsets.ts b/data/mods/scootopiav2/learnsets.ts new file mode 100644 index 0000000000..3573141dfa --- /dev/null +++ b/data/mods/scootopiav2/learnsets.ts @@ -0,0 +1,4473 @@ +export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTable = { + arbrella: { + learnset: { + woodhammer: ["9L1"], + seedbomb: ["9L1"], + grassyglide: ["9L1"], + bulletseed: ["9L1"], + solarblade: ["9L1"], + razorleaf: ["9L1"], + vinewhip: ["9L1"], + earthquake: ["9L1"], + bulldoze: ["9L1"], + drillrun: ["9L1"], + stoneedge: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + superpower: ["9L1"], + xscissor: ["9L1"], + lunge: ["9L1"], + skittersmack: ["9L1"], + nightslash: ["9L1"], + shadowclaw: ["9L1"], + slash: ["9L1"], + scratch: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + leafstorm: ["9L1"], + gigadrain: ["9L1"], + energyball: ["9L1"], + grassknot: ["9L1"], + grasspledge: ["9L1"], + frenzyplant: ["9L1"], + earthpower: ["9L1"], + scorchingsands: ["9L1"], + ancientpower: ["9L1"], + shadowball: ["9L1"], + shoreup: ["9L1"], + stealthrock: ["9L1"], + swordsdance: ["9L1"], + rockpolish: ["9L1"], + spikyshield: ["9L1"], + worryseed: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + safeguard: ["9L1"], + synthesis: ["9L1"], + substitute: ["9L1"], + facade: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + crystalcutter: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralshred: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + krachiten: { + learnset: { + aquacutter: ["9L1"], + focusenergy: ["9L1"], + firstimpression: ["9L1"], + leechlife: ["9L1"], + lunge: ["9L1"], + uturn: ["9L1"], + liquidation: ["9L1"], + superpower: ["9L1"], + crunch: ["9L1"], + psychicfangs: ["9L1"], + rapidspin: ["9L1"], + toxicspikes: ["9L1"], + toxic: ["9L1"], + recover: ["9L1"], + taunt: ["9L1"], + switcheroo: ["9L1"], + calmmind: ["9L1"], + bugbuzz: ["9L1"], + xscissor: ["9L1"], + bugbite: ["9L1"], + skittersmack: ["9L1"], + strugglebug: ["9L1"], + waterfall: ["9L1"], + surf: ["9L1"], + hydropump: ["9L1"], + scald: ["9L1"], + dive: ["9L1"], + bubble: ["9L1"], + waterpulse: ["9L1"], + brine: ["9L1"], + bubblebeam: ["9L1"], + psychocut: ["9L1"], + zenheadbutt: ["9L1"], + psychic: ["9L1"], + poisonjab: ["9L1"], + sludgebomb: ["9L1"], + shadowball: ["9L1"], + shadowclaw: ["9L1"], + darkpulse: ["9L1"], + nightslash: ["9L1"], + bite: ["9L1"], + assurance: ["9L1"], + payback: ["9L1"], + slash: ["9L1"], + scratch: ["9L1"], + weatherball: ["9L1"], + terrainpulse: ["9L1"], + honeclaws: ["9L1"], + lightscreen: ["9L1"], + safeguard: ["9L1"], + aquaring: ["9L1"], + lifedew: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + chillingwater: ["9L1"], + icespinner: ["9L1"], + helpinghand: ["9L1"], + quickguard: ["9L1"], + facade: ["9L1"], + haze: ["9L1"], + crystalcutter: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + scalaron: { + learnset: { + haze: ["9L1"], + whirlwind: ["9L1"], + roar: ["9L1"], + hurricane: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + mysticalfire: ["9L1"], + uturn: ["9L1"], + dragontail: ["9L1"], + defog: ["9L1"], + roost: ["9L1"], + toxic: ["9L1"], + willowisp: ["9L1"], + taunt: ["9L1"], + airslash: ["9L1"], + aircutter: ["9L1"], + wingattack: ["9L1"], + gust: ["9L1"], + dualwingbeat: ["9L1"], + aerialace: ["9L1"], + fly: ["9L1"], + acrobatics: ["9L1"], + heatwave: ["9L1"], + flareblitz: ["9L1"], + flamecharge: ["9L1"], + inferno: ["9L1"], + incinerate: ["9L1"], + firefang: ["9L1"], + firespin: ["9L1"], + ember: ["9L1"], + dragonpulse: ["9L1"], + dragonclaw: ["9L1"], + scaleshot: ["9L1"], + darkpulse: ["9L1"], + snarl: ["9L1"], + crunch: ["9L1"], + bite: ["9L1"], + thunderfang: ["9L1"], + shockwave: ["9L1"], + irontail: ["9L1"], + doubleedge: ["9L1"], + crushclaw: ["9L1"], + hyperbeam: ["9L1"], + tailwind: ["9L1"], + dragondance: ["9L1"], + memento: ["9L1"], + meanlook: ["9L1"], + scaryface: ["9L1"], + torment: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + facade: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + }, + }, + rantler: { + learnset: { + doubleedge: ["9L1"], + facade: ["9L1"], + hyperfang: ["9L1"], + bodyslam: ["9L1"], + quickattack: ["9L1"], + gigaimpact: ["9L1"], + headbutt: ["9L1"], + slash: ["9L1"], + fakeout: ["9L1"], + lastresort: ["9L1"], + retaliate: ["9L1"], + strength: ["9L1"], + scratch: ["9L1"], + iciclecrash: ["9L1"], + icefang: ["9L1"], + iceshard: ["9L1"], + earthquake: ["9L1"], + highhorsepower: ["9L1"], + stompingtantrum: ["9L1"], + superpower: ["9L1"], + brickbreak: ["9L1"], + revenge: ["9L1"], + rocksmash: ["9L1"], + crunch: ["9L1"], + bite: ["9L1"], + payback: ["9L1"], + haze: ["9L1"], + roar: ["9L1"], + assurance: ["9L1"], + thief: ["9L1"], + psychicfangs: ["9L1"], + wildcharge: ["9L1"], + thunderfang: ["9L1"], + megahorn: ["9L1"], + firstimpression: ["9L1"], + ironhead: ["9L1"], + hornleech: ["9L1"], + playrough: ["9L1"], + icebeam: ["9L1"], + blizzard: ["9L1"], + frostbreath: ["9L1"], + freezedry: ["9L1"], + aurorabeam: ["9L1"], + powdersnow: ["9L1"], + hypervoice: ["9L1"], + hyperbeam: ["9L1"], + snarl: ["9L1"], + darkpulse: ["9L1"], + surf: ["9L1"], + waterpulse: ["9L1"], + shockwave: ["9L1"], + mudslap: ["9L1"], + swordsdance: ["9L1"], + bulkup: ["9L1"], + taunt: ["9L1"], + nobleroar: ["9L1"], + workup: ["9L1"], + snowscape: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + auroraveil: ["9L1"], + grassyterrain: ["9L1"], + mistyterrain: ["9L1"], + yawn: ["9L1"], + babydolleyes: ["9L1"], + charm: ["9L1"], + focusenergy: ["9L1"], + howl: ["9L1"], + helpinghand: ["9L1"], + sheercold: ["9L1"], + honeclaws: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + icespinner: ["9L1"], + crystalcutter: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + }, + }, + woolora: { + learnset: { + moonblast: ["9L1"], + wildcharge:["9L1"], + healingwish: ["9L1"], + drainingkiss: ["9L1"], + mistyexplosion: ["9L1"], + disarmingvoice: ["9L1"], + mysticalfire: ["9L1"], + facade: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + storedpower: ["9L1"], + shadowball: ["9L1"], + energyball: ["9L1"], + playrough: ["9L1"], + highhorsepower: ["9L1"], + zenheadbutt: ["9L1"], + bodypress: ["9L1"], + megahorn: ["9L1"], + bounce: ["9L1"], + hyperbeam: ["9L1"], + gigaimpact: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + takedown: ["9L1"], + retaliate: ["9L1"], + headbutt: ["9L1"], + tackle: ["9L1"], + calmmind: ["9L1"], + moonlight: ["9L1"], + teleport: ["9L1"], + roar: ["9L1"], + wish: ["9L1"], + cottonguard: ["9L1"], + healbell: ["9L1"], + bulkup: ["9L1"], + mistyterrain: ["9L1"], + raindance: ["9L1"], + growl: ["9L1"], + babydolleyes: ["9L1"], + guardswap: ["9L1"], + helpinghand: ["9L1"], + batonpass: ["9L1"], + agility: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + }, + }, + albatrygon: { + learnset: { + encore: ["9L1"], + taunt: ["9L1"], + bravebird: ["9L1"], + helpinghand: ["9L1"], + acrobatics: ["9L1"], + beatup: ["9L1"], + drillpeck: ["9L1"], + dualwingbeat: ["9L1"], + fly: ["9L1"], + aerialace: ["9L1"], + pluck: ["9L1"], + peck: ["9L1"], + sacredsword: ["9L1"], + foulplay: ["9L1"], + darkestlariat: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + brutalswing: ["9L1"], + thief: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + takedown: ["9L1"], + gigaimpact: ["9L1"], + spikes: ["9L1"], + switcheroo: ["9L1"], + partingshot: ["9L1"], + defog: ["9L1"], + memento: ["9L1"], + featherdance: ["9L1"], + workup: ["9L1"], + smartstrike: ["9L1"], + steelwing: ["9L1"], + growl: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + snowscape: ["9L1"], + mistyterrain: ["9L1"], + skillswap: ["9L1"], + screech: ["9L1"], + tailwind: ["9L1"], + wonderroom: ["9L1"], + magicroom: ["9L1"], + mimic: ["9L1"], + allyswitch: ["9L1"], + focusenergy: ["9L1"], + laserfocus: ["9L1"], + tidyup: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + facade: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + whirlwind: ["9L1"], + endure: ["9L1"], + wideguard: ["9L1"], + quickguard: ["9L1"], + uturn: ["9L1"], + crystalcutter: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + feralspray: ["9L1"], + }, + }, + orchile: { + learnset: { + moonblast: ["9L1"], + dazzlinggleam: ["9L1"], + drainingkiss: ["9L1"], + sleeppowder: ["9L1"], + ragepowder: ["9L1"], + beatup: ["9L1"], + sludgebomb: ["9L1"], + clearsmog: ["9L1"], + gigadrain: ["9L1"], + leafstorm: ["9L1"], + energyball: ["9L1"], + earthpower: ["9L1"], + facade: ["9L1"], + mysticalfire: ["9L1"], + psychic: ["9L1"], + shadowball: ["9L1"], + darkpulse: ["9L1"], + strengthsap: ["9L1"], + willowisp: ["9L1"], + spikes: ["9L1"], + toxicspikes: ["9L1"], + toxic: ["9L1"], + stunspore: ["9L1"], + leechseed: ["9L1"], + calmmind: ["9L1"], + aromatherapy: ["9L1"], + synthesis: ["9L1"], + trickroom: ["9L1"], + sludge: ["9L1"], + acid: ["9L1"], + venoshock: ["9L1"], + gunkshot: ["9L1"], + poisonjab: ["9L1"], + crosspoison: ["9L1"], + poisonsting: ["9L1"], + solarbeam: ["9L1"], + grassknot: ["9L1"], + petaldance: ["9L1"], + vinewhip: ["9L1"], + megadrain: ["9L1"], + petalblizzard: ["9L1"], + seedbomb: ["9L1"], + magicalleaf: ["9L1"], + absorb: ["9L1"], + grassyglide: ["9L1"], + razorleaf: ["9L1"], + mudslap: ["9L1"], + dreameater: ["9L1"], + psychocut: ["9L1"], + nightslash: ["9L1"], + payback: ["9L1"], + pollenpuff: ["9L1"], + cut: ["9L1"], + endeavor: ["9L1"], + slash: ["9L1"], + helpinghand: ["9L1"], + wrap: ["9L1"], + bodyslam: ["9L1"], + tackle: ["9L1"], + growth: ["9L1"], + worryseed: ["9L1"], + sweetscent: ["9L1"], + safeguard: ["9L1"], + corrosivegas: ["9L1"], + poisonpowder: ["9L1"], + venomdrench: ["9L1"], + disable: ["9L1"], + curse: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + grassyterrain: ["9L1"], + attract: ["9L1"], + protect: ["9L1"], + substitute: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + snore: ["9L1"], + endure: ["9L1"], + crystalcutter: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralshred: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + embuck: { + learnset: { + flareblitz: ["9L1"], + beatup: ["9L1"], + blazekick: ["9L1"], + closecombat: ["9L1"], + highhorsepower: ["9L1"], + megahorn: ["9L1"], + uturn: ["9L1"], + morningsun: ["9L1"], + bulkup: ["9L1"], + willowisp: ["9L1"], + taunt: ["9L1"], + doublekick: ["9L1"], + tackle: ["9L1"], + growl: ["9L1"], + smokescreen: ["9L1"], + ember: ["9L1"], + sunnyday: ["9L1"], + flamecharge: ["9L1"], + snarl: ["9L1"], + agility: ["9L1"], + inferno: ["9L1"], + superpower: ["9L1"], + aerialace: ["9L1"], + assurance: ["9L1"], + attract: ["9L1"], + bounce: ["9L1"], + confide: ["9L1"], + darkpulse: ["9L1"], + doubleteam: ["9L1"], + echoedvoice: ["9L1"], + endure: ["9L1"], + energyball: ["9L1"], + facade: ["9L1"], + falseswipe: ["9L1"], + fly: ["9L1"], + focusblast: ["9L1"], + frustration: ["9L1"], + gigaimpact: ["9L1"], + heatwave: ["9L1"], + hyperbeam: ["9L1"], + incinerate: ["9L1"], + laserfocus: ["9L1"], + nastyplot: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + round: ["9L1"], + sleeptalk: ["9L1"], + snore: ["9L1"], + solarbeam: ["9L1"], + substitute: ["9L1"], + swagger: ["9L1"], + swordsdance: ["9L1"], + thief: ["9L1"], + throatchop: ["9L1"], + uproar: ["9L1"], + wildcharge:["9L1"], + workup: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + helpinghand: ["9L1"], + aurasphere: ["9L1"], + vacuumwave: ["9L1"], + crystalbash: ["9L1"], + crystalcage: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + cindoe: { + learnset: { + fierywrath: ["9L1"], + overheat: ["9L1"], + beatup: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + mysticalfire: ["9L1"], + psychic: ["9L1"], + nastyplot: ["9L1"], + calmmind: ["9L1"], + morningsun: ["9L1"], + taunt: ["9L1"], + moonlight: ["9L1"], + tackle: ["9L1"], + growl: ["9L1"], + smokescreen: ["9L1"], + ember: ["9L1"], + agility: ["9L1"], + inferno: ["9L1"], + blazekick: ["9L1"], + darkpulse: ["9L1"], + partingshot: ["9L1"], + aerialace: ["9L1"], + assurance: ["9L1"], + attract: ["9L1"], + bounce: ["9L1"], + confide: ["9L1"], + doubleteam: ["9L1"], + echoedvoice: ["9L1"], + endure: ["9L1"], + energyball: ["9L1"], + facade: ["9L1"], + falseswipe: ["9L1"], + focusblast: ["9L1"], + frustration: ["9L1"], + gigaimpact: ["9L1"], + incinerate: ["9L1"], + heatwave: ["9L1"], + hyperbeam: ["9L1"], + laserfocus: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + round: ["9L1"], + sleeptalk: ["9L1"], + snarl: ["9L1"], + snore: ["9L1"], + solarbeam: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + swordsdance: ["9L1"], + thief: ["9L1"], + throatchop: ["9L1"], + uproar: ["9L1"], + helpinghand: ["9L1"], + uturn: ["9L1"], + wildcharge:["9L1"], + willowisp: ["9L1"], + workup: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + cobracotta: { + learnset: { + powerwhip: ["9L1"], + toxic: ["9L1"], + petalblizzard: ["9L1"], + seedbomb: ["9L1"], + bulletseed: ["9L1"], + grassyglide: ["9L1"], + razorleaf: ["9L1"], + gunkshot: ["9L1"], + poisonjab: ["9L1"], + poisonfang: ["9L1"], + poisonsting: ["9L1"], + earthquake: ["9L1"], + bulldoze: ["9L1"], + stoneedge: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + rockblast: ["9L1"], + rollout: ["9L1"], + knockoff: ["9L1"], + suckerpunch: ["9L1"], + crunch: ["9L1"], + bite: ["9L1"], + brutalswing: ["9L1"], + payback: ["9L1"], + thief: ["9L1"], + psychicfangs: ["9L1"], + rocksmash: ["9L1"], + revenge: ["9L1"], + bodyslam: ["9L1"], + gigaimpact: ["9L1"], + wrap: ["9L1"], + gigadrain: ["9L1"], + energyball: ["9L1"], + leafstorm: ["9L1"], + grassknot: ["9L1"], + solarbeam: ["9L1"], + megadrain: ["9L1"], + petaldance: ["9L1"], + sludgebomb: ["9L1"], + venoshock: ["9L1"], + sludge: ["9L1"], + acid: ["9L1"], + acidspray: ["9L1"], + belch: ["9L1"], + darkpulse: ["9L1"], + earthpower: ["9L1"], + ancientpower: ["9L1"], + sweetscent: ["9L1"], + naturepower: ["9L1"], + hyperbeam: ["9L1"], + shellsmash: ["9L1"], + coil: ["9L1"], + glare: ["9L1"], + nastyplot: ["9L1"], + stealthrock: ["9L1"], + synthesis: ["9L1"], + leechseed: ["9L1"], + spitup: ["9L1"], + stockpile: ["9L1"], + swallow: ["9L1"], + focusenergy: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + grassyterrain: ["9L1"], + laserfocus: ["9L1"], + helpinghand: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + dragontail: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + minillow: { + learnset: { + haze: ["9L1"], + hydropump: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + chillingwater: ["9L1"], + moonblast: ["9L1"], + nastyplot: ["9L1"], + drainingkiss: ["9L1"], + mistyexplosion: ["9L1"], + icebeam: ["9L1"], + psychic: ["9L1"], + flipturn: ["9L1"], + moonlight: ["9L1"], + bubble: ["9L1"], + tailwhip: ["9L1"], + babydolleyes: ["9L1"], + aquajet: ["9L1"], + aquaring: ["9L1"], + bubblebeam: ["9L1"], + soak: ["9L1"], + waterfall: ["9L1"], + agility: ["9L1"], + dazzlinggleam: ["9L1"], + attract: ["9L1"], + blizzard: ["9L1"], + bodyslam: ["9L1"], + bounce: ["9L1"], + dive: ["9L1"], + doubleteam: ["9L1"], + drillrun: ["9L1"], + helpinghand: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + gigaimpact: ["9L1"], + snowscape: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + muddywater: ["9L1"], + mudshot: ["9L1"], + poisonjab: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + round: ["9L1"], + scaleshot: ["9L1"], + shadowball: ["9L1"], + sleeptalk: ["9L1"], + snore: ["9L1"], + substitute: ["9L1"], + swagger: ["9L1"], + swift: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + zenheadbutt: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + feralbite: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + followme: ["9L1"], + }, + }, + crossont: { + learnset: { + recover: ["9L1"], + megahorn: ["9L1"], + pinmissile: ["9L1"], + attackorder: ["9L1"], + closecombat: ["9L1"], + superpower: ["9L1"], + rockblast: ["9L1"], + circlethrow: ["9L1"], + knockoff: ["9L1"], + earthquake: ["9L1"], + stoneedge: ["9L1"], + spiritshackle: ["9L1"], + spikes: ["9L1"], + bulkup: ["9L1"], + focusenergy: ["9L1"], + submission: ["9L1"], + astonish: ["9L1"], + defensecurl: ["9L1"], + strugglebug: ["9L1"], + fling: ["9L1"], + armthrust: ["9L1"], + lockon: ["9L1"], + bulletseed: ["9L1"], + dynamicpunch: ["9L1"], + laserfocus: ["9L1"], + crosschop: ["9L1"], + wideguard: ["9L1"], + finalgambit: ["9L1"], + aerialace: ["9L1"], + attract: ["9L1"], + brickbreak: ["9L1"], + bugbite: ["9L1"], + bugbuzz: ["9L1"], + bulldoze: ["9L1"], + confide: ["9L1"], + covet: ["9L1"], + doubleteam: ["9L1"], + endeavor: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + fakeout: ["9L1"], + firepunch: ["9L1"], + focusblast: ["9L1"], + focuspunch: ["9L1"], + frustration: ["9L1"], + gigaimpact: ["9L1"], + gunkshot: ["9L1"], + helpinghand: ["9L1"], + hyperbeam: ["9L1"], + icepunch: ["9L1"], + lowkick: ["9L1"], + lowsweep: ["9L1"], + outrage: ["9L1"], + payback: ["9L1"], + poweruppunch: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + rockclimb: ["9L1"], + rockslide: ["9L1"], + rocksmash: ["9L1"], + rocktomb: ["9L1"], + roleplay: ["9L1"], + round: ["9L1"], + seedbomb: ["9L1"], + sleeptalk: ["9L1"], + smackdown: ["9L1"], + snore: ["9L1"], + spite: ["9L1"], + stompingtantrum: ["9L1"], + strength: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + taunt: ["9L1"], + thief: ["9L1"], + throatchop: ["9L1"], + thunderpunch: ["9L1"], + uproar: ["9L1"], + workup: ["9L1"], + xscissor: ["9L1"], + axekick: ["9L1"], + crystalcutter: ["9L1"], + crystalbash: ["9L1"], + crystalcage: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralresilience: ["9L1"], + }, + }, + torgeist: { + learnset: { + shadowball: ["9L1"], + facade: ["9L1"], + hex: ["9L1"], + ominouswind: ["9L1"], + boomburst: ["9L1"], + hypervoice: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + hurricane: ["9L1"], + airslash: ["9L1"], + weatherball: ["9L1"], + heatwave: ["9L1"], + icywind: ["9L1"], + darkpulse: ["9L1"], + shockwave: ["9L1"], + uturn: ["9L1"], + poltergeist: ["9L1"], + shadowsneak: ["9L1"], + phantomforce: ["9L1"], + astonish: ["9L1"], + dualwingbeat: ["9L1"], + acrobatics: ["9L1"], + suckerpunch: ["9L1"], + foulplay: ["9L1"], + thief: ["9L1"], + payback: ["9L1"], + headbutt: ["9L1"], + wrap: ["9L1"], + doubleedge: ["9L1"], + painsplit: ["9L1"], + trick: ["9L1"], + taunt: ["9L1"], + nastyplot: ["9L1"], + calmmind: ["9L1"], + willowisp: ["9L1"], + toxicthread: ["9L1"], + tailwind: ["9L1"], + defog: ["9L1"], + raindance: ["9L1"], + disable: ["9L1"], + workup: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + meanlook: ["9L1"], + perishsong: ["9L1"], + metalsound: ["9L1"], + gust: ["9L1"], + haze: ["9L1"], + screech: ["9L1"], + imprison: ["9L1"], + destinybond: ["9L1"], + memento: ["9L1"], + magiccoat: ["9L1"], + sunnyday: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralhealing: ["9L1"], + }, + }, + platypad: { + learnset: { + revivalblessing: ["9L1"], + wavecrash: ["9L1"], + wish: ["9L1"], + gigadrain: ["9L1"], + leafstorm: ["9L1"], + sludgebomb: ["9L1"], + weatherball: ["9L1"], + hydropump: ["9L1"], + scald: ["9L1"], + shadowball: ["9L1"], + flipturn: ["9L1"], + dragontail: ["9L1"], + poisonjab: ["9L1"], + petalblizzard: ["9L1"], + earthquake: ["9L1"], + slackoff: ["9L1"], + spikes: ["9L1"], + toxicspikes: ["9L1"], + roar: ["9L1"], + toxic: ["9L1"], + aromatherapy: ["9L1"], + haze: ["9L1"], + leechseed: ["9L1"], + stunspore: ["9L1"], + bellydrum: ["9L1"], + venoshock: ["9L1"], + sludgewave: ["9L1"], + poisonsting: ["9L1"], + crosspoison: ["9L1"], + poisontail: ["9L1"], + solarbeam: ["9L1"], + energyball: ["9L1"], + grassknot: ["9L1"], + magicalleaf: ["9L1"], + seedbomb: ["9L1"], + bulletseed: ["9L1"], + grassyglide: ["9L1"], + megadrain: ["9L1"], + absorb: ["9L1"], + aquatail: ["9L1"], + liquidation: ["9L1"], + surf: ["9L1"], + whirlpool: ["9L1"], + icywind: ["9L1"], + zenheadbutt: ["9L1"], + extrasensory: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + rockslide: ["9L1"], + rollout: ["9L1"], + outrage: ["9L1"], + shockwave: ["9L1"], + drainingkiss: ["9L1"], + nightshade: ["9L1"], + shadowclaw: ["9L1"], + wildcharge: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + fling: ["9L1"], + pollenpuff: ["9L1"], + doubleedge: ["9L1"], + hyperbeam: ["9L1"], + gigaimpact: ["9L1"], + bodyslam: ["9L1"], + covet: ["9L1"], + hypervoice: ["9L1"], + uproar: ["9L1"], + tackle: ["9L1"], + curse: ["9L1"], + moonlight: ["9L1"], + venomdrench: ["9L1"], + poisonpowder: ["9L1"], + yawn: ["9L1"], + defensecurl: ["9L1"], + attract: ["9L1"], + afteryou: ["9L1"], + charm: ["9L1"], + psychup: ["9L1"], + lifedew: ["9L1"], + amnesia: ["9L1"], + stockpile: ["9L1"], + swallow: ["9L1"], + spitup: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + snowscape: ["9L1"], + sandstorm: ["9L1"], + grassyterrain: ["9L1"], + safeguard: ["9L1"], + wideguard: ["9L1"], + block: ["9L1"], + helpinghand: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + facade: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + chillingwater: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralhealing: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + lumoth: { + learnset: { + shadowball: ["9L1"], + hex: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + bugbuzz: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + thunderbolt: ["9L1"], + thunder: ["9L1"], + quiverdance: ["9L1"], + willowisp: ["9L1"], + sleeppowder: ["9L1"], + defog: ["9L1"], + astonish: ["9L1"], + leer: ["9L1"], + infestation: ["9L1"], + stringshot: ["9L1"], + silverwind: ["9L1"], + psybeam: ["9L1"], + ragepowder: ["9L1"], + calmmind: ["9L1"], + expandingforce: ["9L1"], + allyswitch: ["9L1"], + chargebeam: ["9L1"], + confide: ["9L1"], + covet: ["9L1"], + darkpulse: ["9L1"], + doubleteam: ["9L1"], + dreameater: ["9L1"], + embargo: ["9L1"], + facade: ["9L1"], + frustration: ["9L1"], + grassknot: ["9L1"], + gravity: ["9L1"], + hyperbeam: ["9L1"], + laserfocus: ["9L1"], + lastresort: ["9L1"], + lightscreen: ["9L1"], + magiccoat: ["9L1"], + magicroom: ["9L1"], + protect: ["9L1"], + psychup: ["9L1"], + raindance: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + round: ["9L1"], + safeguard: ["9L1"], + shockwave: ["9L1"], + signalbeam: ["9L1"], + skillswap: ["9L1"], + sleeptalk: ["9L1"], + snatch: ["9L1"], + snore: ["9L1"], + strugglebug: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + haze: ["9L1"], + telekinesis: ["9L1"], + thunderwave: ["9L1"], + torment: ["9L1"], + helpinghand: ["9L1"], + trick: ["9L1"], + trickroom: ["9L1"], + uturn: ["9L1"], + wonderroom: ["9L1"], + zenheadbutt: ["9L1"], + silktrap: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + }, + }, + aurorowl: { + learnset: { + haze: ["9L1"], + frostbreath: ["9L1"], + dualwingbeat: ["9L1"], + icebeam: ["9L1"], + aircutter: ["9L1"], + hurricane: ["9L1"], + airslash: ["9L1"], + focusblast: ["9L1"], + iceshard: ["9L1"], + tripleaxel: ["9L1"], + aerialace: ["9L1"], + bravebird: ["9L1"], + uturn: ["9L1"], + nastyplot: ["9L1"], + sheercold: ["9L1"], + roost: ["9L1"], + defog: ["9L1"], + icywind: ["9L1"], + tackle: ["9L1"], + sandattack: ["9L1"], + gust: ["9L1"], + quickattack: ["9L1"], + whirlwind: ["9L1"], + featherdance: ["9L1"], + aurorabeam: ["9L1"], + attract: ["9L1"], + blizzard: ["9L1"], + confide: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + fly: ["9L1"], + frustration: ["9L1"], + gigaimpact: ["9L1"], + snowscape: ["9L1"], + hyperbeam: ["9L1"], + laserfocus: ["9L1"], + pluck: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + round: ["9L1"], + skyattack: ["9L1"], + sleeptalk: ["9L1"], + snore: ["9L1"], + steelwing: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + tailwind: ["9L1"], + thief: ["9L1"], + uproar: ["9L1"], + workup: ["9L1"], + crystalcutter: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + }, + }, + carapex: { + learnset: { + acrobatics: ["9L1"], + tailwind: ["9L1"], + megahorn: ["9L1"], + uturn: ["9L1"], + dualwingbeat: ["9L1"], + bodypress: ["9L1"], + knockoff: ["9L1"], + earthquake: ["9L1"], + stoneedge: ["9L1"], + stealthrock: ["9L1"], + defog: ["9L1"], + roost: ["9L1"], + irondefense: ["9L1"], + whirlwind: ["9L1"], + tackle: ["9L1"], + defensecurl: ["9L1"], + endure: ["9L1"], + rollout: ["9L1"], + furycutter: ["9L1"], + batonpass: ["9L1"], + reversal: ["9L1"], + bugbuzz: ["9L1"], + aerialace: ["9L1"], + airslash: ["9L1"], + allyswitch: ["9L1"], + attract: ["9L1"], + brutalswing: ["9L1"], + cut: ["9L1"], + dig: ["9L1"], + doubleteam: ["9L1"], + echoedvoice: ["9L1"], + energyball: ["9L1"], + facade: ["9L1"], + fly: ["9L1"], + frustration: ["9L1"], + gigadrain: ["9L1"], + helpinghand: ["9L1"], + hurricane: ["9L1"], + lastresort: ["9L1"], + leechlife: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + round: ["9L1"], + shadowball: ["9L1"], + shadowclaw: ["9L1"], + sleeptalk: ["9L1"], + snore: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + thief: ["9L1"], + uproar: ["9L1"], + workup: ["9L1"], + crystalcutter: ["9L1"], + crystalbash: ["9L1"], + crystalcage: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + wideguard: ["9L1"], + }, + }, + dojodo: { + learnset: { + highjumpkick: ["9L1"], + closecombat: ["9L1"], + drainpunch: ["9L1"], + bodypress: ["9L1"], + knockoff: ["9L1"], + icepunch: ["9L1"], + firepunch: ["9L1"], + thunderpunch: ["9L1"], + poisonjab: ["9L1"], + stompingtantrum: ["9L1"], + bravebird: ["9L1"], + bulkup: ["9L1"], + swordsdance: ["9L1"], + irondefense: ["9L1"], + taunt: ["9L1"], + coaching: ["9L1"], + peck: ["9L1"], + sandattack: ["9L1"], + armthrust: ["9L1"], + fakeout: ["9L1"], + forcepalm: ["9L1"], + whirlwind: ["9L1"], + brickbreak: ["9L1"], + batonpass: ["9L1"], + detect: ["9L1"], + jumpkick: ["9L1"], + drillpeck: ["9L1"], + matblock: ["9L1"], + reversal: ["9L1"], + gigaimpact: ["9L1"], + attract: ["9L1"], + confide: ["9L1"], + dig: ["9L1"], + dualwingbeat: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + featherdance: ["9L1"], + fling: ["9L1"], + focusblast: ["9L1"], + focuspunch: ["9L1"], + frustration: ["9L1"], + helpinghand: ["9L1"], + hyperbeam: ["9L1"], + ironhead: ["9L1"], + beatup: ["9L1"], + lowkick: ["9L1"], + lowsweep: ["9L1"], + payback: ["9L1"], + pluck: ["9L1"], + poweruppunch: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + rocksmash: ["9L1"], + roleplay: ["9L1"], + round: ["9L1"], + sleeptalk: ["9L1"], + snore: ["9L1"], + strength: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + superpower: ["9L1"], + swagger: ["9L1"], + throatchop: ["9L1"], + workup: ["9L1"], + jetpunch: ["9L1"], + quickguard: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalfortification: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralhealing: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + }, + }, + nunopod: { + learnset: { + lunge: ["9L1"], + beatup: ["9L1"], + leechlife: ["9L1"], + firstimpression: ["9L1"], + xscissor: ["9L1"], + furycutter: ["9L1"], + bugbite: ["9L1"], + earthquake: ["9L1"], + highhorsepower: ["9L1"], + stompingtantrum: ["9L1"], + bulldoze: ["9L1"], + dig: ["9L1"], + tripleaxel: ["9L1"], + highjumpkick: ["9L1"], + bodypress: ["9L1"], + rollingkick: ["9L1"], + brickbreak: ["9L1"], + tropkick: ["9L1"], + flipturn: ["9L1"], + zenheadbutt: ["9L1"], + ironhead: ["9L1"], + brutalswing: ["9L1"], + payback: ["9L1"], + blazekick: ["9L1"], + acrobatics: ["9L1"], + rapidspin: ["9L1"], + megakick: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + pound: ["9L1"], + bugbuzz: ["9L1"], + strugglebug: ["9L1"], + earthpower: ["9L1"], + scorchingsands: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + solarbeam: ["9L1"], + surf: ["9L1"], + shadowball: ["9L1"], + extrasensory: ["9L1"], + recover: ["9L1"], + stealthrock: ["9L1"], + workup: ["9L1"], + toxic: ["9L1"], + swordsdance: ["9L1"], + acidarmor: ["9L1"], + trickroom: ["9L1"], + rototiller: ["9L1"], + safeguard: ["9L1"], + sandstorm: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + grassyterrain: ["9L1"], + mistyterrain: ["9L1"], + psychicterrain: ["9L1"], + electricterrain: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + facade: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + zeploom: { + learnset: { + scorchingsands: ["9L1"], + facade: ["9L1"], + earthpower: ["9L1"], + mudslap: ["9L1"], + mudbomb: ["9L1"], + mudshot: ["9L1"], + energysiphon: ["9L1"], + gigadrain: ["9L1"], + energyball: ["9L1"], + leafstorm: ["9L1"], + grassknot: ["9L1"], + megadrain: ["9L1"], + nightshade: ["9L1"], + shadowball: ["9L1"], + hex: ["9L1"], + clearsmog: ["9L1"], + sludgebomb: ["9L1"], + acidspray: ["9L1"], + darkpulse: ["9L1"], + leafblade: ["9L1"], + seedbomb: ["9L1"], + bulletseed: ["9L1"], + earthquake: ["9L1"], + uturn: ["9L1"], + gunkshot: ["9L1"], + poisonjab: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + bounce: ["9L1"], + wrap: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + explosion: ["9L1"], + selfdestruct: ["9L1"], + pound: ["9L1"], + spore: ["9L1"], + synthesis: ["9L1"], + stealthrock: ["9L1"], + defog: ["9L1"], + toxic: ["9L1"], + encore: ["9L1"], + stunspore: ["9L1"], + memento: ["9L1"], + workup: ["9L1"], + leechseed: ["9L1"], + toxicthread: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + grassyterrain: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + ragepowder: ["9L1"], + crystalbash: ["9L1"], + crystalcage: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralshred: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + brawnkey: { + learnset: { + bodypress: ["9L1"], + facade: ["9L1"], + beatup: ["9L1"], + closecombat: ["9L1"], + drainpunch: ["9L1"], + rocksmash: ["9L1"], + submission: ["9L1"], + revenge: ["9L1"], + brickbreak: ["9L1"], + crosschop: ["9L1"], + karatechop: ["9L1"], + poweruppunch: ["9L1"], + vitalthrow: ["9L1"], + ironhead: ["9L1"], + heavyslam: ["9L1"], + steelroller: ["9L1"], + smartstrike: ["9L1"], + earthquake: ["9L1"], + highhorsepower: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + payback: ["9L1"], + thief: ["9L1"], + assurance: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + megakick: ["9L1"], + slam: ["9L1"], + gigaimpact: ["9L1"], + bind: ["9L1"], + pound: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + vacuumwave: ["9L1"], + flashcannon: ["9L1"], + mirrorshot: ["9L1"], + mirrorcoat: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + storedpower: ["9L1"], + shadowball: ["9L1"], + darkpulse: ["9L1"], + hypervoice: ["9L1"], + hyperbeam: ["9L1"], + triattack: ["9L1"], + irondefense: ["9L1"], + bulkup: ["9L1"], + stealthrock: ["9L1"], + spikes: ["9L1"], + calmmind: ["9L1"], + magiccoat: ["9L1"], + coaching: ["9L1"], + wideguard: ["9L1"], + workup: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + snowscape: ["9L1"], + psychicterrain: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + chillyreception: ["9L1"], + crystalcutter: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + }, + }, + salamalix: { + learnset: { + accelerock: ["9L1"], + stoneedge: ["9L1"], + beatup: ["9L1"], + rockslide: ["9L1"], + rockblast: ["9L1"], + rocktomb: ["9L1"], + rockthrow: ["9L1"], + rockpolish: ["9L1"], + ironhead: ["9L1"], + bulletpunch: ["9L1"], + irontail: ["9L1"], + metalclaw: ["9L1"], + earthquake: ["9L1"], + stompingtantrum: ["9L1"], + bulldoze: ["9L1"], + closecombat: ["9L1"], + superpower: ["9L1"], + bodypress: ["9L1"], + rocksmash: ["9L1"], + poweruppunch: ["9L1"], + revenge: ["9L1"], + brickbreak: ["9L1"], + crunch: ["9L1"], + bite: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + psychicfangs: ["9L1"], + zenheadbutt: ["9L1"], + firefang: ["9L1"], + thunderfang: ["9L1"], + outrage: ["9L1"], + dragonhammer: ["9L1"], + dragontail: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + retaliate: ["9L1"], + gigaimpact: ["9L1"], + stealthrock: ["9L1"], + spikes: ["9L1"], + swordsdance: ["9L1"], + bulkup: ["9L1"], + taunt: ["9L1"], + torment: ["9L1"], + scaryface: ["9L1"], + workup: ["9L1"], + irondefense: ["9L1"], + defensecurl: ["9L1"], + sandstorm: ["9L1"], + snowscape: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + focusenergy: ["9L1"], + laserfocus: ["9L1"], + honeclaws: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + roar: ["9L1"], + wideguard: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralbreath: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + }, + }, + cinnastar: { + learnset: { + sludgebomb: ["9L1"], + sludgewave: ["9L1"], + focusblast: ["9L1"], + clearsmog: ["9L1"], + poisonjab: ["9L1"], + powergem: ["9L1"], + stoneedge: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + earthquake: ["9L1"], + earthpower: ["9L1"], + toxic: ["9L1"], + recover: ["9L1"], + stealthrock: ["9L1"], + wish: ["9L1"], + haze: ["9L1"], + corrosivegas: ["9L1"], + sludge: ["9L1"], + acid: ["9L1"], + acidspray: ["9L1"], + venoshock: ["9L1"], + rocktomb: ["9L1"], + rollout: ["9L1"], + rockthrow: ["9L1"], + meteorbeam: ["9L1"], + ancientpower: ["9L1"], + sandtomb: ["9L1"], + magnitude: ["9L1"], + mudslap: ["9L1"], + dazzlinggleam: ["9L1"], + drainingkiss: ["9L1"], + psychic: ["9L1"], + psychocut: ["9L1"], + flashcannon: ["9L1"], + smartstrike: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + takedown: ["9L1"], + explosion: ["9L1"], + lightscreen: ["9L1"], + flash: ["9L1"], + afteryou: ["9L1"], + guardsplit: ["9L1"], + guardswap: ["9L1"], + skillswap: ["9L1"], + powertrick: ["9L1"], + harden: ["9L1"], + irondefense: ["9L1"], + acidarmor: ["9L1"], + safeguard: ["9L1"], + wonderroom: ["9L1"], + sandstorm: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + mortalspin: ["9L1"], + }, + }, + muabboa: { + learnset: { + earthquake: ["9L1"], + highhorsepower: ["9L1"], + stompingtantrum: ["9L1"], + bulldoze: ["9L1"], + closecombat: ["9L1"], + superpower: ["9L1"], + sacredsword: ["9L1"], + highjumpkick: ["9L1"], + machpunch: ["9L1"], + brickbreak: ["9L1"], + crosschop: ["9L1"], + karatechop: ["9L1"], + poweruppunch: ["9L1"], + rocksmash: ["9L1"], + submission: ["9L1"], + vitalthrow: ["9L1"], + revenge: ["9L1"], + uturn: ["9L1"], + xscissor: ["9L1"], + knockoff: ["9L1"], + nightslash: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + thief: ["9L1"], + leafblade: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + slash: ["9L1"], + gigaimpact: ["9L1"], + quickattack: ["9L1"], + fakeout: ["9L1"], + smartstrike: ["9L1"], + zenheadbutt: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + earthpower: ["9L1"], + scorchingsands: ["9L1"], + shadowball: ["9L1"], + hypervoice: ["9L1"], + hyperbeam: ["9L1"], + swordsdance: ["9L1"], + encore: ["9L1"], + switcheroo: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + grassyterrain: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + quickguard: ["9L1"], + crystaltail: ["9L1"], + crystalhealing: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + }, + }, + volvolpa: { + learnset: { + volttackle: ["9L1"], + wildcharge: ["9L1"], + helpinghand: ["9L1"], + thunderfang: ["9L1"], + spark: ["9L1"], + hyperfang: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + slash: ["9L1"], + scratch: ["9L1"], + quickattack: ["9L1"], + gigaimpact: ["9L1"], + icefang: ["9L1"], + crunch: ["9L1"], + uturn: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + voltswitch: ["9L1"], + chargebeam: ["9L1"], + discharge: ["9L1"], + risingvoltage: ["9L1"], + shockwave: ["9L1"], + electroweb: ["9L1"], + electroball: ["9L1"], + thundershock: ["9L1"], + hypervoice: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + icebeam: ["9L1"], + blizzard: ["9L1"], + frostbreath: ["9L1"], + darkpulse: ["9L1"], + snarl: ["9L1"], + thunderwave: ["9L1"], + sheercold: ["9L1"], + agility: ["9L1"], + eerieimpulse: ["9L1"], + workup: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + snowscape: ["9L1"], + electricterrain: ["9L1"], + tailwhip: ["9L1"], + screech: ["9L1"], + magnetrise: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + roar: ["9L1"], + icespinner: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + }, + }, + harzodia: { + learnset: { + allyswitch: ["9L1"], + solarbeam: ["9L1"], + helpinghand: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + meteorbeam: ["9L1"], + shadowball: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + dazzlinggleam: ["9L1"], + thunderbolt: ["9L1"], + calmmind: ["9L1"], + trick: ["9L1"], + agility: ["9L1"], + recover: ["9L1"], + thunderwave: ["9L1"], + healbell: ["9L1"], + futuresight: ["9L1"], + expandingforce: ["9L1"], + storedpower: ["9L1"], + dreameater: ["9L1"], + psybeam: ["9L1"], + confusion: ["9L1"], + zenheadbutt: ["9L1"], + thunder: ["9L1"], + chargebeam: ["9L1"], + shockwave: ["9L1"], + zapcannon: ["9L1"], + fling: ["9L1"], + hypervoice: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + hyperbeam: ["9L1"], + teleport: ["9L1"], + reflect: ["9L1"], + lightscreen: ["9L1"], + disable: ["9L1"], + eerieimpulse: ["9L1"], + gravity: ["9L1"], + healpulse: ["9L1"], + imprison: ["9L1"], + laserfocus: ["9L1"], + magicroom: ["9L1"], + metronome: ["9L1"], + mimic: ["9L1"], + psychicterrain: ["9L1"], + psychoshift: ["9L1"], + psychup: ["9L1"], + recycle: ["9L1"], + safeguard: ["9L1"], + speedswap: ["9L1"], + swift: ["9L1"], + trickroom: ["9L1"], + wish: ["9L1"], + wonderroom: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + quickguard: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralhealing: ["9L1"], + }, + }, + cyllindrake: { + learnset: { + spinout: ["9L1"], + heavyslam: ["9L1"], + stealthrock: ["9L1"], + steelroller: ["9L1"], + ironhead: ["9L1"], + metalclaw: ["9L1"], + dragonclaw: ["9L1"], + outrage: ["9L1"], + scaleshot: ["9L1"], + dragontail: ["9L1"], + dragonrush: ["9L1"], + highhorsepower: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + smackdown: ["9L1"], + rollout: ["9L1"], + superpower: ["9L1"], + bodypress: ["9L1"], + brickbreak: ["9L1"], + crunch: ["9L1"], + bite: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + firstimpression: ["9L1"], + uturn: ["9L1"], + wildcharge: ["9L1"], + thunderfang: ["9L1"], + firefang: ["9L1"], + heatcrash: ["9L1"], + flareblitz: ["9L1"], + rapidspin: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + tackle: ["9L1"], + steelbeam: ["9L1"], + flashcannon: ["9L1"], + mirrorshot: ["9L1"], + dracometeor: ["9L1"], + dragonpulse: ["9L1"], + dragonbreath: ["9L1"], + twister: ["9L1"], + earthpower: ["9L1"], + mudshot: ["9L1"], + mudslap: ["9L1"], + flamethrower: ["9L1"], + fireblast: ["9L1"], + darkpulse: ["9L1"], + aurasphere: ["9L1"], + sludgebomb: ["9L1"], + clearsmog: ["9L1"], + boomburst: ["9L1"], + hypervoice: ["9L1"], + hyperbeam: ["9L1"], + shiftgear: ["9L1"], + toxic: ["9L1"], + morningsun: ["9L1"], + irondefense: ["9L1"], + roar: ["9L1"], + honeclaws: ["9L1"], + workup: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + snowscape: ["9L1"], + dragondance: ["9L1"], + curse: ["9L1"], + metalsound: ["9L1"], + screech: ["9L1"], + leer: ["9L1"], + haze: ["9L1"], + tarshot: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + quickguard: ["9L1"], + helpinghand: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + feralspray: ["9L1"], + }, + }, + kodokai: { + learnset: { + haze: ["9L1"], + poltergeist: ["9L1"], + phantomforce: ["9L1"], + shadowpunch: ["9L1"], + astonish: ["9L1"], + firepunch: ["9L1"], + flamewheel: ["9L1"], + drainpunch: ["9L1"], + brickbreak: ["9L1"], + rocksmash: ["9L1"], + shadowball: ["9L1"], + hex: ["9L1"], + ominouswind: ["9L1"], + darkpulse: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + flameburst: ["9L1"], + ember: ["9L1"], + firespin: ["9L1"], + heatwave: ["9L1"], + dazzlinggleam: ["9L1"], + drainingkiss: ["9L1"], + sludgebomb: ["9L1"], + clearsmog: ["9L1"], + hypervoice: ["9L1"], + hyperbeam: ["9L1"], + moonlight: ["9L1"], + trickroom: ["9L1"], + wish: ["9L1"], + aromatherapy: ["9L1"], + willowisp: ["9L1"], + encore: ["9L1"], + destinybond: ["9L1"], + disable: ["9L1"], + safeguard: ["9L1"], + lightscreen: ["9L1"], + smokescreen: ["9L1"], + grudge: ["9L1"], + facade: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + mistyterrain: ["9L1"], + sweetscent: ["9L1"], + sweetkiss: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + electangle: { + learnset: { + wildcharge: ["9L1"], + gyroball: ["9L1"], + zingzap: ["9L1"], + powerwhip: ["9L1"], + earthquake: ["9L1"], + rockslide: ["9L1"], + heatcrash: ["9L1"], + superpower: ["9L1"], + bodypress: ["9L1"], + thunderbolt: ["9L1"], + discharge: ["9L1"], + voltswitch: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + overheat: ["9L1"], + dazzlinggleam: ["9L1"], + stealthrock: ["9L1"], + thunderwave: ["9L1"], + haze: ["9L1"], + aromatherapy: ["9L1"], + thunder: ["9L1"], + risingvoltage: ["9L1"], + spark: ["9L1"], + chargebeam: ["9L1"], + shockwave: ["9L1"], + electroball: ["9L1"], + electroweb: ["9L1"], + thundershock: ["9L1"], + grassknot: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + brickbreak: ["9L1"], + fling: ["9L1"], + payback: ["9L1"], + brutalswing: ["9L1"], + rocksmash: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + slam: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + swift: ["9L1"], + triattack: ["9L1"], + gigaimpact: ["9L1"], + hyperbeam: ["9L1"], + workup: ["9L1"], + helpinghand: ["9L1"], + agility: ["9L1"], + irondefense: ["9L1"], + electricterrain: ["9L1"], + eerieimpulse: ["9L1"], + magnetrise: ["9L1"], + magneticflux: ["9L1"], + lightscreen: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + flashcannon: ["9L1"], + ironhead: ["9L1"], + steelbeam: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + wideguard: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + dolphena: { + learnset: { + liquidation: ["9L1"], + flipturn: ["9L1"], + aquatail: ["9L1"], + waterfall: ["9L1"], + outrage: ["9L1"], + dragontail: ["9L1"], + dragonrush: ["9L1"], + scaleshot: ["9L1"], + earthquake: ["9L1"], + bulldoze: ["9L1"], + irontail: ["9L1"], + acrobatics: ["9L1"], + dualwingbeat: ["9L1"], + crunch: ["9L1"], + lashout: ["9L1"], + payback: ["9L1"], + firefang: ["9L1"], + icefang: ["9L1"], + thunderfang: ["9L1"], + psychicfangs: ["9L1"], + brickbreak: ["9L1"], + bodyslam: ["9L1"], + wrap: ["9L1"], + headbutt: ["9L1"], + gigaimpact: ["9L1"], + doubleedge: ["9L1"], + thrash: ["9L1"], + flail: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + hydropump: ["9L1"], + brine: ["9L1"], + bubblebeam: ["9L1"], + dive: ["9L1"], + waterpulse: ["9L1"], + watergun: ["9L1"], + whirlpool: ["9L1"], + dracometeor: ["9L1"], + dragonpulse: ["9L1"], + dragonbreath: ["9L1"], + twister: ["9L1"], + icebeam: ["9L1"], + blizzard: ["9L1"], + icywind: ["9L1"], + energyball: ["9L1"], + darkpulse: ["9L1"], + dragondance: ["9L1"], + moonlight: ["9L1"], + coil: ["9L1"], + defog: ["9L1"], + lightscreen: ["9L1"], + workup: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + sandstorm: ["9L1"], + snowscape: ["9L1"], + mistyterrain: ["9L1"], + laserfocus: ["9L1"], + focusenergy: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + chillingwater: ["9L1"], + roar: ["9L1"], + icespinner: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalcage: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + soleron: { + learnset: { + thunderbolt: ["9L1"], + thunder: ["9L1"], + discharge: ["9L1"], + voltswitch: ["9L1"], + shockwave: ["9L1"], + chargebeam: ["9L1"], + thundershock: ["9L1"], + hurricane: ["9L1"], + airslash: ["9L1"], + aircutter: ["9L1"], + gust: ["9L1"], + heatwave: ["9L1"], + weatherball: ["9L1"], + hypervoice: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + wildcharge: ["9L1"], + spark: ["9L1"], + bravebird: ["9L1"], + dualwingbeat: ["9L1"], + aerialace: ["9L1"], + fly: ["9L1"], + peck: ["9L1"], + drillpeck: ["9L1"], + skyattack: ["9L1"], + pluck: ["9L1"], + acrobatics: ["9L1"], + uturn: ["9L1"], + doubleedge: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + tackle: ["9L1"], + roost: ["9L1"], + defog: ["9L1"], + thunderwave: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + whirlwind: ["9L1"], + workup: ["9L1"], + featherdance: ["9L1"], + charge: ["9L1"], + metalsound: ["9L1"], + magneticflux: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + electricterrain: ["9L1"], + laserfocus: ["9L1"], + mistyterrain: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + wideguard: ["9L1"], + crystalcutter: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + }, + }, + soleronawakened: { + learnset: { + thunderbolt: ["9L1"], + thunder: ["9L1"], + discharge: ["9L1"], + voltswitch: ["9L1"], + shockwave: ["9L1"], + chargebeam: ["9L1"], + thundershock: ["9L1"], + hurricane: ["9L1"], + airslash: ["9L1"], + aircutter: ["9L1"], + gust: ["9L1"], + heatwave: ["9L1"], + weatherball: ["9L1"], + hypervoice: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + wildcharge: ["9L1"], + spark: ["9L1"], + bravebird: ["9L1"], + dualwingbeat: ["9L1"], + aerialace: ["9L1"], + fly: ["9L1"], + peck: ["9L1"], + drillpeck: ["9L1"], + skyattack: ["9L1"], + pluck: ["9L1"], + acrobatics: ["9L1"], + uturn: ["9L1"], + doubleedge: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + tackle: ["9L1"], + roost: ["9L1"], + defog: ["9L1"], + thunderwave: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + whirlwind: ["9L1"], + workup: ["9L1"], + featherdance: ["9L1"], + charge: ["9L1"], + metalsound: ["9L1"], + magneticflux: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + electricterrain: ["9L1"], + laserfocus: ["9L1"], + mistyterrain: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + wideguard: ["9L1"], + crystalcutter: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + }, + }, + jaegorm: { + learnset: { + firstimpression: ["9L1"], + calmmind: ["9L1"], + uturn: ["9L1"], + attackorder: ["9L1"], + lunge: ["9L1"], + leechlife: ["9L1"], + bugbite: ["9L1"], + xscissor: ["9L1"], + photonray: ["9L1"], + zenheadbutt: ["9L1"], + psychocut: ["9L1"], + knockoff: ["9L1"], + darkestlariat: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + thief: ["9L1"], + earthquake: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + stoneedge: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + superpower: ["9L1"], + brickbreak: ["9L1"], + rocksmash: ["9L1"], + crosschop: ["9L1"], + dragontail: ["9L1"], + dragonclaw: ["9L1"], + outrage: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + takedown: ["9L1"], + crushclaw: ["9L1"], + slash: ["9L1"], + gigaimpact: ["9L1"], + tackle: ["9L1"], + bugbuzz: ["9L1"], + strugglebug: ["9L1"], + silverwind: ["9L1"], + infestation: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + extrasensory: ["9L1"], + futuresight: ["9L1"], + psybeam: ["9L1"], + confusion: ["9L1"], + darkpulse: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + cosmicpower: ["9L1"], + honeclaws: ["9L1"], + workup: ["9L1"], + growth: ["9L1"], + acidarmor: ["9L1"], + imprison: ["9L1"], + hypnosis: ["9L1"], + magicroom: ["9L1"], + mirrorcoat: ["9L1"], + powerswap: ["9L1"], + psychicterrain: ["9L1"], + supersonic: ["9L1"], + wonderroom: ["9L1"], + safeguard: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + afteryou: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + pounce: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + jaegormcollective: { + learnset: { + firstimpression: ["9L1"], + calmmind: ["9L1"], + uturn: ["9L1"], + attackorder: ["9L1"], + lunge: ["9L1"], + leechlife: ["9L1"], + bugbite: ["9L1"], + xscissor: ["9L1"], + photongeyser: ["9L1"], + zenheadbutt: ["9L1"], + psychocut: ["9L1"], + knockoff: ["9L1"], + darkestlariat: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + thief: ["9L1"], + earthquake: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + stoneedge: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + superpower: ["9L1"], + brickbreak: ["9L1"], + rocksmash: ["9L1"], + crosschop: ["9L1"], + dragontail: ["9L1"], + dragonclaw: ["9L1"], + outrage: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + takedown: ["9L1"], + crushclaw: ["9L1"], + slash: ["9L1"], + gigaimpact: ["9L1"], + tackle: ["9L1"], + bugbuzz: ["9L1"], + strugglebug: ["9L1"], + silverwind: ["9L1"], + infestation: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + extrasensory: ["9L1"], + futuresight: ["9L1"], + psybeam: ["9L1"], + confusion: ["9L1"], + darkpulse: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + cosmicpower: ["9L1"], + honeclaws: ["9L1"], + workup: ["9L1"], + growth: ["9L1"], + acidarmor: ["9L1"], + imprison: ["9L1"], + hypnosis: ["9L1"], + magicroom: ["9L1"], + mirrorcoat: ["9L1"], + powerswap: ["9L1"], + psychicterrain: ["9L1"], + supersonic: ["9L1"], + wonderroom: ["9L1"], + safeguard: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + afteryou: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + pounce: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + elemadillo: { + learnset: { + thunderbolt: ["9L1"], + thunder: ["9L1"], + discharge: ["9L1"], + voltswitch: ["9L1"], + electroball: ["9L1"], + flashcannon: ["9L1"], + steelbeam: ["9L1"], + energyball: ["9L1"], + wildcharge: ["9L1"], + zingzap: ["9L1"], + ironhead: ["9L1"], + spinout: ["9L1"], + highhorsepower: ["9L1"], + uturn: ["9L1"], + rapidspin: ["9L1"], + shiftgear: ["9L1"], + thunderwave: ["9L1"], + reflect: ["9L1"], + lightscreen: ["9L1"], + eerieimpulse: ["9L1"], + agility: ["9L1"], + thundershock: ["9L1"], + tackle: ["9L1"], + growl: ["9L1"], + spark: ["9L1"], + thunderfang: ["9L1"], + metalclaw: ["9L1"], + safeguard: ["9L1"], + doubleedge: ["9L1"], + gigaimpact: ["9L1"], + bodyslam: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + round: ["9L1"], + bulldoze: ["9L1"], + rocktomb: ["9L1"], + rockslide: ["9L1"], + crunch: ["9L1"], + bite: ["9L1"], + electricterrain: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + sandstorm: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + endure: ["9L1"], + doubleshock: ["9L1"], + helpinghand: ["9L1"], + quickguard: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + }, + }, + axolacred: { + learnset: { + acrobatics: ["9L1"], + dracometeor: ["9L1"], + coreenforcer: ["9L1"], + dragontail: ["9L1"], + dragonpulse: ["9L1"], + airslash: ["9L1"], + meteorbeam: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + dazzlinggleam: ["9L1"], + drainingkiss: ["9L1"], + energyball: ["9L1"], + weatherball: ["9L1"], + flipturn: ["9L1"], + shedtail: ["9L1"], + morningsun: ["9L1"], + recover: ["9L1"], + defog: ["9L1"], + encore: ["9L1"], + dragonbreath: ["9L1"], + twister: ["9L1"], + dragonclaw: ["9L1"], + aerialace: ["9L1"], + dualwingbeat: ["9L1"], + fly: ["9L1"], + aircutter: ["9L1"], + gust: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + safeguard: ["9L1"], + mist: ["9L1"], + haze: ["9L1"], + futuresight: ["9L1"], + roost: ["9L1"], + extrasensory: ["9L1"], + shadowball: ["9L1"], + psychic: ["9L1"], + hypervoice: ["9L1"], + bodyslam: ["9L1"], + round: ["9L1"], + hyperbeam: ["9L1"], + raindance: ["9L1"], + snowscape: ["9L1"], + sunnyday: ["9L1"], + sandstorm: ["9L1"], + mistyterrain: ["9L1"], + psychicterrain: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + endure: ["9L1"], + chillingwater: ["9L1"], + stealthrock: ["9L1"], + helpinghand: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + healingwish: ["9L1"], + wish: ["9L1"], + }, + }, + roscenti: { + learnset: { + pinmissile: ["9L1"], + firstimpression: ["9L1"], + megahorn: ["9L1"], + leechlife: ["9L1"], + lunge: ["9L1"], + uturn: ["9L1"], + bulletseed: ["9L1"], + powerwhip: ["9L1"], + hornleech: ["9L1"], + solarblade: ["9L1"], + superpower: ["9L1"], + swordsdance: ["9L1"], + leechseed: ["9L1"], + growth: ["9L1"], + taunt: ["9L1"], + strugglebug: ["9L1"], + stringshot: ["9L1"], + bugbuzz: ["9L1"], + energyball: ["9L1"], + grassknot: ["9L1"], + solarbeam: ["9L1"], + vinewhip: ["9L1"], + razorleaf: ["9L1"], + bugbite: ["9L1"], + seedbomb: ["9L1"], + scratch: ["9L1"], + furycutter: ["9L1"], + slash: ["9L1"], + nightslash: ["9L1"], + leafblade: ["9L1"], + petalblizzard: ["9L1"], + suckerpunch: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + drillrun: ["9L1"], + synthesis: ["9L1"], + irontail: ["9L1"], + strength: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + gigaimpact: ["9L1"], + hyperbeam: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + pounce: ["9L1"], + trailblaze: ["9L1"], + quickguard: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalcage: ["9L1"], + crystalhealing: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + blunderbusk: { + learnset: { + haze: ["9L1"], + waterpulse: ["9L1"], + hydropump: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + chillingwater: ["9L1"], + aurasphere: ["9L1"], + darkpulse: ["9L1"], + dragonpulse: ["9L1"], + icebeam: ["9L1"], + energyball: ["9L1"], + flashcannon: ["9L1"], + terrainpulse: ["9L1"], + recover: ["9L1"], + shellsmash: ["9L1"], + stealthrock: ["9L1"], + tackle: ["9L1"], + bubble: ["9L1"], + withdraw: ["9L1"], + aquajet: ["9L1"], + whirlpool: ["9L1"], + bubblebeam: ["9L1"], + laserfocus: ["9L1"], + razorshell: ["9L1"], + acidarmor: ["9L1"], + muddywater: ["9L1"], + attract: ["9L1"], + blizzard: ["9L1"], + brine: ["9L1"], + dive: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + explosion: ["9L1"], + facade: ["9L1"], + focusblast: ["9L1"], + gigaimpact: ["9L1"], + snowscape: ["9L1"], + icywind: ["9L1"], + irondefense: ["9L1"], + lightscreen: ["9L1"], + liquidation: ["9L1"], + mudshot: ["9L1"], + payback: ["9L1"], + poisonjab: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + rockblast: ["9L1"], + round: ["9L1"], + screech: ["9L1"], + selfdestruct: ["9L1"], + shadowball: ["9L1"], + sleeptalk: ["9L1"], + sludgebomb: ["9L1"], + smartstrike: ["9L1"], + snore: ["9L1"], + steelroller: ["9L1"], + substitute: ["9L1"], + swagger: ["9L1"], + toxic: ["9L1"], + swift: ["9L1"], + torment: ["9L1"], + triattack: ["9L1"], + weatherball: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + barracoth: { + learnset: { + wavecrash: ["9L1"], + chillingwater: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + hydropump: ["9L1"], + beatup: ["9L1"], + icebeam: ["9L1"], + freezedry: ["9L1"], + liquidation: ["9L1"], + flipturn: ["9L1"], + tripleaxel: ["9L1"], + iceshard: ["9L1"], + iciclecrash: ["9L1"], + earthquake: ["9L1"], + bodypress: ["9L1"], + heavyslam: ["9L1"], + dragontail: ["9L1"], + slackoff: ["9L1"], + curse: ["9L1"], + sheercold: ["9L1"], + roar: ["9L1"], + auroraveil: ["9L1"], + chillyreception: ["9L1"], + slash: ["9L1"], + tackle: ["9L1"], + tailwhip: ["9L1"], + bubble: ["9L1"], + mudshot: ["9L1"], + workup: ["9L1"], + focusenergy: ["9L1"], + icefang: ["9L1"], + haze: ["9L1"], + brine: ["9L1"], + encore: ["9L1"], + nightslash: ["9L1"], + dive: ["9L1"], + aquatail: ["9L1"], + snowscape: ["9L1"], + attract: ["9L1"], + avalanche: ["9L1"], + blizzard: ["9L1"], + confide: ["9L1"], + doubleteam: ["9L1"], + drillrun: ["9L1"], + echoedvoice: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + fling: ["9L1"], + frostbreath: ["9L1"], + frustration: ["9L1"], + gigaimpact: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + irontail: ["9L1"], + protect: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + round: ["9L1"], + safeguard: ["9L1"], + sleeptalk: ["9L1"], + smartstrike: ["9L1"], + snore: ["9L1"], + substitute: ["9L1"], + superpower: ["9L1"], + swagger: ["9L1"], + thief: ["9L1"], + waterfall: ["9L1"], + waterpulse: ["9L1"], + aquacutter: ["9L1"], + helpinghand: ["9L1"], + wideguard: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + sturgard: { + learnset: { + wavecrash: ["9L1"], + headsmash: ["9L1"], + doubleedge: ["9L1"], + flipturn: ["9L1"], + liquidation: ["9L1"], + aquatail: ["9L1"], + aquajet: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + hydropump: ["9L1"], + earthpower: ["9L1"], + earthquake: ["9L1"], + bulldoze: ["9L1"], + stoneedge: ["9L1"], + waterpulse: ["9L1"], + dive: ["9L1"], + rockslide: ["9L1"], + rockblast: ["9L1"], + drainingkiss: ["9L1"], + chillingwater: ["9L1"], + raindance: ["9L1"], + stealthrock: ["9L1"], + sandstorm: ["9L1"], + sunnyday: ["9L1"], + mistyterrain: ["9L1"], + muddywater: ["9L1"], + mudshot: ["9L1"], + watergun: ["9L1"], + rockpolish: ["9L1"], + irondefense: ["9L1"], + bodypress: ["9L1"], + bodyslam: ["9L1"], + bonerush: ["9L1"], + amnesia: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + protect: ["9L1"], + substitute: ["9L1"], + endure: ["9L1"], + reflect: ["9L1"], + irontail: ["9L1"], + ironhead: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + curse: ["9L1"], + feralrush: ["9L1"], + feralspray: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + crystalbash: ["9L1"], + crystaltail: ["9L1"], + crystalcage: ["9L1"], + crystalbeam: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + } + }, + jamborai: { + learnset: { + sludgebomb: ["9L1"], + sludgewave: ["9L1"], + clearsmog: ["9L1"], + acidspray: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + storedpower: ["9L1"], + futuresight: ["9L1"], + shadowball: ["9L1"], + hydropump: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + chillingwater: ["9L1"], + icebeam: ["9L1"], + blizzard: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + toxic: ["9L1"], + recover: ["9L1"], + toxicspikes: ["9L1"], + calmmind: ["9L1"], + acidarmor: ["9L1"], + triattack: ["9L1"], + teleport: ["9L1"], + sludge: ["9L1"], + psybeam: ["9L1"], + confusion: ["9L1"], + acid: ["9L1"], + gastroacid: ["9L1"], + bodyslam: ["9L1"], + gunkshot: ["9L1"], + zenheadbutt: ["9L1"], + psychocut: ["9L1"], + wrap: ["9L1"], + wringout: ["9L1"], + hyperbeam: ["9L1"], + bubblebeam: ["9L1"], + darkpulse: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + venoshock: ["9L1"], + poisonsting: ["9L1"], + poisongas: ["9L1"], + skillswap: ["9L1"], + guardswap: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + safeguard: ["9L1"], + powertrick: ["9L1"], + trickroom: ["9L1"], + wonderroom: ["9L1"], + mirrorcoat: ["9L1"], + magiccoat: ["9L1"], + magicroom: ["9L1"], + embargo: ["9L1"], + mortalspin: ["9L1"], + twinbeam: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralpower: ["9L1"], + feralhealing: ["9L1"], + }, + }, + dracoil: { + learnset: { + belch: ["9L1"], + roar: ["9L1"], + outrage: ["9L1"], + dragontail: ["9L1"], + dragonrush: ["9L1"], + dualwingbeat: ["9L1"], + acrobatics: ["9L1"], + earthquake: ["9L1"], + irontail: ["9L1"], + defog: ["9L1"], + ironhead: ["9L1"], + dracometeor: ["9L1"], + dragonpulse: ["9L1"], + hurricane: ["9L1"], + airslash: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + icebeam: ["9L1"], + thunderbolt: ["9L1"], + darkpulse: ["9L1"], + coil: ["9L1"], + dragondance: ["9L1"], + glare: ["9L1"], + roost: ["9L1"], + toxic: ["9L1"], + tackle: ["9L1"], + leer: ["9L1"], + gust: ["9L1"], + tailwhip: ["9L1"], + bite: ["9L1"], + twister: ["9L1"], + tailwind: ["9L1"], + uturn: ["9L1"], + bounce: ["9L1"], + aerialace: ["9L1"], + agility: ["9L1"], + attract: ["9L1"], + blizzard: ["9L1"], + bodyslam: ["9L1"], + breakingswipe: ["9L1"], + bulldoze: ["9L1"], + bulletseed: ["9L1"], + crunch: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + falseswipe: ["9L1"], + firespin: ["9L1"], + fly: ["9L1"], + gigaimpact: ["9L1"], + heatwave: ["9L1"], + hyperbeam: ["9L1"], + hypervoice: ["9L1"], + pluck: ["9L1"], + powerswap: ["9L1"], + protect: ["9L1"], + psychup: ["9L1"], + raindance: ["9L1"], + rest: ["9L1"], + whirlwind: ["9L1"], + haze: ["9L1"], + rocksmash: ["9L1"], + round: ["9L1"], + safeguard: ["9L1"], + sleeptalk: ["9L1"], + snore: ["9L1"], + solarbeam: ["9L1"], + steelwing: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + swift: ["9L1"], + thief: ["9L1"], + thunder: ["9L1"], + uproar: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + celespirit: { + learnset: { + shadowball: ["9L1"], + hex: ["9L1"], + moonblast: ["9L1"], + icebeam: ["9L1"], + thunderbolt: ["9L1"], + calmmind: ["9L1"], + moonlight: ["9L1"], + sheercold: ["9L1"], + hypnosis: ["9L1"], + astonish: ["9L1"], + growl: ["9L1"], + fairywind: ["9L1"], + helpinghand: ["9L1"], + nightshade: ["9L1"], + ominouswind: ["9L1"], + lifedew: ["9L1"], + healpulse: ["9L1"], + curse: ["9L1"], + icywind: ["9L1"], + healbell: ["9L1"], + eerieimpulse: ["9L1"], + healingwish: ["9L1"], + attract: ["9L1"], + blizzard: ["9L1"], + chargebeam: ["9L1"], + confide: ["9L1"], + darkpulse: ["9L1"], + dazzlinggleam: ["9L1"], + doubleteam: ["9L1"], + drainingkiss: ["9L1"], + dreameater: ["9L1"], + embargo: ["9L1"], + endure: ["9L1"], + energyball: ["9L1"], + facade: ["9L1"], + flash: ["9L1"], + fling: ["9L1"], + frustration: ["9L1"], + hyperbeam: ["9L1"], + infestation: ["9L1"], + lightscreen: ["9L1"], + magiccoat: ["9L1"], + magicroom: ["9L1"], + meteorbeam: ["9L1"], + painsplit: ["9L1"], + payback: ["9L1"], + protect: ["9L1"], + psychic: ["9L1"], + psychup: ["9L1"], + raindance: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + return: ["9L1"], + roleplay: ["9L1"], + round: ["9L1"], + shadowclaw: ["9L1"], + shockwave: ["9L1"], + skillswap: ["9L1"], + sleeptalk: ["9L1"], + snatch: ["9L1"], + snore: ["9L1"], + spite: ["9L1"], + substitute: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + taunt: ["9L1"], + telekinesis: ["9L1"], + thief: ["9L1"], + throatchop: ["9L1"], + thunder: ["9L1"], + torment: ["9L1"], + trick: ["9L1"], + trickroom: ["9L1"], + zenheadbutt: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + noxtrice: { + learnset: { + flareblitz: ["9L1"], + blazekick: ["9L1"], + honeclaws: ["9L1"], + poisonjab: ["9L1"], + defog: ["9L1"], + earthquake: ["9L1"], + gunkshot: ["9L1"], + uturn: ["9L1"], + crunch: ["9L1"], + toxic: ["9L1"], + willowisp: ["9L1"], + taunt: ["9L1"], + roost: ["9L1"], + stompingtantrum: ["9L1"], + dragondance: ["9L1"], + peck: ["9L1"], + growl: ["9L1"], + smokescreen: ["9L1"], + ember: ["9L1"], + smog: ["9L1"], + flamewheel: ["9L1"], + drillpeck: ["9L1"], + scaryface: ["9L1"], + memento: ["9L1"], + bravebird: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + attract: ["9L1"], + beatup: ["9L1"], + bounce: ["9L1"], + breakingswipe: ["9L1"], + corrosivegas: ["9L1"], + crosspoison: ["9L1"], + dragonclaw: ["9L1"], + dragonpulse: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + faketears: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + fling: ["9L1"], + foulplay: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + slash: ["9L1"], + hypervoice: ["9L1"], + nightslash: ["9L1"], + heatwave: ["9L1"], + helpinghand: ["9L1"], + hurricane: ["9L1"], + irontail: ["9L1"], + overheat: ["9L1"], + payback: ["9L1"], + pluck: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + round: ["9L1"], + scaleshot: ["9L1"], + outrage: ["9L1"], + shadowclaw: ["9L1"], + sleeptalk: ["9L1"], + sludgebomb: ["9L1"], + sludgewave: ["9L1"], + snore: ["9L1"], + steelwing: ["9L1"], + substitute: ["9L1"], + swift: ["9L1"], + thief: ["9L1"], + thunderwave: ["9L1"], + venomdrench: ["9L1"], + venoshock: ["9L1"], + quickguard: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + efflor: { + learnset: { + stoneedge: ["9L1"], + rockslide: ["9L1"], + chillyreception: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + substitute: ["9L1"], + sleeptalk: ["9L1"], + rockblast: ["9L1"], + rocktomb: ["9L1"], + smackdown: ["9L1"], + rollout: ["9L1"], + rockthrow: ["9L1"], + grassyglide: ["9L1"], + petalblizzard: ["9L1"], + bulletseed: ["9L1"], + seedbomb: ["9L1"], + vinewhip: ["9L1"], + earthquake: ["9L1"], + highhorsepower: ["9L1"], + bulldoze: ["9L1"], + stompingtantrum: ["9L1"], + bodypress: ["9L1"], + heavyslam: ["9L1"], + ironhead: ["9L1"], + gyroball: ["9L1"], + bite: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + zenheadbutt: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + megapunch: ["9L1"], + megakick: ["9L1"], + takedown: ["9L1"], + pound: ["9L1"], + headbutt: ["9L1"], + powergem: ["9L1"], + meteorbeam: ["9L1"], + ancientpower: ["9L1"], + gigadrain: ["9L1"], + grassknot: ["9L1"], + energyball: ["9L1"], + megadrain: ["9L1"], + absorb: ["9L1"], + magicalleaf: ["9L1"], + leafage: ["9L1"], + earthpower: ["9L1"], + mudbomb: ["9L1"], + mudslap: ["9L1"], + dazzlinggleam: ["9L1"], + leer: ["9L1"], + stealthrock: ["9L1"], + rockpolish: ["9L1"], + curse: ["9L1"], + synthesis: ["9L1"], + grassyterrain: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + sandstorm: ["9L1"], + mistyterrain: ["9L1"], + growth: ["9L1"], + watergun: ["9L1"], + defensecurl: ["9L1"], + rapidspin: ["9L1"], + leechseed: ["9L1"], + ingrain: ["9L1"], + solarbeam: ["9L1"], + weatherball: ["9L1"], + bellydrum: ["9L1"], + helpinghand: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalfortification: ["9L1"], + crystalhealing: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + avastar: { + learnset: { + psychic: ["9L1"], + psyshock: ["9L1"], + futuresight: ["9L1"], + flashcannon: ["9L1"], + steelbeam: ["9L1"], + dazzlinggleam: ["9L1"], + darkpulse: ["9L1"], + shadowball: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + thunderwave: ["9L1"], + hurricane: ["9L1"], + rapidspin: ["9L1"], + calmmind: ["9L1"], + recover: ["9L1"], + teleport: ["9L1"], + irondefense: ["9L1"], + gravity: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + safeguard: ["9L1"], + trickroom: ["9L1"], + quash: ["9L1"], + heavyslam: ["9L1"], + zenheadbutt: ["9L1"], + bodyslam: ["9L1"], + gigaimpact: ["9L1"], + hyperbeam: ["9L1"], + psybeam: ["9L1"], + confusion: ["9L1"], + magnetbomb: ["9L1"], + ironhead: ["9L1"], + gyroball: ["9L1"], + spark: ["9L1"], + psychicterrain: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralhealing: ["9L1"], + feralresilience: ["9L1"], + }, + }, + faerenheit: { + learnset: { + acrobatics: ["9L1"], + lavaplume: ["9L1"], + aerialace: ["9L1"], + burnup: ["9L1"], + calmmind: ["9L1"], + dazzlinggleam: ["9L1"], + encore: ["9L1"], + firespin: ["9L1"], + fireblast: ["9L1"], + flamecharge: ["9L1"], + flamethrower: ["9L1"], + flash: ["9L1"], + gravity: ["9L1"], + healbell: ["9L1"], + heatcrash: ["9L1"], + hyperbeam: ["9L1"], + imprison: ["9L1"], + lightscreen: ["9L1"], + mistyexplosion: ["9L1"], + mistyterrain: ["9L1"], + moonblast: ["9L1"], + mysticalfire: ["9L1"], + overheat: ["9L1"], + playrough: ["9L1"], + psychup: ["9L1"], + reflect: ["9L1"], + skillswap: ["9L1"], + sunnyday: ["9L1"], + trick: ["9L1"], + trickroom: ["9L1"], + willowisp: ["9L1"], + wish: ["9L1"], + triattack: ["9L1"], + flareblitz: ["9L1"], + fairywind: ["9L1"], + ember: ["9L1"], + safeguard: ["9L1"], + wrap: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + takedown: ["9L1"], + pound: ["9L1"], + gigaimpact: ["9L1"], + zenheadbutt: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + morningsun: ["9L1"], + helpinghand: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + cellsius: { + learnset: { + hydropump: ["9L1"], + scald: ["9L1"], + surf: ["9L1"], + brine: ["9L1"], + dive: ["9L1"], + bubblebeam: ["9L1"], + waterpulse: ["9L1"], + watergun: ["9L1"], + moonblast: ["9L1"], + dazzlinggleam: ["9L1"], + mistyexplosion: ["9L1"], + fairywind: ["9L1"], + icebeam: ["9L1"], + icywind: ["9L1"], + blizzard: ["9L1"], + energyball: ["9L1"], + grassknot: ["9L1"], + psychic: ["9L1"], + extrasensory: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + flipturn: ["9L1"], + liquidation: ["9L1"], + waterfall: ["9L1"], + playrough: ["9L1"], + ironhead: ["9L1"], + zenheadbutt: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + wrap: ["9L1"], + defog: ["9L1"], + healbell: ["9L1"], + calmmind: ["9L1"], + haze: ["9L1"], + trick: ["9L1"], + lifedew: ["9L1"], + aquaring: ["9L1"], + charm: ["9L1"], + raindance: ["9L1"], + mistyterrain: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + sunnyday: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + chillingwater: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + kelven: { + learnset: { + spiritbreak: ["9L1"], + tripleaxel: ["9L1"], + iciclecrash: ["9L1"], + iceshard: ["9L1"], + avalanche: ["9L1"], + playrough: ["9L1"], + closecombat: ["9L1"], + sacredsword: ["9L1"], + crosschop: ["9L1"], + stoneedge: ["9L1"], + nightslash: ["9L1"], + hornleech: ["9L1"], + ironhead: ["9L1"], + smartstrike: ["9L1"], + zenheadbutt: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + rapidspin: ["9L1"], + slash: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + icebeam: ["9L1"], + blizzard: ["9L1"], + frostbreath: ["9L1"], + aurorabeam: ["9L1"], + powdersnow: ["9L1"], + icywind: ["9L1"], + moonblast: ["9L1"], + dazzlinggleam: ["9L1"], + mistyexplosion: ["9L1"], + flashcannon: ["9L1"], + powergem: ["9L1"], + mysticalfire: ["9L1"], + swordsdance: ["9L1"], + spikes: ["9L1"], + sheercold: ["9L1"], + auroraveil: ["9L1"], + calmmind: ["9L1"], + reflect: ["9L1"], + snowscape: ["9L1"], + mistyterrain: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + icespinner: ["9L1"], + helpinghand: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + }, + }, + salaos: { + learnset: { + aurasphere: ["9L1"], + focusblast: ["9L1"], + beatup: ["9L1"], + fierywrath: ["9L1"], + suckerpunch: ["9L1"], + crunch: ["9L1"], + bite: ["9L1"], + thief: ["9L1"], + payback: ["9L1"], + brutalswing: ["9L1"], + feintattack: ["9L1"], + assurance: ["9L1"], + lashout: ["9L1"], + dragontail: ["9L1"], + dragonclaw: ["9L1"], + outrage: ["9L1"], + firefang: ["9L1"], + psychicfangs: ["9L1"], + zenheadbutt: ["9L1"], + aquatail: ["9L1"], + powerwhip: ["9L1"], + seedbomb: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + darkpulse: ["9L1"], + snarl: ["9L1"], + sludgebomb: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + surf: ["9L1"], + scald: ["9L1"], + energyball: ["9L1"], + grassknot: ["9L1"], + solarbeam: ["9L1"], + psychic: ["9L1"], + confusion: ["9L1"], + dazzlinggleam: ["9L1"], + dragonpulse: ["9L1"], + hyperbeam: ["9L1"], + recover: ["9L1"], + toxic: ["9L1"], + toxicspikes: ["9L1"], + amnesia: ["9L1"], + lightscreen: ["9L1"], + psychicterrain: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + comeuppance: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + morndos: { + learnset: { + whirlwind: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + bravebird: ["9L1"], + dualwingbeat: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + fly: ["9L1"], + skyattack: ["9L1"], + wingattack: ["9L1"], + skydrop: ["9L1"], + beatup: ["9L1"], + foulplay: ["9L1"], + darkestlariat: ["9L1"], + lashout: ["9L1"], + nightslash: ["9L1"], + assurance: ["9L1"], + payback: ["9L1"], + thief: ["9L1"], + uturn: ["9L1"], + seedbomb: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + slash: ["9L1"], + oblivionwing: ["9L1"], + hurricane: ["9L1"], + airslash: ["9L1"], + aircutter: ["9L1"], + gust: ["9L1"], + darkpulse: ["9L1"], + heatwave: ["9L1"], + energyball: ["9L1"], + grassknot: ["9L1"], + psychic: ["9L1"], + mudslap: ["9L1"], + roost: ["9L1"], + defog: ["9L1"], + taunt: ["9L1"], + disable: ["9L1"], + perishsong: ["9L1"], + featherdance: ["9L1"], + torment: ["9L1"], + screech: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + tailwind: ["9L1"], + curse: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + comeuppance: ["9L1"], + wideguard: ["9L1"], + quickguard: ["9L1"], + crystalcutter: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalfortification: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + pythos: { + learnset: { + aurasphere: ["9L1"], + crunch: ["9L1"], + knockoff: ["9L1"], + suckerpunch: ["9L1"], + bite: ["9L1"], + brutalswing: ["9L1"], + payback: ["9L1"], + assurance: ["9L1"], + lashout: ["9L1"], + superpower: ["9L1"], + brickbreak: ["9L1"], + rocksmash: ["9L1"], + beatup: ["9L1"], + revenge: ["9L1"], + irontail: ["9L1"], + ironhead: ["9L1"], + psychicfangs: ["9L1"], + firefang: ["9L1"], + dragontail: ["9L1"], + outrage: ["9L1"], + scaleshot: ["9L1"], + superfang: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + headbutt: ["9L1"], + wrap: ["9L1"], + constrict: ["9L1"], + bind: ["9L1"], + gigaimpact: ["9L1"], + darkpulse: ["9L1"], + focusblast: ["9L1"], + flamethrower: ["9L1"], + psychic: ["9L1"], + gigadrain: ["9L1"], + energyball: ["9L1"], + grassknot: ["9L1"], + solarbeam: ["9L1"], + wringout: ["9L1"], + hyperbeam: ["9L1"], + coil: ["9L1"], + glare: ["9L1"], + nastyplot: ["9L1"], + taunt: ["9L1"], + torment: ["9L1"], + screech: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + snowscape: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + comeuppance: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralbite: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + corundell: { + learnset: { + stoneedge: ["9L1"], + energyball: ["9L1"], + solarbeam: ["9L1"], + solarblade: ["9L1"], + overheat: ["9L1"], + flareblitz: ["9L1"], + flamecharge: ["9L1"], + rockslide: ["9L1"], + rockblast: ["9L1"], + smackdown: ["9L1"], + rocktomb: ["9L1"], + rockpolish: ["9L1"], + bodypress: ["9L1"], + superpower: ["9L1"], + wildcharge: ["9L1"], + zingzap: ["9L1"], + spark: ["9L1"], + earthquake: ["9L1"], + stompingtantrum: ["9L1"], + bulldoze: ["9L1"], + dualwingbeat: ["9L1"], + doubleedge: ["9L1"], + bodyslam: ["9L1"], + takedown: ["9L1"], + pound: ["9L1"], + slam: ["9L1"], + gigaimpact: ["9L1"], + meteorbeam: ["9L1"], + revelationdance: ["9L1"], + powergem: ["9L1"], + thunderbolt: ["9L1"], + thunder: ["9L1"], + risingvoltage: ["9L1"], + voltswitch: ["9L1"], + discharge: ["9L1"], + chargebeam: ["9L1"], + shockwave: ["9L1"], + thundershock: ["9L1"], + earthpower: ["9L1"], + scorchingsands: ["9L1"], + triattack: ["9L1"], + shadowball: ["9L1"], + extrasensory: ["9L1"], + hyperbeam: ["9L1"], + stealthrock: ["9L1"], + recover: ["9L1"], + thunderwave: ["9L1"], + painsplit: ["9L1"], + electricterrain: ["9L1"], + sandstorm: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + metalsound: ["9L1"], + eerieimpulse: ["9L1"], + magnetrise: ["9L1"], + lightscreen: ["9L1"], + reflect: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + quadringo: { + learnset: { + dragontail: ["9L1"], + dragonclaw: ["9L1"], + beatup: ["9L1"], + outrage: ["9L1"], + dragonrush: ["9L1"], + spiritbreak: ["9L1"], + playrough: ["9L1"], + earthquake: ["9L1"], + bulldoze: ["9L1"], + rockslide: ["9L1"], + irontail: ["9L1"], + aquatail: ["9L1"], + bravebird: ["9L1"], + dualwingbeat: ["9L1"], + wingattack: ["9L1"], + bounce: ["9L1"], + nightslash: ["9L1"], + brutalswing: ["9L1"], + gigaimpact: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + takedown: ["9L1"], + strength: ["9L1"], + steelwing: ["9L1"], + slam: ["9L1"], + scratch: ["9L1"], + slash: ["9L1"], + dracometeor: ["9L1"], + dragonpulse: ["9L1"], + dragonbreath: ["9L1"], + twister: ["9L1"], + moonblast: ["9L1"], + drainingkiss: ["9L1"], + dazzlinggleam: ["9L1"], + mistyexplosion: ["9L1"], + fairywind: ["9L1"], + mysticalfire: ["9L1"], + surf: ["9L1"], + waterpulse: ["9L1"], + airslash: ["9L1"], + aircutter: ["9L1"], + swift: ["9L1"], + hypervoice: ["9L1"], + hyperbeam: ["9L1"], + roost: ["9L1"], + defog: ["9L1"], + healbell: ["9L1"], + haze: ["9L1"], + featherdance: ["9L1"], + attract: ["9L1"], + workup: ["9L1"], + confide: ["9L1"], + raindance: ["9L1"], + sunnyday: ["9L1"], + safeguard: ["9L1"], + mimic: ["9L1"], + leer: ["9L1"], + mistyterrain: ["9L1"], + calmmind: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + whirlwind: ["9L1"], + helpinghand: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + saphor: { + learnset: { + doubleedge: ["9L1"], + scorchingsands: ["9L1"], + headlongrush: ["9L1"], + bodyslam: ["9L1"], + earthquake: ["9L1"], + stoneedge: ["9L1"], + superpower: ["9L1"], + bodypress: ["9L1"], + wildcharge: ["9L1"], + hornleech: ["9L1"], + trailblaze: ["9L1"], + heavyslam: ["9L1"], + ironhead: ["9L1"], + megahorn: ["9L1"], + playrough: ["9L1"], + hypervoice: ["9L1"], + triattack: ["9L1"], + shadowball: ["9L1"], + darkpulse: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + earthpower: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + grassknot: ["9L1"], + solarbeam: ["9L1"], + meteorbeam: ["9L1"], + powergem: ["9L1"], + psychic: ["9L1"], + dazzlinggleam: ["9L1"], + calmmind: ["9L1"], + milkdrink: ["9L1"], + bulkup: ["9L1"], + stealthrock: ["9L1"], + irondefense: ["9L1"], + roar: ["9L1"], + nobleroar: ["9L1"], + healbell: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + headbutt: ["9L1"], + round: ["9L1"], + bulldoze: ["9L1"], + rocktomb: ["9L1"], + rockslide: ["9L1"], + rockblast: ["9L1"], + highhorsepower: ["9L1"], + gigaimpact: ["9L1"], + hyperbeam: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + endure: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + mistyterrain: ["9L1"], + grassyterrain: ["9L1"], + helpinghand: ["9L1"], + wideguard: ["9L1"], + crystalcutter: ["9L1"], + crystaltail: ["9L1"], + crystalbash: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + crystalshard: ["9L1"], + }, + }, + fenreil: { + learnset: { + wildcharge: ["9L1"], + ironhead: ["9L1"], + irontail: ["9L1"], + doubleedge: ["9L1"], + howl: ["9L1"], + bodyslam: ["9L1"], + darkpulse: ["9L1"], + snarl: ["9L1"], + crunch: ["9L1"], + jawlock: ["9L1"], + knockoff: ["9L1"], + playrough: ["9L1"], + uturn: ["9L1"], + stoneedge: ["9L1"], + rockslide: ["9L1"], + rockblast: ["9L1"], + rocktomb: ["9L1"], + psychicfangs: ["9L1"], + firefang: ["9L1"], + flamecharge: ["9L1"], + icefang: ["9L1"], + thunderfang: ["9L1"], + trailblaze: ["9L1"], + hypervoice: ["9L1"], + shadowball: ["9L1"], + aurasphere: ["9L1"], + focusblast: ["9L1"], + earthpower: ["9L1"], + swordsdance: ["9L1"], + nastyplot: ["9L1"], + taunt: ["9L1"], + substitute: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + round: ["9L1"], + endure: ["9L1"], + bite: ["9L1"], + torment: ["9L1"], + assurance: ["9L1"], + meanlook: ["9L1"], + scaryface: ["9L1"], + superpower: ["9L1"], + brutalswing: ["9L1"], + nobleroar: ["9L1"], + growl: ["9L1"], + tackle: ["9L1"], + roar: ["9L1"], + headbutt: ["9L1"], + superfang: ["9L1"], + stompingtantrum: ["9L1"], + helpinghand: ["9L1"], + quickguard: ["9L1"], + feralbite: ["9L1"], + feralshred: ["9L1"], + feralrush: ["9L1"], + feralshriek: ["9L1"], + feralpower: ["9L1"], + feralbreath: ["9L1"], + feralspray: ["9L1"], + feralresilience: ["9L1"], + feralhealing: ["9L1"], + }, + }, + flocura: { + learnset: { + leafstorm: ["9L1"], + focusblast: ["9L1"], + aurasphere: ["9L1"], + seedbomb: ["9L1"], + bulletseed: ["9L1"], + psychocut: ["9L1"], + leechseed: ["9L1"], + earthpower: ["9L1"], + guardswap: ["9L1"], + guardsplit: ["9L1"], + powerswap: ["9L1"], + uturn: ["9L1"], + lunge: ["9L1"], + zenheadbutt: ["9L1"], + acrobatics: ["9L1"], + aerialace: ["9L1"], + fly: ["9L1"], + petalblizzard: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + takedown: ["9L1"], + gigaimpact: ["9L1"], + pollenpuff: ["9L1"], + shadowball: ["9L1"], + hex: ["9L1"], + psychic: ["9L1"], + futuresight: ["9L1"], + psyshock: ["9L1"], + darkpulse: ["9L1"], + thunderbolt: ["9L1"], + thunder: ["9L1"], + dazzlinggleam: ["9L1"], + powergem: ["9L1"], + meteorbeam: ["9L1"], + energyball: ["9L1"], + gigadrain: ["9L1"], + triattack: ["9L1"], + hyperbeam: ["9L1"], + sleeppowder: ["9L1"], + stealthrock: ["9L1"], + thunderwave: ["9L1"], + painsplit: ["9L1"], + taunt: ["9L1"], + calmmind: ["9L1"], + nastyplot: ["9L1"], + amnesia: ["9L1"], + workup: ["9L1"], + psychicterrain: ["9L1"], + mistyterrain: ["9L1"], + sunnyday: ["9L1"], + raindance: ["9L1"], + snowscape: ["9L1"], + sandstorm: ["9L1"], + cottonspore: ["9L1"], + stunspore: ["9L1"], + attract: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + facade: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + swagger: ["9L1"], + helpinghand: ["9L1"], + crystaltail: ["9L1"], + crystalbeam: ["9L1"], + crystalcage: ["9L1"], + crystalburst: ["9L1"], + crystalhealing: ["9L1"], + crystalfortification: ["9L1"], + feralrush: ["9L1"], + feralpower: ["9L1"], + feralresilience: ["9L1"], + feralspray: ["9L1"], + feralhealing: ["9L1"], + }, + }, + flocuranexus: { + learnset: { + }, + }, +}; diff --git a/data/mods/scootopiav2/moves.ts b/data/mods/scootopiav2/moves.ts new file mode 100644 index 0000000000..93f63b3cbe --- /dev/null +++ b/data/mods/scootopiav2/moves.ts @@ -0,0 +1,1284 @@ +export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { + shedtail: { + num: 880, + accuracy: true, + basePower: 0, + category: "Status", + name: "Shed Tail", + pp: 10, + priority: 0, + flags: {}, + shortDesc: "Sac 12.5% HP, switch, heal ally 25%. Ally: 50% dmg redux this turn.", + onTryHit(source) { + if (!this.canSwitch(source.side)) { + this.add('-fail', source); + return this.NOT_FAIL; + } + if (source.hp <= Math.ceil(source.maxhp / 8)) { + this.add('-fail', source, 'move: Shed Tail', '[weak]'); + return this.NOT_FAIL; + } + }, + onHit(target) { + this.directDamage(Math.ceil(target.maxhp / 8)); + }, + slotCondition: 'shedtail', + condition: { + duration: 1, + onSwap(target) { + if (!target.fainted && (target.hp < target.maxhp || target.status)) { + target.heal(target.maxhp / 4); + this.add('-heal', target, target.getHealth, '[from] move: Healing Wish'); + } + }, + onModifyDef(def, pokemon) { + return this.chainModify(2); + }, + onModifySpD(spd, pokemon) { + return this.chainModify(2); + }, + }, + selfSwitch: 'shedtail', + secondary: null, + target: "self", + type: "Normal", + zMove: { effect: 'clearnegativeboost' }, + }, + photonray: { + accuracy: 100, + basePower: 90, + category: "Special", + name: "Photon Ray", + pp: 10, + priority: 0, + flags: { protect: 1, mirror: 1 }, + onModifyMove(move, pokemon) { + if (pokemon.getStat('atk', false, true) > pokemon.getStat('spa', false, true)) move.category = 'Physical'; + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Photon Geyser", target); + }, + secondary: null, + target: "normal", + type: "Psychic", + contestType: "Cool", + }, + energysiphon: { + accuracy: 100, + basePower: 50, + category: "Special", + name: "Energy Siphon", + shortDesc: "Drains target's HP for 3 turns.", + pp: 10, + priority: 0, + flags: { protect: 1, mirror: 1, heal: 1, contact: 1 }, + drain: [1, 2], + secondary: null, + target: "normal", + type: "Grass", + volatileStatus: 'energysiphon', + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Fell Stinger", target); + }, + condition: { + onStart(target) { + this.add('-start', target, 'move: Energy Siphon'); + }, + duration: 3, + onResidualOrder: 8, + onResidual(pokemon) { + const target = this.getAtSlot(pokemon.volatiles['energysiphon'].sourceSlot); + if (!target || target.fainted || target.hp <= 0) { + console.log('Nothing to leech into'); + return; + } + const damage = this.damage(pokemon.baseMaxhp / 8, pokemon, target); + if (damage) { + this.heal(damage / 2, target, pokemon); + } + }, + }, + }, + sheercold: { + accuracy: 85, + basePower: 0, + category: "Status", + name: "Sheer Cold", + pp: 15, + priority: 0, + flags: { protect: 1, reflectable: 1, mirror: 1 }, + status: 'frz', + shortDesc: "Inflicts Freeze status on the opponent (1/16 Residual damage, halved SpA).", + secondary: null, + target: "normal", + type: "Ice", + zMove: { boost: { atk: 1 } }, + contestType: "Beautiful", + }, + spore: { + inherit: true, + pp: 10, + desc: "Puts the opponent to sleep for 1 turn", + }, + sleeppowder: { + inherit: true, + pp: 15, + accuracy: 90, + desc: "Puts the opponent to sleep for 1 turn", + }, + hypnosis: { + inherit: true, + pp: 20, + accuracy: 85, + desc: "Puts the opponent to sleep for 1 turn", + }, + grasswhistle: { + inherit: true, + isNonstandard: null, + pp: 25, + accuracy: 80, + desc: "Puts the opponent to sleep for 1 turn", + }, + sing: { + inherit: true, + isNonstandard: null, + pp: 25, + accuracy: 80, + desc: "Puts the opponent to sleep for 1 turn", + }, + crystalcutter: { + name: "Crystal Cutter", + accuracy: 100, + basePower: 50, + category: "Physical", + pp: 15, + type: "Crystal", + shortDesc: "Always crits. User recovers 50% of damage dealt", + priority: 0, + flags: { protect: 1, mirror: 1, contact: 1, slicing: 1 }, + target: "normal", + willCrit: true, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Psycho Cut", target); + }, + drain: [1, 2], + }, + crystaltail: { + name: "Crystal Tail", + accuracy: 85, + basePower: 120, + category: "Physical", + pp: 5, + type: "Crystal", + shortDesc: "20% to lower foe's Atk by 1", + priority: 0, + flags: { protect: 1, mirror: 1, contact: 1 }, + target: "normal", + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Dragon Tail", target); + }, + secondary: { + chance: 20, + boosts: { + atk: -1, + }, + }, + }, + crystalbash: { + name: "Crystal Bash", + accuracy: 100, + basePower: 100, + category: "Physical", + pp: 10, + type: "Crystal", + shortDesc: "10% to lower foe's Atk by 1", + priority: 0, + flags: { protect: 1, mirror: 1, contact: 1 }, + target: "normal", + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Iron Head", target); + }, + secondary: { + chance: 10, + boosts: { + atk: -1, + }, + }, + }, + crystalbeam: { + name: "Crystal Beam", + accuracy: 100, + basePower: 90, + category: "Special", + pp: 15, + type: "Crystal", + shortDesc: "30% to lower foe's SpA by 1", + priority: 0, + flags: { protect: 1, mirror: 1 }, + target: "normal", + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Aurora Beam", target); + }, + secondary: { + chance: 30, + boosts: { + spa: -1, + }, + }, + }, + crystalcage: { + name: "Crystal Cage", + accuracy: 85, + basePower: 85, + category: "Special", + pp: 10, + type: "Crystal", + shortDesc: "Traps and damages for 4-5 turns.", + priority: 0, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Diamond Storm", target); + }, + flags: { protect: 1, mirror: 1 }, + volatileStatus: 'partiallytrapped', + target: "normal", + secondary: null, + }, + crystalburst: { + accuracy: 100, + basePower: 120, + category: "Special", + name: "Crystal Burst", + pp: 5, + shortDesc: "Lower's user's SpA by 1", + priority: 0, + flags: { protect: 1, mirror: 1 }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Clanging Scales", target); + }, + self: { + boosts: { + spa: -1, + }, + }, + secondary: null, + target: "allAdjacentFoes", + type: "Crystal", + contestType: "Beautiful", + }, + crystalhealing: { + accuracy: true, + basePower: 0, + category: "Status", + name: "Crystal Healing", + pp: 5, + priority: 0, + shortDesc: "Cures whole team's status conditions. 1/16 residual healing at the end of each turn.", + flags: { snatch: 1, distance: 1, bypasssub: 1 }, + onHit(pokemon, source) { + this.add('-activate', source, 'move: Crystal Healing'); + const side = pokemon.side; + let success = false; + for (const ally of side.pokemon) { + if (ally.cureStatus()) success = true; + } + return success; + }, + volatileStatus: 'crystalhealing', + condition: { + onStart(pokemon) { + this.add('-start', pokemon, 'Crystal Healing'); + }, + onResidualOrder: 6, + onResidual(pokemon) { + this.heal(pokemon.baseMaxhp / 16); + }, + }, + target: "allyTeam", + type: "Crystal", + zMove: { effect: 'heal' }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Heal Bell", target); + }, + contestType: "Beautiful", + }, + crystalfortification: { + accuracy: true, + basePower: 0, + category: "Status", + name: "Crystal Fortification", + pp: 20, + priority: 0, + shortDesc: "+1 Def, +1 SpD. Clears negative stat changes.", + flags: { snatch: 1 }, + onHit(pokemon, source) { + let b: BoostID; + let didBoost = false; + const negBoosts: Partial> = {}; + for (b in source.boosts) { + if (source.boosts[b] < 0) negBoosts[b] = source.boosts[b] * -1; + didBoost = true; + } + if (didBoost) { + this.boost(negBoosts, source); + } + }, + boosts: { + def: 1, + spd: 1, + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Iron Defense", target); + }, + secondary: null, + target: "self", + type: "Crystal", + zMove: { boost: { spd: 1 } }, + contestType: "Beautiful", + }, + crystalshard: { + accuracy: true, + basePower: 0, + category: "Status", + name: "Crystal Shard", + shortDesc: "Sets a layer of Spikes. (Not a new kind of hazard)", + pp: 20, + priority: 0, + flags: { reflectable: 1, nonsky: 1 }, + onHitSide(side, source) { + source.side.foe.addSideCondition("spikes"); + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Spikes", target); + }, + secondary: null, + target: "foeSide", + type: "Crystal", + zMove: { boost: { spd: 1 } }, + contestType: "Beautiful", + }, + feralbite: { + name: "Feral Bite", + accuracy: 100, + basePower: 90, + category: "Physical", + pp: 15, + type: "Feral", + shortDesc: "30% chance to Poison foe.", + priority: 0, + flags: { protect: 1, mirror: 1, contact: 1, bite: 1 }, + target: "normal", + secondary: { + chance: 30, + status: "psn", + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Poison Fang", target); + }, + }, + feralshred: { + name: "Feral Shred", + accuracy: 100, + basePower: 20, + category: "Physical", + pp: 15, + type: "Feral", + shortDesc: "Hits twice. Lowers foe's Def by 1 on each hit", + priority: 0, + multihit: 2, + flags: { protect: 1, mirror: 1, contact: 1 }, + target: "normal", + secondary: { + chance: 100, + boosts: { + def: -1, + }, + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Dragon Claw", target); + }, + }, + feralrush: { + name: "Feral Rush", + accuracy: 100, + basePower: 120, + category: "Physical", + pp: 10, + type: "Feral", + shortDesc: "User takes 1/3 recoil damage. 20% to lower foe's Def by 1", + priority: 0, + recoil: [33, 100], + flags: { protect: 1, mirror: 1, contact: 1 }, + target: "normal", + secondary: { + chance: 20, + boosts: { + def: -1, + }, + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Double-Edge", target); + }, + }, + feralshriek: { + name: "Feral Shriek", + accuracy: 100, + basePower: 90, + category: "Special", + pp: 15, + type: "Feral", + shortDesc: "20% to lower foe's SpD by 1", + priority: 0, + flags: { protect: 1, mirror: 1, sound: 1 }, + target: "allAdjacentFoes", + secondary: { + chance: 20, + boosts: { + spd: -1, + }, + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Overdrive", target); + }, + }, + feralpower: { + accuracy: 100, + basePower: 110, + category: "Special", + name: "Feral Power", + pp: 5, + priority: 0, + shortDesc: "Lowers user's Def by 1", + flags: { protect: 1, mirror: 1, bypasssub: 1 }, + selfBoost: { + boosts: { + def: -1, + }, + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Searing Shot", target); + }, + secondary: null, + target: "allAdjacentFoes", + type: "Feral", + contestType: "Tough", + }, + feralbreath: { + name: "Feral Breath", + accuracy: 100, + basePower: 80, + category: "Special", + pp: 10, + type: "Feral", + shortDesc: "100% to lower foe's SpD by 1", + priority: 0, + flags: { protect: 1, mirror: 1 }, + target: "normal", + secondary: { + chance: 100, + boosts: { + spd: -1, + }, + }, + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Dragon Rage", target); + }, + }, + feralhealing: { + num: 816, + accuracy: true, + basePower: 0, + category: "Status", + priority: 0, + flags: { heal: 1, bypasssub: 1, allyanim: 1 }, + onHit(pokemon) { + const success = !!this.heal(this.modify(pokemon.maxhp, 0.25)); + return pokemon.cureStatus() || success; + }, + secondary: null, + target: "allies", + name: "Feral Healing", + pp: 15, + shortDesc: "Heals user 25% and cures status.", + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Jungle Healing", target); + }, + type: "Feral", + zMove: { boost: { def: 1 } }, + contestType: "Cool", + }, + feralspray: { + accuracy: 100, + basePower: 0, + category: "Status", + name: "Feral Spray", + pp: 25, + priority: 0, + shortDesc: "+1 Atk, +1 SpA. Poisons the foe.", + flags: { protect: 1, reflectable: 1, mirror: 1 }, + selfBoost: { + boosts: { + atk: 1, + spa: 1, + }, + }, + status: 'psn', + secondary: null, + target: "normal", + type: "Feral", + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Acid Spray", target); + }, + zMove: { boost: { def: 1 } }, + contestType: "Clever", + }, + feralresilience: { + accuracy: true, + basePower: 0, + category: "Status", + name: "Feral Resilience", + pp: 20, + priority: 0, + flags: { snatch: 1 }, + shortDesc: "+1 Atk, +1 SpA. Cures user's status conditions.", + onHit(pokemon) { + if (['', 'slp'].includes(pokemon.status)) return false; + pokemon.cureStatus(); + }, + secondary: null, + target: "self", + boosts: { + atk: 1, + spa: 1, + }, + type: "Feral", + zMove: { effect: 'heal' }, + contestType: "Cute", + onPrepareHit(target, source, move) { + this.attrLastMove('[still]'); + this.add('-anim', source, "Refresh", target); + }, + }, + karatechop: { + inherit: true, + isNonstandard: null, + }, + doubleslap: { + inherit: true, + isNonstandard: null, + }, + cometpunch: { + inherit: true, + isNonstandard: null, + }, + razorwind: { + inherit: true, + isNonstandard: null, + }, + jumpkick: { + inherit: true, + isNonstandard: null, + }, + rollingkick: { + inherit: true, + isNonstandard: null, + }, + twineedle: { + inherit: true, + isNonstandard: null, + }, + sonicboom: { + inherit: true, + isNonstandard: null, + }, + submission: { + inherit: true, + isNonstandard: null, + }, + dragonrage: { + inherit: true, + isNonstandard: null, + }, + meditate: { + inherit: true, + isNonstandard: null, + }, + rage: { + inherit: true, + isNonstandard: null, + }, + barrier: { + inherit: true, + isNonstandard: null, + }, + bide: { + inherit: true, + isNonstandard: null, + }, + mirrormove: { + inherit: true, + isNonstandard: null, + }, + eggbomb: { + inherit: true, + isNonstandard: null, + }, + boneclub: { + inherit: true, + isNonstandard: null, + }, + clamp: { + inherit: true, + isNonstandard: null, + }, + skullbash: { + inherit: true, + isNonstandard: null, + }, + spikecannon: { + inherit: true, + isNonstandard: null, + }, + constrict: { + inherit: true, + isNonstandard: null, + }, + kinesis: { + inherit: true, + isNonstandard: null, + }, + barrage: { + inherit: true, + isNonstandard: null, + }, + lovelykiss: { + inherit: true, + isNonstandard: null, + }, + bubble: { + inherit: true, + isNonstandard: null, + }, + dizzypunch: { + inherit: true, + isNonstandard: null, + }, + flash: { + inherit: true, + isNonstandard: null, + }, + psywave: { + inherit: true, + isNonstandard: null, + }, + bonemerang: { + inherit: true, + isNonstandard: null, + }, + hyperfang: { + inherit: true, + isNonstandard: null, + }, + sharpen: { + inherit: true, + isNonstandard: null, + }, + conversion: { + inherit: true, + isNonstandard: null, + }, + sketch: { + inherit: true, + isNonstandard: null, + }, + triplekick: { + inherit: true, + isNonstandard: null, + }, + spiderweb: { + inherit: true, + isNonstandard: null, + }, + mindreader: { + inherit: true, + isNonstandard: null, + }, + nightmare: { + inherit: true, + isNonstandard: null, + }, + conversion2: { + inherit: true, + isNonstandard: null, + }, + aeroblast: { + inherit: true, + isNonstandard: null, + }, + feintattack: { + inherit: true, + isNonstandard: null, + }, + octazooka: { + inherit: true, + isNonstandard: null, + }, + foresight: { + inherit: true, + isNonstandard: null, + }, + return: { + inherit: true, + isNonstandard: null, + }, + frustration: { + inherit: true, + isNonstandard: null, + }, + sacredfire: { + inherit: true, + isNonstandard: null, + }, + magnitude: { + inherit: true, + isNonstandard: null, + }, + pursuit: { + inherit: true, + isNonstandard: null, + }, + vitalthrow: { + inherit: true, + isNonstandard: null, + }, + hiddenpower: { + inherit: true, + isNonstandard: null, + }, + hail: { + inherit: true, + isNonstandard: null, + }, + smellingsalts: { + inherit: true, + isNonstandard: null, + }, + naturepower: { + inherit: true, + isNonstandard: null, + }, + assist: { + inherit: true, + isNonstandard: null, + }, + magiccoat: { + inherit: true, + isNonstandard: null, + }, + revenge: { + inherit: true, + isNonstandard: null, + }, + refresh: { + inherit: true, + isNonstandard: null, + }, + grudge: { + inherit: true, + isNonstandard: null, + }, + snatch: { + inherit: true, + isNonstandard: null, + }, + secretpower: { + inherit: true, + isNonstandard: null, + }, + camouflage: { + inherit: true, + isNonstandard: null, + }, + tailglow: { + inherit: true, + isNonstandard: null, + }, + lusterpurge: { + inherit: true, + isNonstandard: null, + }, + mistball: { + inherit: true, + isNonstandard: null, + }, + mudsport: { + inherit: true, + isNonstandard: null, + }, + iceball: { + inherit: true, + isNonstandard: null, + }, + needlearm: { + inherit: true, + isNonstandard: null, + }, + aromatherapy: { + inherit: true, + isNonstandard: null, + }, + odorsleuth: { + inherit: true, + isNonstandard: null, + }, + silverwind: { + inherit: true, + isNonstandard: null, + }, + signalbeam: { + inherit: true, + isNonstandard: null, + }, + skyuppercut: { + inherit: true, + isNonstandard: null, + }, + watersport: { + inherit: true, + isNonstandard: null, + }, + doomdesire: { + inherit: true, + isNonstandard: null, + }, + psychoboost: { + inherit: true, + isNonstandard: null, + }, + miracleeye: { + inherit: true, + isNonstandard: null, + }, + wakeupslap: { + inherit: true, + isNonstandard: null, + }, + naturalgift: { + inherit: true, + isNonstandard: null, + }, + embargo: { + inherit: true, + isNonstandard: null, + }, + psychoshift: { + inherit: true, + isNonstandard: null, + }, + trumpcard: { + inherit: true, + isNonstandard: null, + }, + healblock: { + inherit: true, + isNonstandard: null, + }, + wringout: { + inherit: true, + isNonstandard: null, + }, + luckychant: { + inherit: true, + isNonstandard: null, + }, + mefirst: { + inherit: true, + isNonstandard: null, + }, + punishment: { + inherit: true, + isNonstandard: null, + }, + mudbomb: { + inherit: true, + isNonstandard: null, + }, + mirrorshot: { + inherit: true, + isNonstandard: null, + }, + rockclimb: { + inherit: true, + isNonstandard: null, + }, + rockwrecker: { + inherit: true, + isNonstandard: null, + }, + magnetbomb: { + inherit: true, + isNonstandard: null, + }, + captivate: { + inherit: true, + isNonstandard: null, + }, + chatter: { + inherit: true, + isNonstandard: null, + }, + healorder: { + inherit: true, + isNonstandard: null, + }, + crushgrip: { + inherit: true, + isNonstandard: null, + }, + darkvoid: { + inherit: true, + isNonstandard: null, + }, + seedflare: { + inherit: true, + isNonstandard: null, + }, + ominouswind: { + inherit: true, + isNonstandard: null, + }, + autotomize: { + inherit: true, + isNonstandard: null, + }, + telekinesis: { + inherit: true, + isNonstandard: null, + }, + stormthrow: { + inherit: true, + isNonstandard: null, + }, + flameburst: { + inherit: true, + isNonstandard: null, + }, + synchronoise: { + inherit: true, + isNonstandard: null, + }, + chipaway: { + inherit: true, + isNonstandard: null, + }, + skydrop: { + inherit: true, + isNonstandard: null, + }, + bestow: { + inherit: true, + isNonstandard: null, + }, + dualchop: { + inherit: true, + isNonstandard: null, + }, + heartstamp: { + inherit: true, + isNonstandard: null, + }, + leaftornado: { + inherit: true, + isNonstandard: null, + }, + steamroller: { + inherit: true, + isNonstandard: null, + }, + headcharge: { + inherit: true, + isNonstandard: null, + }, + geargrind: { + inherit: true, + isNonstandard: null, + }, + searingshot: { + inherit: true, + isNonstandard: null, + }, + technoblast: { + inherit: true, + isNonstandard: null, + }, + secretsword: { + inherit: true, + isNonstandard: null, + }, + glaciate: { + inherit: true, + isNonstandard: null, + }, + boltstrike: { + inherit: true, + isNonstandard: null, + }, + blueflare: { + inherit: true, + isNonstandard: null, + }, + freezeshock: { + inherit: true, + isNonstandard: null, + }, + iceburn: { + inherit: true, + isNonstandard: null, + }, + fusionflare: { + inherit: true, + isNonstandard: null, + }, + fusionbolt: { + inherit: true, + isNonstandard: null, + }, + matblock: { + inherit: true, + isNonstandard: null, + }, + rototiller: { + inherit: true, + isNonstandard: null, + }, + trickortreat: { + inherit: true, + isNonstandard: null, + }, + iondeluge: { + inherit: true, + isNonstandard: null, + }, + forestscurse: { + inherit: true, + isNonstandard: null, + }, + topsyturvy: { + inherit: true, + isNonstandard: null, + }, + craftyshield: { + inherit: true, + isNonstandard: null, + }, + flowershield: { + inherit: true, + isNonstandard: null, + }, + electrify: { + inherit: true, + isNonstandard: null, + }, + kingsshield: { + inherit: true, + isNonstandard: null, + }, + venomdrench: { + inherit: true, + isNonstandard: null, + }, + powder: { + inherit: true, + isNonstandard: null, + }, + geomancy: { + inherit: true, + isNonstandard: null, + }, + poweruppunch: { + inherit: true, + isNonstandard: null, + }, + oblivionwing: { + inherit: true, + isNonstandard: null, + }, + thousandarrows: { + inherit: true, + isNonstandard: null, + }, + thousandwaves: { + inherit: true, + isNonstandard: null, + }, + landswrath: { + inherit: true, + isNonstandard: null, + }, + lightofruin: { + inherit: true, + isNonstandard: null, + }, + sparklingaria: { + inherit: true, + isNonstandard: null, + }, + floralhealing: { + inherit: true, + isNonstandard: null, + }, + spotlight: { + inherit: true, + isNonstandard: null, + }, + toxicthread: { + inherit: true, + isNonstandard: null, + }, + laserfocus: { + inherit: true, + isNonstandard: null, + }, + gearup: { + inherit: true, + isNonstandard: null, + }, + anchorshot: { + inherit: true, + isNonstandard: null, + }, + purify: { + inherit: true, + isNonstandard: null, + }, + coreenforcer: { + inherit: true, + isNonstandard: null, + }, + beakblast: { + inherit: true, + isNonstandard: null, + }, + clangingscales: { + inherit: true, + isNonstandard: null, + }, + dragonhammer: { + inherit: true, + isNonstandard: null, + }, + shelltrap: { + inherit: true, + isNonstandard: null, + }, + shadowbone: { + inherit: true, + isNonstandard: null, + }, + prismaticlaser: { + inherit: true, + isNonstandard: null, + }, + spectralthief: { + inherit: true, + isNonstandard: null, + }, + sunsteelstrike: { + inherit: true, + isNonstandard: null, + }, + moongeistbeam: { + inherit: true, + isNonstandard: null, + }, + naturesmadness: { + inherit: true, + isNonstandard: null, + }, + multiattack: { + inherit: true, + isNonstandard: null, + }, + mindblown: { + inherit: true, + isNonstandard: null, + }, + plasmafists: { + inherit: true, + isNonstandard: null, + }, + photongeyser: { + inherit: true, + isNonstandard: null, + }, + doubleironbash: { + inherit: true, + isNonstandard: null, + }, + maxguard: { + inherit: true, + isNonstandard: null, + }, + octolock: { + inherit: true, + isNonstandard: null, + }, + boltbeak: { + inherit: true, + isNonstandard: null, + }, + fishiousrend: { + inherit: true, + isNonstandard: null, + }, + clangoroussoul: { + inherit: true, + isNonstandard: null, + }, + decorate: { + inherit: true, + isNonstandard: null, + }, + snaptrap: { + inherit: true, + isNonstandard: null, + }, + aurawheel: { + inherit: true, + isNonstandard: null, + }, + strangesteam: { + inherit: true, + isNonstandard: null, + }, + obstruct: { + inherit: true, + isNonstandard: null, + }, + meteorassault: { + inherit: true, + isNonstandard: null, + }, + eternabeam: { + inherit: true, + isNonstandard: null, + }, +}; diff --git a/data/mods/scootopiav2/pokedex.ts b/data/mods/scootopiav2/pokedex.ts new file mode 100644 index 0000000000..52f1bcbacd --- /dev/null +++ b/data/mods/scootopiav2/pokedex.ts @@ -0,0 +1,551 @@ +export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = { + arbrella: { + num: 2001, + name: "Arbrella", + types: ["Grass", "Ground"], + baseStats: { hp: 80, atk: 115, def: 100, spa: 80, spd: 80, spe: 75 }, + abilities: { 0: "Overgrow", H: "Tough Claws" }, + weightkg: 211, + eggGroups: ["Undiscovered"], + }, + krachiten: { + num: 2002, + name: "Krachiten", + types: ["Water", "Bug"], + baseStats: { hp: 90, atk: 120, def: 70, spa: 78, spd: 60, spe: 112 }, + abilities: { 0: "Torrent", H: "Sniper" }, + weightkg: 59, + eggGroups: ["Undiscovered"], + }, + scalaron: { + num: 2003, + name: "Scalaron", + types: ["Fire", "Flying"], + baseStats: { hp: 90, atk: 70, def: 90, spa: 100, spd: 105, spe: 75 }, + abilities: { 0: "Blaze", H: "Filter" }, + weightkg: 70, + eggGroups: ["Undiscovered"], + }, + rantler: { + num: 2004, + name: "Rantler", + types: ["Normal", "Ice"], + baseStats: { hp: 68, atk: 118, def: 94, spa: 43, spd: 79, spe: 73 }, + abilities: { 0: "Intimidate", 1: "Slush Rush", H: "Tough Claws" }, + weightkg: 67, + eggGroups: ["Undiscovered"], + }, + woolora: { + num: 2005, + name: "Woolora", + types: ["Fairy"], + baseStats: { hp: 70, atk: 75, def: 70, spa: 95, spd: 115, spe: 70 }, + abilities: { 0: "Fluffy", 1: "Rattled", H: "Pastel Veil" }, + weightkg: 50.3, + eggGroups: ["Undiscovered"], + }, + albatrygon: { + num: 2006, + name: "Albatrygon", + types: ["Flying"], + baseStats: { hp: 80, atk: 105, def: 70, spa: 65, spd: 60, spe: 95 }, + abilities: { 0: "Prankster", 1: "Klutz", H: "Unburden" }, + weightkg: 10.1, + eggGroups: ["Undiscovered"], + }, + orchile: { + num: 2007, + name: "Orchile", + types: ["Grass", "Fairy"], + baseStats: { hp: 65, atk: 60, def: 75, spa: 110, spd: 121, spe: 64 }, + abilities: { 0: "Sweet Veil", 1: "Aroma Veil", H: "Flower Veil" }, + weightkg: 45, + eggGroups: ["Undiscovered"], + }, + embuck: { + num: 2008, + name: "Embuck", + types: ["Fire", "Fighting"], + baseStats: { hp: 90, atk: 125, def: 80, spa: 83, spd: 65, spe: 82 }, + abilities: { 0: "Intimidate", H: "Flash Fire" }, + weightkg: 113, + eggGroups: ["Undiscovered"], + }, + cindoe: { + num: 2009, + name: "Cindoe", + types: ["Fire", "Dark"], + baseStats: { hp: 80, atk: 74, def: 55, spa: 110, spd: 100, spe: 106 }, + abilities: { 0: "Natural Cure", H: "Flash Fire" }, + weightkg: 67, + eggGroups: ["Undiscovered"], + }, + cobracotta: { + num: 2010, + name: "Cobracotta", + types: ["Grass", "Poison"], + baseStats: { hp: 80, atk: 90, def: 95, spa: 80, spd: 115, spe: 35 }, + abilities: { 0: "Mold Breaker", 1: "Weak Armor", H: "Heatproof" }, + weightkg: 68, + eggGroups: ["Undiscovered"], + }, + minillow: { + num: 2011, + name: "Minillow", + types: ["Water", "Fairy"], + baseStats: { hp: 70, atk: 64, def: 75, spa: 90, spd: 95, spe: 81 }, + abilities: { 0: "Swift Swim", 1: "Dazzling", H: "Adaptability" }, + weightkg: 22, + eggGroups: ["Undiscovered"], + }, + crossont: { + num: 2012, + name: "Crossont", + types: ["Bug", "Fighting"], + baseStats: { hp: 80, atk: 125, def: 100, spa: 60, spd: 80, spe: 80 }, + abilities: { 0: "Sniper", 1: "Long Reach", H: "Gooey" }, + weightkg: 121, + eggGroups: ["Undiscovered"], + }, + torgeist: { + num: 2013, + name: "Torgeist", + types: ["Ghost", "Flying"], + baseStats: { hp: 55, atk: 65, def: 95, spa: 115, spd: 100, spe: 105 }, + abilities: { 0: "Cursed Body", 1: "Clear Body", H: "Merciless" }, + weightkg: 9.7, + eggGroups: ["Undiscovered"], + }, + platypad: { + num: 2014, + name: "Platypad", + types: ["Grass", "Water"], + baseStats: { hp: 120, atk: 100, def: 80, spa: 100, spd: 80, spe: 40 }, + abilities: { 0: "Thick Fat", 1: "Triage", H: "Flower Veil" }, + weightkg: 89, + eggGroups: ["Undiscovered"], + }, + lumoth: { + num: 2015, + name: "Lumoth", + types: ["Bug", "Ghost"], + baseStats: { hp: 60, atk: 55, def: 91, spa: 110, spd: 85, spe: 94 }, + abilities: { 0: "Levitate" }, + weightkg: 0.5, + eggGroups: ["Undiscovered"], + }, + aurorowl: { + num: 2016, + name: "Aurorowl", + types: ["Ice", "Flying"], + baseStats: { hp: 70, atk: 70, def: 65, spa: 95, spd: 95, spe: 115 }, + abilities: { 0: "Snow Cloak", H: "Technician" }, + weightkg: 15, + eggGroups: ["Undiscovered"], + }, + carapex: { + num: 2017, + name: "Carapex", + types: ["Bug", "Flying"], + baseStats: { hp: 75, atk: 105, def: 155, spa: 55, spd: 90, spe: 60 }, + abilities: { 0: "Wind Rider", 1: "Mold Breaker", H: "Sturdy" }, + weightkg: 135, + eggGroups: ["Undiscovered"], + }, + dojodo: { + num: 2018, + name: "Dojodo", + types: ["Fighting"], + baseStats: { hp: 90, atk: 115, def: 80, spa: 65, spd: 100, spe: 80 }, + abilities: { 0: "Iron Fist", 1: "Stamina", H: "Supreme Overlord" }, + weightkg: 53, + eggGroups: ["Undiscovered"], + }, + nunopod: { + num: 2019, + name: "Nunopod", + types: ["Ground", "Bug"], + baseStats: { hp: 80, atk: 110, def: 125, spa: 68, spd: 75, spe: 67 }, + abilities: { 0: "Earth Eater", H: "Opportunist" }, + weightkg: 68, + eggGroups: ["Undiscovered"], + }, + zeploom: { + num: 2020, + name: "Zeploom", + types: ["Grass", "Ground"], + baseStats: { hp: 55, atk: 55, def: 145, spa: 65, spd: 150, spe: 45 }, + abilities: { 0: "Wind Rider", H: "Levitate" }, + weightkg: 5, + eggGroups: ["Undiscovered"], + }, + brawnkey: { + num: 2021, + name: "Brawnkey", + types: ["Steel", "Fighting"], + baseStats: { hp: 95, atk: 105, def: 105, spa: 85, spd: 80, spe: 50 }, + abilities: { 0: "Levitate" }, + weightkg: 85, + eggGroups: ["Undiscovered"], + }, + salamalix: { + num: 2022, + name: "Salamalix", + types: ["Rock", "Steel"], + baseStats: { hp: 70, atk: 120, def: 120, spa: 45, spd: 65, spe: 90 }, + abilities: { 0: "No Guard", 1: "Mold Breaker", H: "Intimidate" }, + weightkg: 85, + eggGroups: ["Undiscovered"], + }, + cinnastar: { + num: 2023, + name: "Cinnastar", + types: ["Rock", "Poison"], + baseStats: { hp: 110, atk: 95, def: 80, spa: 95, spd: 80, spe: 80 }, + abilities: { 0: "Liquid Ooze", H: "Regenerator" }, + weightkg: 56, + eggGroups: ["Undiscovered"], + }, + muabboa: { + num: 2024, + name: "MuabBoa", + types: ["Ground", "Fighting"], + baseStats: { hp: 65, atk: 100, def: 75, spa: 55, spd: 65, spe: 120 }, + abilities: { 0: "Anticipation", 1: "Sand Rush", H: "Inner Focus" }, + weightkg: 25, + eggGroups: ["Undiscovered"], + }, + volvolpa: { + num: 2025, + name: "Volvolpa", + types: ["Electric", "Ice"], + baseStats: { hp: 76, atk: 97, def: 64, spa: 70, spd: 102, spe: 121 }, + abilities: { 0: "Slush Rush", 1: "Volt Absorb", H: "Strong Jaw" }, + weightkg: 27, + eggGroups: ["Undiscovered"], + }, + harzodia: { + num: 2026, + name: "Harzodia", + types: ["Psychic"], + baseStats: { hp: 65, atk: 55, def: 75, spa: 125, spd: 75, spe: 95 }, + abilities: { 0: "Prankster", 1: "Unburden", H: "Solar Power" }, + weightkg: 35, + eggGroups: ["Undiscovered"], + }, + cyllindrake: { + num: 2027, + name: "Cyllindrake", + types: ["Steel", "Dragon"], + baseStats: { hp: 70, atk: 85, def: 115, spa: 95, spd: 70, spe: 110 }, + abilities: { 0: "Heavy Metal", 1: "Punk Rock", H: "Scrappy" }, + weightkg: 180, + eggGroups: ["Undiscovered"], + }, + kodokai: { + num: 2028, + name: "Kodokai", + types: ["Ghost", "Fire"], + baseStats: { hp: 110, atk: 65, def: 100, spa: 110, spd: 90, spe: 30 }, + abilities: { 0: "White Smoke", H: "Aroma Veil" }, + weightkg: 50, + eggGroups: ["Undiscovered"], + }, + electangle: { + num: 2029, + name: "Electangle", + types: ["Steel", "Electric"], + baseStats: { hp: 120, atk: 90, def: 110, spa: 90, spd: 90, spe: 25 }, + abilities: { 0: "Filter" }, + weightkg: 190, + eggGroups: ["Undiscovered"], + }, + dolphena: { + num: 2030, + name: "Dolphena", + types: ["Water", "Dragon"], + baseStats: { hp: 95, atk: 125, def: 80, spa: 84, spd: 75, spe: 81 }, + abilities: { 0: "Anger Point", H: "Mythical Presence" }, + weightkg: 271, + eggGroups: ["Undiscovered"], + }, + elemadillo: { + num: 2035, + name: "Elemadillo", + types: ["Steel", "Electric"], + baseStats: { hp: 67, atk: 94, def: 73, spa: 103, spd: 64, spe: 129 }, + abilities: { 0: "Weak Armor", 1: "Motor Drive", H: "Stalwart" }, + weightkg: 58, + eggGroups: ["Undiscovered"], + }, + axolacred: { + num: 2036, + name: "Axolacred", + types: ["Dragon"], + baseStats: { hp: 85, atk: 90, def: 85, spa: 95, spd: 95, spe: 65 }, + abilities: { 0: "Magic Guard", H: "Purifying Salt" }, + weightkg: 33, + eggGroups: ["Undiscovered"], + }, + roscenti: { + num: 2037, + name: "Roscenti", + types: ["Bug", "Grass"], + baseStats: { hp: 80, atk: 115, def: 100, spa: 75, spd: 80, spe: 100 }, + abilities: { 0: "Sheer Force", 1: "Chlorophyll", H: "Skill Link" }, + eggGroups: ["Undiscovered"], + weightkg: 37, + }, + blunderbusk: { + num: 2038, + name: "Blunderbusk", + types: ["Water"], + baseStats: { hp: 73, atk: 67, def: 124, spa: 128, spd: 89, spe: 24 }, + abilities: { 0: "Mega Launcher", H: "Shell Bunker" }, + weightkg: 86, + eggGroups: ["Undiscovered"], + }, + barracoth: { + num: 2039, + name: "Barracoth", + types: ["Ice", "Water"], + baseStats: { hp: 140, atk: 115, def: 110, spa: 55, spd: 65, spe: 35 }, + abilities: { 0: "Filter", 1: "Thick Fat", H: "Multiscale" }, + weightkg: 356, + eggGroups: ["Undiscovered"], + }, + jamborai: { + num: 2040, + name: "Jamborai", + types: ["Poison", "Psychic"], + baseStats: { hp: 75, atk: 55, def: 125, spa: 120, spd: 85, spe: 65 }, + abilities: { 0: "Clear Body", 1: "Gooey", H: "Water Absorb" }, + weightkg: 84, + eggGroups: ["Undiscovered"], + }, + dracoil: { + num: 2041, + name: "Dracoil", + types: ["Dragon", "Flying"], + baseStats: { hp: 105, atk: 106, def: 85, spa: 96, spd: 60, spe: 78 }, + abilities: { 0: "Mythical Presence", 1: "Gluttony", H: "Marvel Scale" }, + weightkg: 428, + eggGroups: ["Undiscovered"], + }, + celespirit: { + num: 2042, + name: "Celespirit", + types: ["Ghost"], + baseStats: { hp: 75, atk: 61, def: 73, spa: 117, spd: 135, spe: 69 }, + abilities: { 0: "Levitate", H: "Power Spot" }, + weightkg: 25.8, + eggGroups: ["Undiscovered"], + }, + noxtrice: { + num: 2043, + name: "Noxtrice", + types: ["Poison", "Fire"], + baseStats: { hp: 65, atk: 118, def: 75, spa: 63, spd: 80, spe: 114 }, + abilities: { 0: "Poison Touch", H: "Flash Fire" }, + weightkg: 73.7, + eggGroups: ["Undiscovered"], + }, + sturgard: { + num: 2055, + name: "Sturgard", + types: ["Water", "Ground"], + baseStats: { hp: 105, atk: 110, def: 105, spa: 65, spd: 70, spe: 70 }, + abilities: { 0: "Rock Head", 1: "Battle Armor", H: "Mold Breaker" }, + weightkg: 143, + eggGroups: ["Undiscovered"], + }, + avastar: { + num: 2034, + name: "Avastar", + types: ["Psychic", "Steel"], + baseStats: { hp: 75, atk: 85, def: 110, spa: 115, spd: 100, spe: 60 }, + abilities: { 0: "Stalwart", 1: "Heavy Metal", H: "Shell Bunker" }, + weightkg: 999.9, + eggGroups: ["Undiscovered"], + }, + faerenheit: { + num: 2044, + name: "Faerenheit", + types: ["Fire", "Fairy"], + baseStats: { hp: 71, atk: 83, def: 127, spa: 97, spd: 109, spe: 83 }, + abilities: { 0: "Beast Boost" }, + weightkg: 2.1, + eggGroups: ["Undiscovered"], + }, + cellsius: { + num: 2045, + name: "Cellsius", + types: ["Water", "Fairy"], + baseStats: { hp: 71, atk: 83, def: 83, spa: 109, spd: 127, spe: 97 }, + abilities: { 0: "Beast Boost" }, + weightkg: 2.4, + eggGroups: ["Undiscovered"], + }, + kelven: { + num: 2046, + name: "Kelven", + types: ["Ice", "Fairy"], + baseStats: { hp: 71, atk: 127, def: 109, spa: 83, spd: 83, spe: 97 }, + abilities: { 0: "Beast Boost" }, + weightkg: 2.8, + eggGroups: ["Undiscovered"], + }, + salaos: { + num: 2047, + name: "Salaos", + types: ["Dark"], + baseStats: { hp: 75, atk: 85, def: 90, spa: 110, spd: 130, spe: 90 }, + abilities: { 0: "Good as Gold" }, + weightkg: 74, + eggGroups: ["Undiscovered"], + }, + morndos: { + num: 2048, + name: "Morndos", + types: ["Dark", "Flying"], + baseStats: { hp: 110, atk: 90, def: 75, spa: 90, spd: 85, spe: 130 }, + abilities: { 0: "Synchronize" }, + weightkg: 56, + eggGroups: ["Undiscovered"], + }, + pythos: { + num: 2049, + name: "Pythos", + types: ["Dark"], + baseStats: { hp: 90, atk: 110, def: 130, spa: 85, spd: 90, spe: 75 }, + abilities: { 0: "Guts" }, + weightkg: 178, + eggGroups: ["Undiscovered"], + }, + corundell: { + num: 2050, + name: "Corundell", + types: ["Rock", "Electric"], + baseStats: { hp: 75, atk: 100, def: 130, spa: 105, spd: 80, spe: 110 }, + abilities: { 0: "Lightning Rod", H: "Protosynthesis" }, + weightkg: 137, + eggGroups: ["Undiscovered"], + }, + quadringo: { + num: 2051, + name: "Quadringo", + types: ["Fairy", "Dragon"], + baseStats: { hp: 80, atk: 120, def: 95, spa: 100, spd: 120, spe: 85 }, + abilities: { 0: "Hydration", 1: "Pastel Veil", H: "Inner Focus" }, + weightkg: 156, + eggGroups: ["Undiscovered"], + }, + saphor: { + num: 2052, + name: "Saphor", + types: ["Ground", "Normal"], + baseStats: { hp: 95, atk: 100, def: 105, spa: 100, spd: 105, spe: 95 }, + abilities: { 0: "Thick Fat", 1: "Crystal Heart" }, + weightkg: 638, + eggGroups: ["Undiscovered"], + }, + fenreil: { + num: 2053, + name: "Fenreil", + types: ["Dark", "Normal"], + baseStats: { hp: 80, atk: 105, def: 97, spa: 105, spd: 97, spe: 116 }, + abilities: { 0: "Natural Cure", 1: "Wild Heart" }, + weightkg: 232, + eggGroups: ["Undiscovered"], + }, + soleron: { + num: 2031, + name: "Soleron", + types: ["Electric", "Flying"], + baseStats: { hp: 70, atk: 75, def: 65, spa: 115, spd: 75, spe: 115 }, + abilities: { 0: "Battle Bond" }, + otherFormes: ["Soleron-Awakened"], + formeOrder: ["Soleron", "Soleron-Awakened"], + weightkg: 12, + eggGroups: ["Undiscovered"], + }, + soleronawakened: { + num: 2031, + name: "Soleron-Awakened", + baseSpecies: "Soleron", + forme: "Awakened", + types: ["Electric", "Flying"], + baseStats: { hp: 70, atk: 105, def: 85, spa: 135, spd: 95, spe: 125 }, + abilities: { 0: "Battle Bond" }, + requiredAbility: "Battle Bond", + battleOnly: "Soleron", + weightkg: 24, + eggGroups: ["Undiscovered"], + }, + efflor: { + num: 2032, + name: "Efflor", + types: ["Rock", "Grass"], + baseStats: { hp: 80, atk: 85, def: 110, spa: 105, spd: 110, spe: 25 }, + abilities: { 0: "Solid Rock", 1: "Unaware", H: "Seed Sower" }, + weightkg: 113, + eggGroups: ["Undiscovered"], + }, + pictagon: { + num: 2055, + name: "Pictagon", + types: ["Dragon", "Ghost"], + baseStats: { hp: 105, atk: 105, def: 60, spa: 80, spd: 85, spe: 95 }, + abilities: { 0: "Clear Body", 1: "Infiltrator", H: "No Guard" }, + weightkg: 113, + eggGroups: ["Undiscovered"], + }, + jaegorm: { + num: 2033, + name: "Jaegorm", + types: ["Bug", "Psychic"], + baseStats: { hp: 60, atk: 65, def: 40, spa: 130, spd: 40, spe: 130 }, + abilities: { 0: "Schooling" }, + otherFormes: ["Jaegorm-Collective"], + formeOrder: ["Jaegorm", "Jaegorm-Collective"], + weightkg: 10, + eggGroups: ["Undiscovered"], + }, + jaegormcollective: { + num: 2033, + name: "Jaegorm-Collective", + baseSpecies: "Jaegorm", + forme: "Collective", + types: ["Bug", "Psychic"], + baseStats: { hp: 60, atk: 145, def: 130, spa: 100, spd: 130, spe: 80 }, + abilities: { 0: "Schooling" }, + requiredAbility: "Schooling", + battleOnly: "Jaegorm", + weightkg: 122, + eggGroups: ["Undiscovered"], + }, + flocura: { + num: 2054, + name: "Flocura", + types: ["Grass", "Psychic"], + baseStats: { hp: 55, atk: 85, def: 55, spa: 107, spd: 180, spe: 118 }, + abilities: { 0: "Levitate", H: "Power Construct" }, + otherFormes: ["Flocura-Nexus"], + formeOrder: ["Flocura", "Flocura-Nexus"], + weightkg: 7.1, + eggGroups: ["Undiscovered"], + }, + flocuranexus: { + num: 2054, + name: "Flocura-Nexus", + baseSpecies: "Flocura", + forme: "Nexus", + types: ["Grass", "Psychic"], + baseStats: { hp: 105, atk: 125, def: 105, spa: 137, spd: 180, spe: 48 }, + abilities: { 0: "Levitate", H: "Power Construct" }, + requiredAbility: "Power Construct", + battleOnly: "Flocura", + weightkg: 999, + eggGroups: ["Undiscovered"], + }, +}; diff --git a/data/mods/scootopiav2/rulesets.ts b/data/mods/scootopiav2/rulesets.ts new file mode 100644 index 0000000000..35ce7bd003 --- /dev/null +++ b/data/mods/scootopiav2/rulesets.ts @@ -0,0 +1,38 @@ +export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = { + supertypemovesrule: { + effectType: 'Rule', + name: 'Super Type Moves Rule', + desc: 'Prevents pokemon from using Crystal or Feral moves unless they have a matching type.', + onBeforeMove(pokemon, target, move) { + move = { + ...this.dex.moves.get(move), + hit: move.hit, + }; + if (move.type === "Crystal" && !pokemon.hasType("Crystal")) return false; + if (move.type === "Feral" && !pokemon.hasType("Feral")) return false; + }, + onDisableMove(pokemon) { + for (const moveSlot of pokemon.moveSlots) { + const move = this.dex.moves.get(moveSlot.id); + if ((move.type === "Crystal" && !pokemon.hasType("Crystal")) || (move.type === "Feral" && !pokemon.hasType("Feral"))) { + pokemon.disableMove(moveSlot.id, false); + } + } + }, + }, + spriteviewer: { + effectType: 'ValidatorRule', + name: 'Sprite Viewer', + desc: "Displays a fakemon's sprite in chat when it is switched in for the first time", + onBegin() { + this.add('rule', 'Sprite Viewer: Displays sprites in chat'); + }, + onSwitchIn(pokemon) { + if (!this.effectState[pokemon.species.id]) { + this.add('-message', `${pokemon.species.name}'s Sprite:`); + this.add(`raw|`); + this.effectState[pokemon.species.id] = true; + } + }, + }, +}; diff --git a/data/mods/scootopiav2/scripts.ts b/data/mods/scootopiav2/scripts.ts new file mode 100644 index 0000000000..49611260ed --- /dev/null +++ b/data/mods/scootopiav2/scripts.ts @@ -0,0 +1,3 @@ +export const Scripts: ModdedBattleScriptsData = { + gen: 9, +}; diff --git a/data/mods/scootopiav2/typechart.ts b/data/mods/scootopiav2/typechart.ts new file mode 100644 index 0000000000..3b253d0eff --- /dev/null +++ b/data/mods/scootopiav2/typechart.ts @@ -0,0 +1,530 @@ +export const TypeChart: import('../../../sim/dex-data').ModdedTypeDataTable = { + bug: { + damageTaken: { + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 2, + Fire: 1, + Flying: 1, + Ghost: 0, + Grass: 2, + Ground: 2, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 1, + Steel: 0, + Water: 0, + Crystal: 0, + Feral: 0, + }, + HPivs: { atk: 30, def: 30, spd: 30 }, + HPdvs: { atk: 13, def: 13 }, + }, + dark: { + damageTaken: { + prankster: 3, + Bug: 1, + Dark: 2, + Dragon: 0, + Electric: 0, + Fairy: 1, + Fighting: 1, + Fire: 0, + Flying: 0, + Ghost: 2, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 3, + Rock: 0, + Steel: 0, + Water: 0, + Crystal: 1, + Feral: 0, + }, + HPivs: {}, + }, + dragon: { + damageTaken: { + Bug: 0, + Dark: 0, + Dragon: 1, + Electric: 2, + Fairy: 1, + Fighting: 0, + Fire: 2, + Flying: 0, + Ghost: 0, + Grass: 2, + Ground: 0, + Ice: 1, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 2, + Crystal: 0, + Feral: 2, + }, + HPivs: { atk: 30 }, + HPdvs: { def: 14 }, + }, + electric: { + damageTaken: { + par: 3, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 2, + Fairy: 0, + Fighting: 0, + Fire: 0, + Flying: 2, + Ghost: 0, + Grass: 0, + Ground: 1, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 2, + Water: 0, + Crystal: 2, + Feral: 0, + }, + HPivs: { spa: 30 }, + HPdvs: { atk: 14 }, + }, + fairy: { + damageTaken: { + Bug: 2, + Dark: 2, + Dragon: 3, + Electric: 0, + Fairy: 0, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 0, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 1, + Psychic: 0, + Rock: 0, + Steel: 1, + Water: 0, + Crystal: 0, + Feral: 1, + }, + }, + fighting: { + damageTaken: { + Bug: 2, + Dark: 2, + Dragon: 0, + Electric: 0, + Fairy: 1, + Fighting: 0, + Fire: 0, + Flying: 1, + Ghost: 0, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 1, + Rock: 2, + Steel: 0, + Water: 0, + Crystal: 2, + Feral: 0, + }, + HPivs: { def: 30, spa: 30, spd: 30, spe: 30 }, + HPdvs: { atk: 12, def: 12 }, + }, + fire: { + damageTaken: { + brn: 3, + Bug: 2, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 2, + Fighting: 0, + Fire: 2, + Flying: 0, + Ghost: 0, + Grass: 2, + Ground: 1, + Ice: 2, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 1, + Steel: 2, + Water: 1, + Crystal: 1, + Feral: 2, + }, + HPivs: { atk: 30, spa: 30, spe: 30 }, + HPdvs: { atk: 14, def: 12 }, + }, + flying: { + damageTaken: { + Bug: 2, + Dark: 0, + Dragon: 0, + Electric: 1, + Fairy: 0, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 0, + Grass: 2, + Ground: 3, + Ice: 1, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 1, + Steel: 0, + Water: 0, + Crystal: 0, + Feral: 1, + }, + HPivs: { hp: 30, atk: 30, def: 30, spa: 30, spd: 30 }, + HPdvs: { atk: 12, def: 13 }, + }, + ghost: { + damageTaken: { + trapped: 3, + Bug: 2, + Dark: 1, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 3, + Fire: 0, + Flying: 0, + Ghost: 1, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 3, + Poison: 2, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 0, + Crystal: 1, + Feral: 2, + }, + HPivs: { def: 30, spd: 30 }, + HPdvs: { atk: 13, def: 14 }, + }, + grass: { + damageTaken: { + powder: 3, + Bug: 1, + Dark: 0, + Dragon: 0, + Electric: 2, + Fairy: 0, + Fighting: 0, + Fire: 1, + Flying: 1, + Ghost: 0, + Grass: 2, + Ground: 2, + Ice: 1, + Normal: 0, + Poison: 1, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 2, + Crystal: 0, + Feral: 1, + }, + HPivs: { atk: 30, spa: 30 }, + HPdvs: { atk: 14, def: 14 }, + }, + ground: { + damageTaken: { + sandstorm: 3, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 3, + Fairy: 0, + Fighting: 0, + Fire: 0, + Flying: 0, + Ghost: 0, + Grass: 1, + Ground: 0, + Ice: 1, + Normal: 0, + Poison: 2, + Psychic: 0, + Rock: 2, + Steel: 0, + Water: 1, + Crystal: 0, + Feral: 0, + }, + HPivs: { spa: 30, spd: 30 }, + HPdvs: { atk: 12 }, + }, + ice: { + damageTaken: { + hail: 3, + frz: 3, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 1, + Fire: 1, + Flying: 0, + Ghost: 0, + Grass: 0, + Ground: 0, + Ice: 2, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 1, + Steel: 1, + Water: 0, + Crystal: 0, + Feral: 0, + }, + HPivs: { atk: 30, def: 30 }, + HPdvs: { def: 13 }, + }, + normal: { + damageTaken: { + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 1, + Fire: 0, + Flying: 0, + Ghost: 3, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 0, + Crystal: 0, + Feral: 1, + }, + }, + poison: { + damageTaken: { + psn: 3, + tox: 3, + Bug: 2, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 2, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 0, + Grass: 2, + Ground: 1, + Ice: 0, + Normal: 0, + Poison: 2, + Psychic: 1, + Rock: 0, + Steel: 0, + Water: 0, + Crystal: 0, + Feral: 2, + }, + HPivs: { def: 30, spa: 30, spd: 30 }, + HPdvs: { atk: 12, def: 14 }, + }, + psychic: { + damageTaken: { + Bug: 1, + Dark: 1, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 2, + Fire: 0, + Flying: 0, + Ghost: 1, + Grass: 0, + Ground: 0, + Ice: 0, + Normal: 0, + Poison: 0, + Psychic: 2, + Rock: 0, + Steel: 0, + Water: 0, + Crystal: 0, + Feral: 0, + }, + HPivs: { atk: 30, spe: 30 }, + HPdvs: { def: 12 }, + }, + rock: { + damageTaken: { + sandstorm: 3, + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 0, + Fairy: 0, + Fighting: 1, + Fire: 2, + Flying: 2, + Ghost: 0, + Grass: 1, + Ground: 1, + Ice: 0, + Normal: 2, + Poison: 2, + Psychic: 0, + Rock: 0, + Steel: 1, + Water: 1, + Crystal: 0, + Feral: 0, + }, + HPivs: { def: 30, spd: 30, spe: 30 }, + HPdvs: { atk: 13, def: 12 }, + }, + steel: { + damageTaken: { + psn: 3, + tox: 3, + sandstorm: 3, + Bug: 2, + Dark: 0, + Dragon: 2, + Electric: 0, + Fairy: 2, + Fighting: 1, + Fire: 1, + Flying: 2, + Ghost: 0, + Grass: 2, + Ground: 1, + Ice: 2, + Normal: 2, + Poison: 3, + Psychic: 2, + Rock: 2, + Steel: 2, + Water: 0, + Crystal: 2, + Feral: 0, + }, + HPivs: { spd: 30 }, + HPdvs: { atk: 13 }, + }, + water: { + damageTaken: { + Bug: 0, + Dark: 0, + Dragon: 0, + Electric: 1, + Fairy: 0, + Fighting: 0, + Fire: 2, + Flying: 0, + Ghost: 0, + Grass: 1, + Ground: 0, + Ice: 2, + Normal: 0, + Poison: 0, + Psychic: 0, + Rock: 0, + Steel: 2, + Water: 2, + Crystal: 0, + Feral: 1, + }, + HPivs: { atk: 30, def: 30, spa: 30 }, + HPdvs: { atk: 14, def: 13 }, + }, + crystal: { + damageTaken: { + brn: 3, + sandstorm: 3, + Bug: 0, + Dark: 2, + Dragon: 0, + Electric: 1, + Fairy: 0, + Fighting: 1, + Fire: 2, + Flying: 0, + Ghost: 0, + Grass: 0, + Ground: 2, + Ice: 0, + Normal: 2, + Poison: 0, + Psychic: 0, + Rock: 2, + Steel: 1, + Water: 2, + Crystal: 2, + Feral: 2, + }, + }, + feral: { + damageTaken: { + slp: 3, + Bug: 0, + Dark: 0, + Dragon: 1, + Electric: 0, + Fairy: 2, + Fighting: 0, + Fire: 1, + Flying: 0, + Ghost: 2, + Grass: 0, + Ground: 0, + Ice: 2, + Normal: 0, + Poison: 1, + Psychic: 0, + Rock: 0, + Steel: 0, + Water: 0, + Crystal: 0, + Feral: 0, + }, + }, +}; diff --git a/data/random-battles/monsterhunter/random-sets.json b/data/random-battles/monsterhunter/random-sets.json deleted file mode 100644 index 76be3ee79e..0000000000 --- a/data/random-battles/monsterhunter/random-sets.json +++ /dev/null @@ -1,3301 +0,0 @@ -{ - "agnaktorex": { - "level": 84, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Discharge", "Earth Power", "Tachyon Cutter", "Armor Cannon"], - "abilities": ["Protopyre"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Discharge", "Earth Power", "Tachyon Cutter", "Armor Cannon"], - "abilities": ["Protopyre"], - "teraTypes": ["Normal"] - - } - ] - }, - "ahtalka": { - "level": 80, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Fake Out", "Dragonator", "Attack Order", "Behemoth Blade", "Low Kick", "Sticky Web"], - "abilities": ["Empress Throne"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Dragonator", "Drill Run", "Leaf Blade", "Bullet Punch", "Swords Dance", "Megahorn"], - "abilities": ["Steelworker"], - "teraTypes": ["Normal"] - - } - ] - }, - "alatreon": { - "level": 80, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Hurricane", "Thunderbolt", "Flamethrower", "Ice Beam", "Draco Meteor"], - "abilities": ["Escaton"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Volt Tackle", "Multi-Attack", "Knock Off", "Earthquake", "Icicle Crash", "Spirit Break"], - "abilities": ["Escaton"], - "teraTypes": ["Normal"] - } - ] - }, - "amatsu": { - "level": 85, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Aeroblast", "Scald", "Calm Mind", "Recover"], - "abilities": ["Delta Stream"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Bewitched Bubble", "Aeroblast", "U-turn", "Thunderbolt", "Ice Beam"], - "abilities": ["Regenerator"], - "teraTypes": ["Normal"] - } - ] - }, - "arkveld": { - "level": 84, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Dragon Rush", "Dual Wingbeat", "Iron Head", "Poltergeist", "Power Whip"], - "abilities": ["Wyversion"], - "teraTypes": ["Normal"] - } - ] - }, - "astalos": { - "level": 86, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Air Slash", "Bug Buzz", "Dazzling Gleam", "Energy Ball", "Thunderbolt", "Volt Switch", "Shadow Ball"], - "abilities": ["Lightning Rod"], - "teraTypes": ["Normal"] - } - ] - }, - "bazelgeuse": { - "level": 86, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Brave Bird", "Glide Bomb", "Gunk Shot", "Knock Off", "Rock Blast"], - "abilities": ["Skill Link"], - "teraTypes": ["Normal"] - } - ] - }, - "brachydios": { - "level": 88, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Drain Punch", "Fake Out", "Slime Punch", "Rock Slide", "Mach Punch"], - "abilities": ["Iron Fist", "Poison Touch"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["No Retreat", "Close Combat", "Drain Punch", "Slime Punch", "Rock Slide"], - "abilities": ["Iron Fist"], - "teraTypes": ["Normal"] - - } - ] - }, - "ceadeus": { - "level": 86, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["Earthquake", "Wave Crash", "Flip Turn", "Rock Slide"], - "abilities": ["Regenerator"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Dragon Dance", "Earthquake", "Wave Crash", "Rock Slide", "Dragon Rush"], - "abilities": ["Primordial Sea"], - "teraTypes": ["Normal"] - } - ] - }, - "goldeus": { - "level": 86, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Origin Pulse", "Make It Rain", "Ice Beam", "Earth Power"], - "abilities": ["Primordial Sea"], - "teraTypes": ["Normal"] - } - ] - }, - "chameleos": { - "level": 82, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Dragon Pulse", "Hex", "Malignant Chain", "Sludge Bomb", "Psychic", "Tri Attack"], - "abilities": ["Poison Puppeteer"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Defog", "Toxic Spikes", "Protect", "Dragon Pulse", "Hex", "Malignant Chain"], - "abilities": ["Neutralizing Gas"], - "teraTypes": ["Normal"] - } - ] - }, - "chaoticgore": { - "level": 85, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Knock Off", "Parting Shot", "Topsy-Turvy", "Spirit Break"], - "abilities": ["Contrary"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Superpower", "Knock Off", "Play Rough", "Rest","Sucker Punch"], - "abilities": ["Contrary"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Draco Meteor", "Frenzy Slam", "Frenzy Pulse", "Focus Blast", "Swift"], - "abilities": ["Contrary"], - "teraTypes": ["Normal"] - } - ] - }, - "dahrenmohran": { - "level": 86, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Ceaseless Edge", "Headlong Rush", "Mighty Cleave", "U-turn"], - "abilities": ["Sand Rush","Rough Skin"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Swords Dance", "Thousand Arrows", "Mighty Cleave", "Shore Up"], - "abilities": ["Rough Skin"], - "teraTypes": ["Normal"] - } - ] - }, - "dalamadur": { - "level": 81, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Rock Wrecker", "Meteor Assault", "Mountain Gale"], - "abilities": ["Gemini Core"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Coil", "Rock Wrecker", "Meteor Assault", "Mountain Gale", "Rest"], - "abilities": ["Gemini Core"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Meteor Assault", "Rock Wrecker", "Eternabeam", "Astral Barrage"], - "abilities": ["Gemini Core"], - "teraTypes": ["Normal"] - } - ] - }, - "deviljho": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Belly Drum", "Substitute", "Crunch", "Iron Head", "Iron Tail"], - "abilities": ["Cud Chew"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Devil's Jaw", "Knock Off", "Dragon Dance", "Axe Kick", "Blaze Kick"], - "abilities": ["Dragon's Maw"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Devil's Jaw", "Knock Off", "Pursuit", "Axe Kick", "Blaze Kick", "Slack Off"], - "abilities": ["Dragon's Maw"], - "teraTypes": ["Normal"] - } - ] - }, - "diremiralis": { - "level": 83, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Spikes", "Stealth Rock", "Will-o-Wisp", "Slack Off", "Draco Meteor", "Steam Eruption", "Blaze Ball"], - "abilities": ["Megiddo's Gift"], - "teraTypes": ["Normal"] - } - ] - }, - "disufiroa": { - "level": 87, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Burning Bulwark", "Calm Mind", "Blaze Ball", "Seraphic Shift", "Focus Blast", "Heat Wave", "Earth Power", "Psychic"], - "abilities": ["Frozen Calamity"], - "teraTypes": ["Normal"] - } - ] - }, - "eruzerion": { - "level": 85, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Armor Cannon", "Blizzard", "Frozen Cleave", "Freeze-Dry", "Pyro Ball", "V-create"], - "abilities": ["Heat Sink", "Permafrost"], - "teraTypes": ["Normal"] - } - ] - }, - "espinas": { - "level": 86, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic", "Slack Off", "Barb Barrage", "Horn Leech", "Leech Seed", "Power Whip"], - "abilities": ["Toxic Debris"], - "teraTypes": ["Normal"] - } - ] - }, - "flaminas": { - "level": 85, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Blaze Ball", "Matcha Gotcha", "Magma Storm", "Seed Flare", "Slack Off"], - "abilities": ["Poison Heal"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Thunder Wave", "Will-o-Wisp", "Slack Off", "Matcha Gotcha", "Magma Storm", "Protect"], - "abilities": ["Poison Heal", "Toxic Debris"], - "teraTypes": ["Normal"] - } - ] - }, - "fatalis": { - "level": 84, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Dragon Energy", "Fiery Wrath", "Thunderbolt", "Eruption"], - "abilities": ["Desolate Land"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Pyro Ball", "Dragon Ascent", "Dragon Hammer", "Earthquake", "Recover"], - "abilities": ["Desolate Land"], - "teraTypes": ["Normal"] - } - ] - }, - "gaismagorm": { - "level": 85, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Heal Order", "Protect", "Toxic", "Knock Off", "Dragon Rush", "Body Press"], - "abilities": ["Regenerator"], - "teraTypes": ["Normal"] - } - ] - }, - "gammoth": { - "level": 87, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Psyshield Bash", "Ice Shard", "Ice Spinner", "Stomping Tantrum", "Body Press"], - "abilities": ["Dauntless Shield", "Snow Warning"], - "teraTypes": ["Normal"] - } - ] - }, - "glavenus": { - "level": 85, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Accelerock", "V-create", "Rock Slide", "Psyblade", "Sacred Sword"], - "abilities": ["Dulled Blades", "Beast Boost"], - "teraTypes": ["Normal"] - } - ] - }, - "acidinus": { - "level": 80, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Fillet Away", "Accelerock", "Behemoth Blade", "Sulfurous Blade", "Rock Slide"], - "abilities": ["Perforating"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Stealth Rock", "Accelerock", "Behemoth Blade", "Sulfurous Blade", "Rock Slide"], - "abilities": ["Toxic Debris"], - "teraTypes": ["Normal"] - - } - ] - }, - "gogmazios": { - "level": 84, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Dynamax Cannon", "Flash Cannon", "Fire Blast", "Dark Pulse"], - "abilities": ["Sheer Force"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Parting Shot", "Will-o-Wisp", "Flash Cannon", "Frenzy Slam"], - "abilities": ["Debris"], - "teraTypes": ["Normal"] - } - ] - }, - "gureadomosu": { - "level": 90, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["Energy Ball", "Hydro Pump", "Psychic Noise", "Earth Power"], - "abilities": ["Storm Drain"], - "teraTypes": ["Normal"] - - }, - { - "role": "Bulky Attacker", - "movepool": ["Leech Seed", "Energy Ball", "Hydro Pump", "Psychic Noise", "Earth Power"], - "abilities": ["Storm Drain", "Protosynthesis"], - "teraTypes": ["Normal"] - } - ] - }, - "harudomerugu": { - "level": 84, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Gigaton Hammer", "Dragon Rush", "Rock Slide", "Combat Torque"], - "abilities": ["Silver Subsume"], - "teraTypes": ["Normal"] - } - ] - }, - "ibushi": { - "level": 88, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Protect", "Cold Snap", "Thunder Wave", "Stealth Rock", "Aeroblast", "Oblivion Wing", "Blizzard", "Draco Meteor"], - "abilities": ["Air Lock"], - "teraTypes": ["Normal"] - } - ] - }, - "inagami": { - "level": 87, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Body Press", "Chip Away", "Drum Beating", "Horn Leech", "Wood Hammer", "Rock Slide"], - "abilities": ["Seed Sower", "Stamina"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Iron Defense", "Body Press", "Chip Away", "Horn Leech", "Rock Slide"], - "abilities": ["Stamina"], - "teraTypes": ["Normal"] - - } - ] - }, - "jhenmohran": { - "level": 85, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["U-turn", "Diamond Storm", "Headlong Rush", "Dragon Rush", "Knock Off"], - "abilities": ["Purifying Salt"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Diamond Storm", "Headlong Rush", "Dragon Rush", "Knock Off", "Rock Slide"], - "abilities": ["Mold Breaker", "Sand Force"], - "teraTypes": ["Normal"] - - }, - { - "role": "Bulky Support", - "movepool": ["Protect", "Salt Cure", "Stealth Rock", "Spikes", "Earthquake", "Diamond Storm"], - "abilities": ["Purifying Salt"], - "teraTypes": ["Normal"] - - } - ] - }, - "kirin": { - "level": 81, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Astral Barrage", "Thunderbolt", "Focus Blast", "Mist Ball", "Volt Switch", "Electro Drift"], - "abilities": ["Grim Neigh"], - "teraTypes": ["Normal"] - - } - ] - }, - "oroshirin": { - "level": 81, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Glacial Lance", "Poltergeist", "Play Rough", "High Jump Kick", "High Horsepower"], - "abilities": ["Chilling Neigh"], - "teraTypes": ["Normal"] - } - ] - }, - "kulvetaroth": { - "level": 81, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Magma Storm", "Make It Rain", "Earth Power", "Searing Shot", "Power Gem"], - "abilities": ["Good as Gold", "Magic Guard"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Magma Storm", "Steel Beam", "Earth Power", "Searing Shot", "Power Gem"], - "abilities": ["Magic Guard"], - "teraTypes": ["Normal"] - - } - ] - }, - "kushaladaora": { - "level": 84, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Defog", "Roost", "Tailwind", "Draco Meteor", "Arctic Shriek", "Flash Cannon"], - "abilities": ["Magic Bounce"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Bleakwind Storm", "Ice Beam", "Draco Meteor", "Flash Cannon", "Nasty Plot"], - "abilities": ["Bullet Proof", "Magic Bounce"], - "teraTypes": ["Normal"] - - } - ] - }, - "rushaladaora": { - "level": 83, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Body Press", "Dragon Claw", "Earthquake", "Rock Slide", "Steel Wing", "Ice Spinner"], - "abilities": ["Rusted Gale", "Magic Bounce"], - "teraTypes": ["Normal"] - } - ] - }, - "lagiacrus": { - "level": 88, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["Volt Switch", "Parabolic Charge", "Ice Beam", "Hydro Pump"], - "abilities": ["Electromorphosis"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Glare", "Bolt Breath", "Cyclone Rend", "Dragon Pulse", "Ice Beam", "Wretched Water"], - "abilities": ["Surge Surfer", "Electromorphosis"], - "teraTypes": ["Normal"] - - } - ] - }, - "ivogiacrus": { - "level": 87, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Coil", "Glare", "Bolt Beak", "Iron Head", "Rock Slide", "Thunder Rush", "Iron Tail"], - "abilities": ["Terrestrial", "Dense Cortex", "Electromorphosis"], - "teraTypes": ["Normal"] - } - ] - }, - "laoshanlung": { - "level": 86, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Protect", "Stealth Rock", "Dracophage", "Slack Off", "Dragon Hammer", "Earthquake", "Psychic Fangs", "Rock Slide", "Crunch"], - "abilities": ["Unaware"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Dragon Hammer", "Earthquake", "Psychic Fangs", "Rock Slide", "Crunch", "Stone Axe"], - "abilities": ["Unaware"], - "teraTypes": ["Normal"] - - } - ] - }, - "lunastra": { - "level": 87, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Hellflare", "Future Sight", "Blue Flare", "Focus Blast", "Psychic", "Draco Meteor", "Scorching Sands"], - "abilities": ["Berserk"], - "teraTypes": ["Normal"] - } - ] - }, - "magmadron": { - "level": 84, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Protect", "High Horsepower", "Magma Surge", "Body Press", "Rapid Spin"], - "abilities": ["Earth Eater", "Flash Fire"], - "teraTypes": ["Normal"] - } - ] - }, - "magnamalo": { - "level": 89, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Blaze Kick", "Knock Off", "Kowtow Cleave", "Hellfire Rifle", "Magna Lance", "Sucker Punch"], - "abilities": ["Intimidate", "Defiant"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Blaze Kick", "Hellfire Rifle", "Magna Lance", "Sucker Punch", "Swords Dance"], - "abilities": ["Intimidate", "Defiant"], - "teraTypes": ["Normal"] - - } - ] - }, - "malzeno": { - "level": 82, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Apex Burst", "Dark Pulse", "Dragon Pulse", "Shadow Ball"], - "abilities": ["Multiscale"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Nasty Plot", "Apex Burst", "Dark Pulse", "Dragon Pulse", "Shadow Ball", "Hyper Voice"], - "abilities": ["Multiscale"], - "teraTypes": ["Normal"] - - } - ] - }, - "primozeno": { - "level": 80, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Dragon Darts", "Play Rough", "Drill Run", "Sacred Sword"], - "abilities": ["Duke's Bayonet", "Justified", "Multiscale"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Apex Burst", "Draco Meteor", "Secret Sword", "Calm Mind", "Moonlight"], - "abilities": ["Multiscale"], - "teraTypes": ["Normal"] - } - ] - }, - "mizutsune": { - "level": 84, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["Flip Turn", "Bewitched Bubble", "Scald", "Springtide Storm", "Ice Beam", "Mist Ball"], - "abilities": ["Marvel Scale"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Protect", "Glare", "Bewitched Bubble", "Scald", "Springtide Storm", "Ice Beam", "Mist Ball"], - "abilities": ["Marvel Scale"], - "teraTypes": ["Normal"] - - } - ] - }, - "vizutsune": { - "level": 87, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Blaze Ball", "Dazzling Gleam", "Focus Blast", "Infernal Parade", "Scald", "Fiery Dance"], - "abilities": ["Serene Grace"], - "teraTypes": ["Normal"] - } - ] - }, - "nakarkos": { - "level": 83, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Trick Room", "Dynamax Cannon", "Moongeist Beam", "Sludge Wave", "Thunderbolt", "Aura Sphere", "Earth Power", "Flamethrower"], - "abilities": ["Vessel of Ruin"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Dynamax Cannon", "Moongeist Beam", "Sludge Wave", "Thunderbolt", "Aura Sphere", "Earth Power", "Flamethrower"], - "abilities": ["Vessel of Ruin"], - "teraTypes": ["Normal"] - - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Dynamax Cannon", "Moongeist Beam", "Earth Power", "Flamethrower"], - "abilities": ["Vessel of Ruin"], - "teraTypes": ["Normal"] - - } - ] - }, - "namielle": { - "level": 83, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Bewitched Bubble", "Thunderbolt", "Psychic", "Hydro Pump", "Moonblast"], - "abilities": ["Mucus Veil"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Recover", "Bewitched Bubble", "Thunderbolt", "Psychic", "Hydro Pump", "Moonblast"], - "abilities": ["Water Absorb", "Mucus Veil"], - "teraTypes": ["Normal"] - - } - ] - }, - "nargacuga": { - "level": 86, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Bullet Punch", "Cutwing Barrage", "Meteor Mash", "Psycho Cut", "Thousand Blades"], - "abilities": ["Sharpness"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Cutwing Barrage", "Meteor Mash", "Psycho Cut", "Thousand Blades"], - "abilities": ["Sharpness"], - "teraTypes": ["Normal"] - - } - ] - }, - "lucacuga": { - "level": 87, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Behemoth Blade", "Poison Tail", "Spectral Thief", "U-turn"], - "abilities": ["Clear Body"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Behemoth Blade", "Poison Tail", "Poltergeist", "Haze", "Toxic Spikes", "Taunt"], - "abilities": ["Clear Body"], - "teraTypes": ["Normal"] - - } - ] - }, - "greencuga": { - "level": 88, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Swords Dance", "Bullet Seed", "Tail Slap", "Bullet Punch", "Dual Wingbeat", "Grassy Glide"], - "abilities": ["Technician"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Power Whip", "Iron Tail", "Meteor Mash", "X-Scissor", "Psycho Cut", "Dual Wingbeat"], - "abilities": ["Screen Cleaner"], - "teraTypes": ["Normal"] - } - ] - }, - "narwa": { - "level": 86, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Bleakwind Storm", "Wildbolt Storm", "Draco Meteor", "Focus Blast", "Earth Power"], - "abilities": ["Electric Surge"], - "teraTypes": ["Normal"] - - } - ] - }, - "nefgarmat": { - "level": 87, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Protect", "Stealth Rock", "Wish", "Quicksand Breath", "Dazzling Gleam", "Moonblast", "Defog", "Flash Cannon"], - "abilities": ["Sand Stream"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Quicksand Breath", "Dazzling Gleam", "Moonblast", "Psychic", "Flash Cannon"], - "abilities": ["Centrifuge"], - "teraTypes": ["Normal"] - - } - ] - }, - "nergigante": { - "level": 80, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Protect", "Close Combat", "Glaive Rush", "Roughhouse", "High Horsepower", "Wicked Blow"], - "abilities": ["Guts"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Close Combat", "Glaive Rush", "Play Rough", "Roughhouse", "High Horsepower", "Wicked Blow"], - "abilities": ["Unseen Fist"], - "teraTypes": ["Normal"] - - } - ] - }, - "nuudra": { - "level": 91, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Fiery Wrath", "Sludge Bomb", "Lava Plume", "Knock Off", "Burning Bulwark", "Recover", "Will-o-Wisp"], - "abilities": ["Regenerator"], - "teraTypes": ["Normal"] - } - ] - }, - "rajang": { - "level": 82, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["No Retreat", "Close Combat", "Plasma Fists", "Rock Slide", "Pursuit", "Dragon Hammer"], - "abilities": ["Defiant", "Anger Point"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Close Combat", "Plasma Fists", "Rock Slide", "Pursuit", "Dragon Hammer", "Volt Tackle", "Stomping Tantrum"], - "abilities": ["Defiant", "Anger Point"], - "teraTypes": ["Normal"] - - } - ] - }, - "rathalos": { - "level": 91, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Hurricane", "Overheat", "Focus Blast", "Blaze Ball", "Air Slash"], - "abilities": ["Poison Touch"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Brave Bird", "Iron Tail", "Earthquake", "Blazing Torque", "Rock Slide"], - "abilities": ["Poison Touch"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Tailwind", "Will-o-Wisp", "Hurricane", "Rock Slide", "Protect", "Flamethrower"], - "abilities": ["Gale Wings"], - "teraTypes": ["Normal"] - - } - ] - }, - "silvalos": { - "level": 81, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Blue Flare", "Flash Cannon", "Focus Blast", "Hurricane"], - "abilities": ["Incandescent"], - "teraTypes": ["Normal"] - } - ] - }, - "rathian": { - "level": 86, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Spikes", "Toxic Spikes", "Slack Off", "Dire Claw", "Mortal Spin", "Baneful Bunker", "Earthquake", "Body Press"], - "abilities": ["Poison Point", "Queenly Majesty"], - "teraTypes": ["Normal"] - } - ] - }, - "goldthian": { - "level": 87, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Blue Flare", "Flash Cannon", "Sludge Bomb", "Focus Blast", "Toxic Spikes"], - "abilities": ["Incandescent"], - "teraTypes": ["Normal"] - } - ] - }, - "pinkthian": { - "level": 87, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic Spikes", "Baneful Bunker", "Mortal Spin", "Spirit Break", "Strange Steam"], - "abilities": ["Merciless", "Queenly Majesty"], - "teraTypes": ["Normal"] - } - ] - }, - "reydau": { - "level": 85, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Clanging Scales", "Power Gem", "Thunderbolt", "Tailwind"], - "abilities": ["Tempest Energy"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Clanging Scales", "Power Gem", "Thunderbolt", "Thunderclap", "Nasty Plot"], - "abilities": ["Rocky Payload"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Discharge", "Clanging Scales", "Power Gem", "Thunderbolt", "Thunderclap"], - "abilities": ["Volt Absorb"], - "teraTypes": ["Normal"] - - } - ] - }, - "safijiiva": { - "level": 83, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Take Heart", "Cloaking Glow", "Spacial Rend", "Psycho Boost", "Earth Power", "Flamethrower"], - "abilities": ["Multiscale"], - "teraTypes": ["Normal"] - - } - ] - }, - "seregios": { - "level": 85, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Spikes", "Tailwind", "Taunt", "Thousand Blades", "Cutwing Barrage", "Rock Slide"], - "abilities": ["Iron Barbs", "Well-Baked Body"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Brave Bird", "High Jump Kick", "Rock Blast", "Steel Wing", "Blaze Kick", "U-turn"], - "abilities": ["Weak Armor", "Well-Baked Body"], - "teraTypes": ["Normal"] - - } - ] - }, - "shagarumagala": { - "level": 84, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Apex Burst", "Draco Meteor", "Shadow Ball", "Aura Sphere"], - "abilities": ["Magic Guard"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Apex Burst", "Draco Meteor", "Healing Wish", "Defog", "Strength Sap"], - "abilities": ["Magic Guard"], - "teraTypes": ["Normal"] - } - ] - }, - "shantien": { - "level": 85, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Bleakwind Storm", "Dragon Pulse", "Tri Attack", "Hyper Voice", "Origin Pulse", "Thunderbolt"], - "abilities": ["Galvanize", "Ignite"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Nasty Plot", "Hurricane", "Origin Pulse", "Thunder"], - "abilities": ["Drizzle"], - "teraTypes": ["Normal"] - } - ] - }, - "sharaishvalda": { - "level": 82, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Protect", "Salt Cure", "Creepy Noise", "Psychic Noise", "Arctic Shriek", "Boomburst"], - "abilities": ["Earth Eater", "Tablets of Ruin"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Trick Room", "Diamond Storm", "Earthquake", "Zen Headbutt", "Dragon Rush", "Play Rough"], - "abilities": ["Earth Eater", "Tablets of Ruin"], - "teraTypes": ["Normal"] - - } - ] - }, - "shengaoren": { - "level": 80, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Liquidation", "Darkest Lariat", "Earthquake", "Dragon Hammer", "Power Whip", "Rock Slide"], - "abilities": ["Adaptability"], - "teraTypes": ["Normal"] - } - ] - }, - "teostra": { - "level": 86, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Outrage", "Flare Blitz", "Earthquake", "Sacred Fire", "Stone Edge"], - "abilities": ["Reckless", "Drought"], - "teraTypes": ["Normal"] - } - ] - }, - "tigrex": { - "level": 82, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Arctic Shriek", "Overdrive", "Focus Blast", "Boomburst", "Clangorous Soul"], - "abilities": ["Punk Rock"], - "teraTypes": ["Normal"] - } - ] - }, - "molgrex": { - "level": 88, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Boomblast", "Close Combat", "Rock Slide", "Mega Punch", "Darkest Lariat"], - "abilities": ["Aggravation", "Gravedrum"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Clangorous Soul", "Boomblast", "Close Combat", "Rock Slide", "Mega Punch", "Darkest Lariat"], - "abilities": ["Aggravation", "Gluttony"], - "teraTypes": ["Normal"] - - } - ] - }, - "ukanlos": { - "level": 82, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Iron Defense", "Body Press", "Behemoth Bash", "Snowball Cannon", "High Horsepower"], - "abilities": ["Ice Scales"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Protect", "Cold Snap", "Behemoth Bash", "Snowball Cannon", "Body Press", "High Horsepower"], - "abilities": ["Absolute Zero"], - "teraTypes": ["Normal"] - - } - ] - }, - "uthduna": { - "level": 85, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Belly Drum", "Liquidation", "Scale Shot", "Play Rough"], - "abilities": ["Oceanic Veil"], - "teraTypes": ["Normal"] - } - ] - }, - "blackveilhazak": { - "level": 84, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Shroom Shield", "Spore", "Recover", "Shadow Ball", "Energy Ball", "Dark Pulse"], - "abilities": ["Pathogenic"], - "teraTypes": ["Normal"] - } - ] - }, - "valstrax": { - "level": 87, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Dragon Darts", "Collision Course", "Sunsteel Strike", "U-turn", "Brave Bird"], - "abilities": ["Strafe"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Dragon Darts", "Collision Course", "Sunsteel Strike", "U-turn", "Brave Bird"], - "abilities": ["Strafe"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Dragon Darts", "Collision Course", "Sunsteel Strike", "Brave Bird", "Hone Claws"], - "abilities": ["Strafe"], - "teraTypes": ["Normal"] - } - ] - }, - "glowstrax": { - "level": 83, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Hurricane", "Overheat", "Dragon Energy", "Focus Blast", "Tachyon Cutter"], - "abilities": ["Overload"], - "teraTypes": ["Normal"] - } - ] - }, - "velkhana": { - "level": 82, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Freezing Glare", "Alluring Voice", "Blizzard", "Draco Meteor", "Freeze-Dry"], - "abilities": ["Snow Warning"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Cold Snap", "Heal Bell", "Protect", "Freeze-Dry", "Freezing Glare", "Draco Meteor", "Arctic Shriek"], - "abilities": ["Ice Scales"], - "teraTypes": ["Normal"] - - } - ] - }, - "xenojiiva": { - "level": 84, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Photon Geyser", "Focus Blast", "Dazzling Gleam", "Draco Meteor", "Earth Power", "Energy Ball"], - "abilities": ["Psychic Surge", "Quark Drive"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Photon Geyser", "Focus Blast", "Dazzling Gleam", "Draco Meteor", "Earth Power", "Energy Ball"], - "abilities": ["Psychic Surge"], - "teraTypes": ["Normal"] - - } - ] - }, - "yamatsukami": { - "level": 83, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Rapid Spin", "Moss Bomb", "Rock Slide", "Tailwind", "Wish", "Protect", "Creepy Noise"], - "abilities": ["Grassy Surge"], - "teraTypes": ["Normal"] - } - ] - }, - "zinogre": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Bulk Up", "Extreme Speed", "Plasma Fists", "Mega Kick", "Fire Fang", "Ice Fang", "Drain Punch"], - "abilities": ["Speed Boost"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Bug Buzz", "Electro Drift", "Overheat", "Thunderclap", "Aura Sphere"], - "abilities": ["Speed Boost", "Insect Armor"], - "teraTypes": ["Normal"] - - } - ] - }, - "zorahmagdaros": { - "level": 84, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Wish", "Slack Off", "Magma Surge", "Dragon Hammer", "Play Rough", "Rock Slide"], - "abilities": ["Mighty Wall"], - "teraTypes": ["Normal"] - } - ] - }, - "agnaktor": { - "level": 91, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Heat Beam", "Hyper Drill", "Spirit Break", "Sucker Punch", "Stomping Tantrum"], - "abilities": ["Solar Wrath"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Flare Blitz", "Magma Surge", "Knock Off", "Parting Shot"], - "abilities": ["Magma Armor"], - "teraTypes": ["Normal"] - } - ] - }, - "akantor": { - "level": 85, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Earth Power", "Blue Flare", "Aura Sphere", "Aeroblast", "Nasty Plot"], - "abilities": ["Flare Boost", "Desolate Land"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Earth Power", "Blue Flare", "Focus Blast", "Aeroblast", "Dragon Pulse"], - "abilities": ["Flare Boost", "Desolate Land"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Morning Sun", "Stealth Rock", "Roar", "Magma Storm", "Earth Power", "Dracophage"], - "abilities": ["Intimidate"], - "teraTypes": ["Normal"] - } - ] - }, - "almudron": { - "level": 86, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Earthquake", "Glare", "Shore Up", "Stealth Rock", "Flip Turn", "Rapid Spin"], - "abilities": ["Stamina"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Coil", "Earthquake", "Knock Off", "Shore Up", "Accelerock"], - "abilities": ["Stamina"], - "teraTypes": ["Normal"] - } - ] - }, - "anjanath": { - "level": 87, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Heat Beam", "Close Combat", "Earthquake", "Outrage"], - "abilities": ["Anger Point"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Flare Blitz", "Close Combat", "Earthquake", "Outrage", "Head Smash"], - "abilities": ["Anger Point"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Fire Fang", "Close Combat", "Earthquake", "Crunch", "Outrage"], - "abilities": ["Strong Jaw"], - "teraTypes": ["Normal"] - } - ] - }, - "fuljanath": { - "level": 89, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Close Combat", "Volt Tackle", "Play Rough"], - "abilities": ["Motor Drive"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["High Horsepower", "Close Combat", "Volt Tackle", "Play Rough", "Iron Tail"], - "abilities": ["Anger Point", "Motor Drive"], - "teraTypes": ["Normal"] - } - ] - }, - "barioth": { - "level": 91, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Snowscape", "Blizzard", "Sacred Sword", "Hurricane", "Freeze-Dry"], - "abilities": ["Slush Rush", "Frostnip"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Acrobatics", "Icicle Crash", "Sucker Punch", "Sacred Sword", "Liquidation"], - "abilities": ["Slush Rush", "Frostnip"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Cold Snap", "Glacial Gale", "Ice Hammer", "Sacred Sword", "Dual Wingbeat", "Hurricane"], - "abilities": ["Frostnip"], - "teraTypes": ["Normal"] - } - ] - }, - "sandrioth": { - "level": 87, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Roost", "Tailwind", "Earthquake", "Dual Wingbeat", "Rock Slide"], - "abilities": ["Solid Rock", "Rough Skin"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Swords Dance", "Earthquake", "Stone Edge", "Accelerock", "Superpower"], - "abilities": ["Solid Rock", "Rough Skin"], - "teraTypes": ["Normal"] - - } - ] - }, - "bishaten": { - "level": 91, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Stuff Cheeks", "Extreme Speed", "Sky Uppercut", "Knock Off", "Triple Axel", "Gunk Shot"], - "abilities": ["Ripen"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Moss Bomb", "Force Palm", "Knock Off", "U-turn", "Protect", "Substitute"], - "abilities": ["Ripen"], - "teraTypes": ["Normal"] - } - ] - }, - "orangaten": { - "level": 90, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Stealth Rock", "Taunt", "Slack Off", "Knock Off", "Sky Uppercut", "Blaze Kick"], - "abilities": ["Flame Body"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Close Combat", "Blaze Kick", "Moss Bomb", "Rock Slide", "Fake Out", "Play Rough"], - "abilities": ["Flame Body"], - "teraTypes": ["Normal"] - } - ] - }, - "daimyohermitaur": { - "level": 86, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Iron Defense", "Body Press", "Rapid Spin", "Recover"], - "abilities": ["Unaware"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Recover", "Rapid Spin", "Knock Off", "Whirlpool"], - "abilities": ["Unaware"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Shell Smash", "Crabhammer", "High Horsepower", "Knock Off", "Double Edge"], - "abilities": ["Unaware"], - "teraTypes": ["Normal"] - } - ] - }, - "diablos": { - "level": 83, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Head Smash", "Earthquake", "Rock Slide", "Pursuit", "Knock Off"], - "abilities": ["Rock Head"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Head Smash", "Headlong Rush", "Low Kick", "Knock Off", "Swords Dance"], - "abilities": ["Rock Head"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Head Smash", "Headlong Rush", "Knock Off", "Superpower"], - "abilities": ["Reckless", "Rock Head"], - "teraTypes": ["Normal"] - } - ] - }, - "blackblos": { - "level": 83, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Endure", "Headlong Rush", "Close Combat", "Rock Slide", "Sucker Punch"], - "abilities": ["Blind Rage"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Headlong Rush", "Close Combat", "Rock Slide", "Crunch"], - "abilities": ["Blind Rage"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Headlong Rush", "Close Combat", "Head Smash", "Pursuit", "Sucker Punch"], - "abilities": ["Reckless"], - "teraTypes": ["Normal"] - } - ] - }, - "doshaguma": { - "level": 93, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Slack Off", "Low Kick", "Crunch", "Rock Slide", "Headlong Rush"], - "abilities": ["Aggravation"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Hammer Arm", "Crunch", "Rock Slide", "High Horsepower", "Play Rough", "Roughhouse"], - "abilities": ["Guts"], - "teraTypes": ["Normal"] - } - ] - }, - "duramboros": { - "level": 90, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Tailwind", "Brave Bird", "Moss Bomb", "Superpower", "Stone Edge"], - "abilities": ["Tempest Force"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Moss Bomb", "Milk Drink", "Rapid Spin", "Brave Bird"], - "abilities": ["Tempest Force"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Moss Bomb", "Milk Drink", "Cotton Guard", "Body Press"], - "abilities": ["Tempest Force"], - "teraTypes": ["Normal"] - } - ] - }, - "rustramboros": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Tailwind", "Thousand Waves", "Brave Bird", "Rock Slide"], - "abilities": ["Tempest Force"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Spikes", "Shore Up", "Rapid Spin", "Earthquake", "Stone Axe"], - "abilities": ["Mountaineer"], - "teraTypes": ["Normal"] - } - ] - }, - "garangolm": { - "level": 89, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Boulder Punch", "Drum Beating", "Fire Punch", "Ice Punch", "Liquidation"], - "abilities": ["Rocky Payload"], - "teraTypes": ["Normal"] - } - ] - }, - "goremagala": { - "level": 89, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Frenzy Slam", "Dark Pulse", "Draco Meteor", "Defog", "Recover"], - "abilities": ["Wandering Spirit"], - "teraTypes": ["Normal"] - } - ] - }, - "gossharag": { - "level": 85, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Glacial Lance", "Close Combat", "Ice Shard", "Swords Dance"], - "abilities": ["Adaptability"], - "teraTypes": ["Normal"] - - } - ] - }, - "gravios": { - "level": 88, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Mortal Spin", "Psychic", "Lava Plume"], - "abilities": ["Flash Fire", "Armor Tail"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Armor Cannon", "Psychic", "Earth Power", "Trick Room"], - "abilities": ["Armor Tail"], - "teraTypes": ["Normal"] - } - ] - }, - "greatizuchi": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Population Bomb", "Close Combat", "Rock Slide", "Psycho Cut"], - "abilities": ["Sharpness"], - "teraTypes": ["Normal"] - } - ] - }, - "gypceros": { - "level": 93, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Dire Claw", "Court Change", "Destiny Bond", "Memento", "Trick", "Reflect", "Light Screen", "Encore", "Taunt"], - "abilities": ["Prankster"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Slack Off", "Dire Claw", "Drill Peck"], - "abilities": ["Lightning Rod", "Prankster"], - "teraTypes": ["Normal"] - } - ] - }, - "hypnocatrice": { - "level": 94, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Hypnosis", "Lumina Crash", "Slack Off", "Protect", "U-turn"], - "abilities": ["Bad Dreams"], - "teraTypes": ["Normal"] - - } - ] - }, - "jyuratodus": { - "level": 86, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Shore Up", "Ice Beam", "Earth Power", "Scald"], - "abilities": ["Storm Drain"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Cold Snap", "Shore Up", "Ice Beam", "Earth Power", "Scald"], - "abilities": ["Storm Drain"], - "teraTypes": ["Normal"] - - } - ] - }, - "kuluyaku": { - "level": 85, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Devour", "Bolt Beak", "High Jump Kick", "Egg Barrage"], - "abilities": ["Unburden"], - "teraTypes": ["Normal"] - } - ] - }, - "lalabarina": { - "level": 94, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["First Impression", "Flower Trick", "Twineedle", "U-turn"], - "abilities": ["Tinted Lens"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Victory Dance", "Flower Trick", "Leech Life", "Play Rough", "Substitute"], - "abilities": ["Tinted Lens"], - "teraTypes": ["Normal"] - } - ] - }, - "legiana": { - "level": 87, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Arctic Shriek", "Bleakwind Storm", "Aura Sphere", "U-turn"], - "abilities": ["Tempest Energy"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Hyper Voice", "Bleakwind Storm", "Aura Sphere", "U-turn"], - "abilities": ["Aerilate"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Tailwind", "Arctic Shriek", "Bleakwind Storm", "Aura Sphere"], - "abilities": ["Tempest Energy"], - "teraTypes": ["Normal"] - } - ] - }, - "lunagaron": { - "level": 87, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Knock Off", "Triple Axel", "Ice Shard", "Low Kick", "U-turn"], - "abilities": ["Tough Claws"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Swords Dance", "Triple Axel", "Knock Off", "Ice Shard"], - "abilities": ["Tough Claws"], - "teraTypes": ["Normal"] - } - ] - }, - "malfestio": { - "level": 92, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Nasty Plot", "Esper Wing", "Bleakwind Storm", "Heat Wave"], - "abilities": ["Trace"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Teleport", "Future Sight", "Roost", "Bleakwind Storm"], - "abilities": ["Trace"], - "teraTypes": ["Normal"] - } - ] - }, - "monoblos": { - "level": 86, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Headlong Rush", "Mighty Cleave", "Extreme Speed", "U-turn", "Dragon Rush", "Close Combat"], - "abilities": ["Intimidate"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Head Charge", "Head Smash", "Headlong Rush"], - "abilities": ["Rock Head"], - "teraTypes": ["Normal"] - - } - ] - }, - "najarala": { - "level": 86, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Quiver Dance", "Clangorous Soul", "Boomburst", "Torch Song", "Alluring Voice", "Substitute"], - "abilities": ["Soundproof"], - "teraTypes": ["Normal"] - - } - ] - }, - "odogaron": { - "level": 85, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Knock Off", "Spirit Break", "Close Combat", "Poison Jab"], - "abilities": ["Unburden"], - "teraTypes": ["Normal"] - } - ] - }, - "palico": { - "level": 97, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Healing Wish", "Spikes", "Tidy Up", "Knock Off", "Fake Out", "Foul Play", "Trick"], - "abilities": ["Prankster"], - "teraTypes": ["Normal"] - } - ] - }, - "paolumu": { - "level": 92, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Body Slam", "Roost", "Tidy Up", "Parting Shot", "Thunder Wave"], - "abilities": ["Fluffy", "Cotton Down"], - "teraTypes": ["Normal"] - } - ] - }, - "nightlumu": { - "level": 88, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Parting Shot", "Defog", "Roost", "Dark Pulse", "Air Slash"], - "abilities": ["Fluffy"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Tidy Up", "Amnesia", "Roost", "Power Trip"], - "abilities": ["Fluffy"], - "teraTypes": ["Normal"] - } - ] - }, - "plesioth": { - "level": 94, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Fishious Rend", "Flip Turn", "Knock Off", "Body Slam"], - "abilities": ["Long Reach"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Fishious Rend", "Bulk Up", "Recover", "Thunder Wave"], - "abilities": ["Water Veil"], - "teraTypes": ["Normal"] - } - ] - }, - "radobaan": { - "level": 89, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Spikes", "Stealth Rock", "Obstruct", "Rapid Spin", "Shadow Bone", "Stone Edge", "Headlong Rush"], - "abilities": ["Solid Rock", "Shadow Shield"], - "teraTypes": ["Normal"] - } - ] - }, - "raknakadaki": { - "level": 87, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Sticky Web", "Heal Order", "Leech Life", "Spirit Shackle", "Knock Off", "Knock Off"], - "abilities": ["Mummy"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Quiver Dance", "Bug Buzz", "Shadow Ball", "Sludge Bomb", "Heat Wave"], - "abilities": ["Mummy"], - "teraTypes": ["Normal"] - } - ] - }, - "pyrekadaki": { - "level": 87, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Sticky Web", "Will-o-Wisp", "Defog", "Bug Buzz", "Searing Shot"], - "abilities": ["Mummy"], - "teraTypes": ["Normal"] - } - ] - }, - "rompopolo": { - "level": 90, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Strength Sap", "Sludge Bomb", "Earth Power"], - "abilities": ["Airbag"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Sludge Bomb", "Recover", "Beak Blast", "Taunt", "Earth Power"], - "abilities": ["Airbag"], - "teraTypes": ["Normal"] - } - ] - }, - "seltasqueen": { - "level": 89, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Ice Beam", "Sludge Bomb", "Hydro Pump", "Moonblast", "Perfume Pulse", "Flash Cannon"], - "abilities": ["Analytic"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Ice Beam", "Sludge Bomb", "Hydro Pump", "Moonblast", "Perfume Pulse", "Flash Cannon"], - "abilities": ["Analytic"], - "teraTypes": ["Normal"] - - } - ] - }, - "shogunceanataur": { - "level": 84, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Shell Smash", "Aqua Cutter", "X-Scissor", "Psycho Cut", "Triple Axel"], - "abilities": ["Sharpness"], - "teraTypes": ["Normal"] - - } - ] - }, - "tetranodon": { - "level": 93, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["Wood Hammer", "Scald", "Salt Cure", "Circle Throw", "Knock Off"], - "abilities": ["Drizzle"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Seed Bomb", "Scald", "Salt Cure", "Protect"], - "abilities": ["Drizzle"], - "teraTypes": ["Normal"] - } - ] - }, - "tetsucabra": { - "level": 92, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Stone Edge", "Body Press", "Obstruct"], - "abilities": ["Plow"], - "teraTypes": ["Normal"] - - } - ] - }, - "tzitziyaku": { - "level": 85, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Geomancy", "Stored Power", "Moonblast", "Aura Sphere"], - "abilities": ["Dazzling"], - "teraTypes": ["Normal"] - - } - ] - }, - "uragaan": { - "level": 88, - "sets": [ - { - "role": "Fast Support", - "movepool": ["High Horsepower", "U-turn", "Stealth Rock", "Rapid Spin"], - "abilities": ["Relentless"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Bulk Up", "High Horsepower", "Combat Torque", "Magical Torque", "Noxious Torque"], - "abilities": ["Relentless"], - "teraTypes": ["Normal"] - } - ] - }, - "vaalhazak": { - "level": 90, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Nature's Madness", "Hex", "Baneful Bunker", "Recover", "Clear Smog", "Toxic Spikes"], - "abilities": ["Toxic Chain", "Perish Body"], - "teraTypes": ["Normal"] - } - ] - }, - "yiangaruga": { - "level": 89, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Knock Off", "Gunk Shot", "High Jump Kick", "Stomping Tantrum"], - "abilities": ["Moxie", "Anger Point"], - "teraTypes": ["Normal"] - } - ] - }, - "zamtrios": { - "level": 90, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Surging Strikes", "Frozen Cleave", "Snowscape", "Mighty Cleave", "Stomping Tantrum"], - "abilities": ["Ice-Armor"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Flip Turn", "Surf", "Freeze-Dry", "Super Fang"], - "abilities": ["Puff-Up"], - "teraTypes": ["Normal"] - } - ] - }, - "aknosom": { - "level": 95, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Quiver Dance", "Hurricane", "Blaze Ball", "Alluring Voice", "Revelation Dance"], - "abilities": ["Dancer"], - "teraTypes": ["Normal"] - } - ] - }, - "arzuros": { - "level": 96, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Triple Axel", "Rock Slide", "Fishious Rend", "Close Combat", "Hyper Drill", "High Horsepower"], - "abilities": ["Hustle", "Tough Claws"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Triple Axel", "Rock Slide", "Fishious Rend", "Close Combat", "Hyper Drill", "High Horsepower"], - "abilities": ["Tough Claws"], - "teraTypes": ["Normal"] - - } - ] - }, - "balahara": { - "level": 87, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Stealth Rock", "U-turn", "Rapid Spin", "Knock Off", "Glare"], - "abilities": ["Oilslick"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Triple Dive", "High Horsepower", "U-turn", "Knock Off", "Gunk Shot"], - "abilities": ["Oilslick"], - "teraTypes": ["Normal"] - - } - ] - }, - "banbaro": { - "level": 92, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Headlong Rush", "Triple Axel", "Wood Hammer", "Combat Torque", "Noxious Torque", "Rock Slide"], - "abilities": ["Rocky Payload", "Sap Sipper"], - "teraTypes": ["Normal"] - } - ] - }, - "barroth": { - "level": 96, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Yawn", "Shore Up", "Stone Edge", "Earthquake", "Body Press"], - "abilities": ["Sand Stream"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Stone Edge", "Earthquake", "Body Press", "Iron Head"], - "abilities": ["Earth Eater", "Sand Stream"], - "teraTypes": ["Normal"] - - } - ] - }, - "basarios": { - "level": 90, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Slack Off", "Stealth Rock", "Toxic", "Body Press", "Earth Power", "Power Gem"], - "abilities": ["Rough Skin"], - "teraTypes": ["Normal"] - } - ] - }, - "beotodus": { - "level": 90, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Aqua Step", "Extreme Speed", "Ice Spinner", "Play Rough", "Psycho Cut", "Flip Turn"], - "abilities": ["Hustle", "Slush Rush"], - "teraTypes": ["Normal"] - } - ] - }, - "blangonga": { - "level": 90, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Population Bomb", "Mountain Gale", "Drain Punch", "Earthquake", "Mega Punch", "Stone Edge"], - "abilities": ["Scrappy", "Moxie"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Population Bomb", "Mountain Gale", "Drain Punch", "Earthquake", "Mega Punch", "Stone Edge"], - "abilities": ["Moxie"], - "teraTypes": ["Normal"] - - } - ] - }, - "bulldrome": { - "level": 89, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Collision Course", "Head Charge", "Superpower", "Flare Blitz", "Outrage"], - "abilities": ["Hustle"], - "teraTypes": ["Normal"] - } - ] - }, - "cephadrome": { - "level": 99, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Nuzzle", "Double Kick", "Headlong Rush", "Thunder Rush", "U-turn", "Play Rough"], - "abilities": ["Sand Rush", "Infiltrator"], - "teraTypes": ["Normal"] - } - ] - }, - "chatacabra": { - "level": 97, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Boulder Punch", "Power-Up Punch", "Sweet Lick", "Thunder Punch", "Drain Punch", "Mega Punch"], - "abilities": ["Iron Fist"], - "teraTypes": ["Normal"] - } - ] - }, - "congalala": { - "level": 97, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic Spikes", "Sleep Powder", "Stun Spore", "Leech Seed", "Flamethrower", "Powderkeg", "Stink Bomb"], - "abilities": ["Harvest", "Pungency", "Lingering Aroma"], - "teraTypes": ["Normal"] - } - ] - }, - "emgalala": { - "level": 97, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic Spikes", "Spore", "Stun Spore", "Leech Seed", "Giga Drain", "Powderkeg", "Stink Bomb"], - "abilities": ["Neutralizing Gas", "Lingering Aroma"], - "teraTypes": ["Normal"] - } - ] - }, - "dodogama": { - "level": 97, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Spikes", "Tidy Up", "Blast Bite", "High Horsepower", "Rock Slide"], - "abilities": ["Cheek Pouch", "Unaware"], - "teraTypes": ["Normal"] - } - ] - }, - "gendrome": { - "level": 94, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Swords Dance", "Earthquake", "Mighty Cleave", "Iron Head", "Fake Out", "Cross Chop", "Population Bomb"], - "abilities": ["Sand Rush"], - "teraTypes": ["Normal"] - } - ] - }, - "giadrome": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Encore", "Taunt", "Cold Snap", "Light Screen", "Triple Axel", "Nuzzle"], - "abilities": ["Slush Rush"], - "teraTypes": ["Normal"] - } - ] - }, - "gigginox": { - "level": 96, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic", "Parting Shot", "Strength Sap", "Mortal Spin", "Power Whip", "Knock Off", "Poison Tail", "Spirit Break"], - "abilities": ["Liquid Ooze", "Long Reach"], - "teraTypes": ["Normal"] - } - ] - }, - "gobul": { - "level": 92, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Tail Glow", "Discharge", "Hydro Pump", "Psychic", "Shadow Ball"], - "abilities": ["Mimicry", "Color Change"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Trick Room", "Tail Glow", "Shadow Ball", "Hydro Pump"], - "abilities": ["Mimicry", "Color Change"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Cold Snap", "Haze", "Recover", "Hydro Pump", "Shadow Ball"], - "abilities": ["Mimicry", "Color Change"], - "teraTypes": ["Normal"] - - } - ] - }, - "greatbaggi": { - "level": 99, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Teleport", "Encore", "Slack Off", "Taunt", "Psychic", "Future Sight", "Ice Beam", "Energy Ball"], - "abilities": ["Comatose"], - "teraTypes": ["Normal"] - } - ] - }, - "greatgirros": { - "level": 90, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Nuzzle", "Play Rough", "Bolt Beak", "Population Bomb", "Psychic Fangs", "Chip Away"], - "abilities": ["Intimidate", "Static"], - "teraTypes": ["Normal"] - } - ] - }, - "greatjaggi": { - "level": 90, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["No Retreat", "Population Bomb", "Play Rough", "Rock Slide", "Triple Axel", "Knock Off"], - "abilities": ["Skill Link"], - "teraTypes": ["Normal"] - } - ] - }, - "greatjagras": { - "level": 90, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Parting Shot", "Taunt", "Trick", "Population Bomb", "Knock Off"], - "abilities": ["Innards Out", "Tangling Hair"], - "teraTypes": ["Normal"] - } - ] - }, - "greatmaccao": { - "level": 90, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Brave Bird", "Wood Hammer", "High Jump Kick", "Poison Tail", "Extreme Speed"], - "abilities": ["Reckless"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Brave Bird", "Wood Hammer", "High Jump Kick", "Poison Tail", "Extreme Speed", "Bulk Up"], - "abilities": ["Reckless"], - "teraTypes": ["Normal"] - - } - ] - }, - "greatwroggi": { - "level": 100, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Nasty Plot", "Hyper Voice", "Shadow Ball", "Sludge Bomb"], - "abilities": ["Merciless"], - "teraTypes": ["Normal"] - } - ] - }, - "hirabami": { - "level": 95, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Cutwing Barrage", "First Impression", "Ice Spinner", "Power Whip", "Hyper Drill"], - "abilities": ["Ice Breaker"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Cutwing Barrage", "First Impression", "Ice Spinner", "Power Whip", "Hyper Drill"], - "abilities": ["Ice Breaker"], - "teraTypes": ["Normal"] - - }, - { - "role": "Fast Support", - "movepool": ["Tailwind", "Court Change", "Rapid Spin", "Ice Spinner"], - "abilities": ["Gale Wings"], - "teraTypes": ["Normal"] - - } - ] - }, - "iodrome": { - "level": 98, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Nasty Plot", "Sludge Bomb", "Shadow Ball", "Clear Smog"], - "abilities": ["Merciless"], - "teraTypes": ["Normal"] - } - ] - }, - "kechawacha": { - "level": 90, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Haze", "Tidy Up", "Taunt", "Hurricane", "Hydro Pump", "Ice Beam"], - "abilities": ["Mold Breaker", "Foolproof"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Water Pulse", "Aura Sphere", "Dark Pulse", "Ice Beam", "Pleghm Shot"], - "abilities": ["Mega Launcher"], - "teraTypes": ["Normal"] - - } - ] - }, - "khezu": { - "level": 95, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Taunt", "Thunder Wave", "Rising Voltage", "Dragon Pulse", "Focus Blast", "Giga Drain"], - "abilities": ["Electric Surge"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Biocharge", "Focus Blast", "Rising Voltage", "Giga Drain"], - "abilities": ["Electric Surge"], - "teraTypes": ["Normal"] - - } - ] - }, - "kingshakalaka": { - "level": 92, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Victory Dance", "Pyro Ball", "Ivy Cudgel", "Ice Hammer", "Triple Arrows", "U-turn"], - "abilities": ["Stakeout"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Strength Sap", "Sedative Spine", "Healing Wish", "Encore", "Pyro Ball", "Ivy Cudgel", "Triple Arrows"], - "abilities": ["Chlorophyll", "Stakeout"], - "teraTypes": ["Normal"] - - } - ] - }, - "lagombi": { - "level": 91, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Snowball Cannon", "Collision Course", "Mega Kick", "Fake Out", "Rock Slide", "U-turn"], - "abilities": ["Fur Coat", "Slush Rush"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Bulk Up", "Snowball Cannon", "Collision Course", "Mega Kick", "Rock Slide"], - "abilities": ["Fur Coat"], - "teraTypes": ["Normal"] - - } - ] - }, - "lavasioth": { - "level": 95, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Thunder Wave", "Magma Surge", "Recover", "Blaze Kick", "Knock Off"], - "abilities": ["Flame Body"], - "teraTypes": ["Normal"] - } - ] - }, - "nerscylla": { - "level": 93, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Triple Arrows", "Gunk Shot", "Attack Order", "Triple Axel", "Destiny Bond"], - "abilities": ["Lightning Rod", "Liquid Ooze"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Sticky Web", "Parting Shot", "Toxic Spikes", "Sedative Spine", "Triple Axel", "Barb Barrage", "Harsh Sting"], - "abilities": ["Lightning Rod", "Liquid Ooze"], - "teraTypes": ["Normal"] - - } - ] - }, - "shroudscylla": { - "level": 92, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Sticky Web", "Spikes", "Will-o-Wisp", "Parting Shot", "Sedative Spine", "Knock Off", "Pursuit"], - "abilities": ["Thick Fat", "Liquid Ooze"], - "teraTypes": ["Normal"] - - } - ] - }, - "nibelsnarf": { - "level": 89, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Salt Cure", "Quicksand Breath", "Hydro Pump", "Stealth Rock", "Tailwind", "U-turn"], - "abilities": ["Water Compaction", "Sand Spit"], - "teraTypes": ["Normal"] - } - ] - }, - "palamute": { - "level": 93, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Thousand Blades", "Double Hit", "Power Whip", "Fire Fang", "Ice Fang", "Thunder Fang", "Poison Fang"], - "abilities": ["Generalist"], - "teraTypes": ["Normal"] - } - ] - }, - "pokaradon": { - "level": 95, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Belly Drum", "Ice Spinner", "Liquidation", "Earthquake", "Rock Slide", "Iron Head"], - "abilities": ["Thick Fat", "Ice Breaker"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Ice Spinner", "Liquidation", "Earthquake", "Rock Slide", "Iron Head", "Flip Turn"], - "abilities": ["Thick Fat", "Ice Breaker"], - "teraTypes": ["Normal"] - - } - ] - }, - "pukeipukei": { - "level": 94, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Toxic", "Strength Sap", "Sludge Bomb", "Hurricane"], - "abilities": ["Liquid Ooze"], - "teraTypes": ["Normal"] - } - ] - }, - "quematrice": { - "level": 96, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Belly Drum", "Stomping Tantrum", "Jump Kick", "Order Up", "Double Kick", "Raging Fury"], - "abilities": ["Gluttony", "Flame Body"], - "teraTypes": ["Normal"] - } - ] - }, - "qurupeco": { - "level": 88, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Oblivion Wing", "Torch Song", "Sparkling Aria", "Arctic Shriek"], - "abilities": ["Triage"], - "teraTypes": ["Normal"] - } - ] - }, - "royalludroth": { - "level": 94, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Glare", "Tidy Up", "Recover", "Aqua Step", "Body Slam"], - "abilities": ["Spongy", "Water Absorb"], - "teraTypes": ["Normal"] - - } - ] - }, - "purpleludroth": { - "level": 94, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic", "Tidy Up", "Recover", "Noxious Torque", "Body Slam"], - "abilities": ["Terrestrial", "Water Absorb"], - "teraTypes": ["Normal"] - - } - ] - }, - "seltas": { - "level": 97, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Cutwing Barrage", "Megahorn", "U-turn", "Swords Dance"], - "abilities": ["Swarm"], - "teraTypes": ["Normal"] - } - ] - }, - "somnacanth": { - "level": 91, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Scald", "Shadow Ball", "Glare", "Flip Turn"], - "abilities": ["Magic Guard"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Scald", "Shadow Ball", "Flip Turn", "Arctic Shriek"], - "abilities": ["Magic Guard"], - "teraTypes": ["Normal"] - } - ] - }, - "auroracanth": { - "level": 89, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Nasty Plot", "Shadow Ball", "Freeze-Dry", "Protect"], - "abilities": ["Magic Guard"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Arctic Shriek", "Hex", "Cold Snap", "Destiny Bond", "Encore"], - "abilities": ["Illusion"], - "teraTypes": ["Normal"] - } - ] - }, - "spiribird": { - "level": 85, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Revival Blessing", "Wish", "Rapid Spin", "Nature's Madness", "Sleep Powder", "Leech Seed"], - "abilities": ["Shield Dust"], - "teraTypes": ["Normal"] - } - ] - }, - "spiribirdorange": { - "level": 85, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Revival Blessing", "Wish", "Rapid Spin", "Will-o-Wisp", "Nature's Madness", "Heat Wave"], - "abilities": ["Shield Dust"], - "teraTypes": ["Normal"] - } - ] - }, - "spiribirdred": { - "level": 85, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Revival Blessing", "Wish", "Rapid Spin", "Nature's Madness", "Dracophage"], - "abilities": ["Shield Dust"], - "teraTypes": ["Normal"] - } - ] - }, - "spiribirdyellow": { - "level": 85, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Revival Blessing", "Wish", "Rapid Spin", "Revelation Dance", "Nature's Madness", "Thunder Wave"], - "abilities": ["Shield Dust"], - "teraTypes": ["Normal"] - } - ] - }, - "tobikadachi": { - "level": 98, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Thunderbolt", "Glare", "Parting Shot", "Rapid Spin", "Spikes", "Trick", "Taunt"], - "abilities": ["Prankster"], - "teraTypes": ["Normal"] - } - ] - }, - "velocidrome": { - "level": 94, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Brave Bird", "Population Bomb", "Cross Chop", "Body Slam", "Zen Headbutt"], - "abilities": ["Big Pecks"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Tailwind", "Roost", "Defog", "Brave Bird", "Population Bomb", "Cross Chop"], - "abilities": ["Big Pecks"], - "teraTypes": ["Normal"] - - } - ] - }, - "vespoidqueen": { - "level": 99, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Wish", "Heal Order", "Defog", "Hurricane", "Creepy Noise"], - "abilities": ["Static"], - "teraTypes": ["Normal"] - } - ] - }, - "volvidon": { - "level": 95, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic Spikes", "Spikes", "Stealth Rock", "Rapid Spin", "Body Press", "Protect"], - "abilities": ["Pungency", "Neutralizing Gas"], - "teraTypes": ["Normal"] - } - ] - }, - "yiankutku": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Blaze Kick", "Facade", "Play Rough", "Stomping Tantrum"], - "abilities": ["Huge Power"], - "teraTypes": ["Normal"] - } - ] - }, - "bluekutku": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Blaze Kick", "Facade", "Rock Slide", "Earthquake"], - "abilities": ["Huge Power"], - "teraTypes": ["Normal"] - } - ] - }, - "estrellian": { - "level": 83, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Fire Lash", "Butterflight", "Rapid Spin", "Cutwing Barrage"], - "abilities": ["Butterfly Star"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Quiver Dance", "Butterflare", "Searing Shot", "Scorching Sands", "Heal Order"], - "abilities": ["Butterfly Star"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Victory Dance", "Fire Lash", "Cutwing Barrage", "Jump Kick"], - "abilities": ["Butterfly Star"], - "teraTypes": ["Normal"] - } - ] - }, - "arbitrellian": { - "level": 83, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Quiver Dance", "Immolation Order", "Butterflare", "Blaze Ball", "Earth Power", "Aura Sphere"], - "abilities": ["Destruction Star"], - "teraTypes": ["Normal"] - - } - ] - }, - "doomtrellian": { - "level": 83, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Rapid Spin", "U-turn", "Graceful Sweep", "Blaze Kick", "Spikes"], - "abilities": ["Disaster Star"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Victory Dance", "Graceful Sweep", "Blaze Kick", "Jump Kick"], - "abilities": ["Disaster Star"], - "teraTypes": ["Normal"] - } - ] - }, - "jindahaad": { - "level": 82, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Freeze-Dry", "Convection Nova", "Flash Cannon", "Earth Power", "Heat Wave"], - "abilities": ["Heat Sink"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Freeze-Dry", "Earth Power", "Recover"], - "abilities": ["Heat Sink"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Chilly Reception", "Glare", "Freeze-Dry", "Recover"], - "abilities": ["Heat Sink"], - "teraTypes": ["Normal"] - } - ] - }, - "oltura": { - "level": 82, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Moonblast", "Photon Geyser", "Meteor Beam", "Thunderbolt", "Oblivion Wing"], - "abilities": ["Generalist"], - "teraTypes": ["Normal"] - - } - ] - }, - "ebogaron": { - "level": 85, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Dragon Rush", "Cruel Claw", "Close Combat", "Poison Jab"], - "abilities": ["Unburden"], - "teraTypes": ["Normal"] - } - ] - }, - "coralpukei": { - "level": 85, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Hydro Pump", "Ice Beam", "Hurricane", "Make It Rain"], - "abilities": ["Spongy"], - "teraTypes": ["Normal"] - } - ] - }, - "xuwu": { - "level": 84, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Swords Dance", "Shadow Sneak", "Storm Throw", "Knock Off"], - "abilities": ["Technician"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Support", - "movepool": ["Ceaseless Edge", "U-turn", "Rapid Spin", "Taunt", "Poltergeist"], - "abilities": ["Ambush"], - "teraTypes": ["Normal"] - } - ] - }, - "zohshia": { - "level": 84, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Dragon Rush", "Brave Bird", "Iron Tail", "Crimson Dawn"], - "abilities": ["Wylk Encasing"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Fickle Beam", "Freezing Glare", "Fiery Wrath", "Ancestral Thunder"], - "abilities": ["Wylk Encasing"], - "teraTypes": ["Normal"] - } - ] - }, - "stygiogre": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Bulk Up", "Extreme Speed", "Dragon Rush", "Mega Kick", "Fire Fang", "Drain Punch"], - "abilities": ["Insect Armor"], - "teraTypes": ["Normal"] - } - ] - }, - "terrataur": { - "level": 84, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Shell Smash", "Mighty Cleave", "Crabhammer", "Fire Lash"], - "abilities": ["Dulled Blades"], - "teraTypes": ["Normal"] - }, - { - "role": "AV Pivot", - "movepool": ["Stone Axe", "Razor Shell", "Rapid Spin", "U-turn"], - "abilities": ["Dulled Blades"], - "teraTypes": ["Normal"] - } - ] - }, - "akuravashimu": { - "level": 87, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Selenite Beam", "Morning Sun", "Stealth Rock", "Spikes", "Thunder Wave"], - "abilities": ["Crystalblight"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Tail Glow", "Selenite Beam", "Earth Power", "Signal Beam", "Power Gem"], - "abilities": ["Crystalblight", "Rocky Payload"], - "teraTypes": ["Normal"] - } - ] - }, - "olturalarval": { - "level": 80, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Rage Ray", "Rest", "Refresh", "Infestation"], - "abilities": ["Generalist"], - "teraTypes": ["Normal"] - - }, - { - "role": "Bulky Setup", - "movepool": ["Psyshield Bash", "Fell Stinger", "Rest", "Refresh"], - "abilities": ["Generalist"], - "teraTypes": ["Normal"] - - } - ] - }, - "azurelos": { - "level": 86, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Cutwing Barrage", "Poison Tail", "Flare Blitz"], - "abilities": ["Strafe"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Aeroblast", "Sludge Wave", "Fire Blast", "Roost", "Blaze Ball"], - "abilities": ["Strafe", "Gale Wings"], - "teraTypes": ["Normal"] - } - ] - }, - "duremudira": { - "level": 84, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Virulent Volley", "Icicle Spear", "Sky Uppercut", "Ice Shard", "Extreme Speed"], - "abilities": ["Corrupted Poison"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["No Retreat", "Virulent Volley", "Icicle Crash", "Sky Uppercut"], - "abilities": ["Corrupted Poison"], - "teraTypes": ["Normal"] - } - ] - }, - "ajarakan": { - "level": 86, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Flare Blitz", "Roughhouse", "Stone Edge", "Stealth Rock", "Mach Punch", "Magma Surge"], - "abilities": ["Reactive Touch", "Fervent Scales"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Flare Blitz", "Close Combat", "Bulk Up", "Stone Edge", "Stomping Tantrum"], - "abilities": ["Weak Armor", "Fervent Scales"], - "teraTypes": ["Normal"] - } - ] - }, - "shahmadur": { - "level": 85, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Draco Meteor", "Thousand Arrows", "Mountain Gale", "Magna Lance"], - "abilities": ["Reactive Core"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Dragon Rush", "Thousand Arrows", "Sacred Fire"], - "abilities": ["Reactive Core"], - "teraTypes": ["Normal"] - } - ] - }, - "yamakurai": { - "level": 90, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Solar Blade", "Sunny Day", "Growth", "Rock Slide"], - "abilities": ["Chlorophyll"], - "teraTypes": ["Normal"] - } - ] - }, - "hallowedmohran": { - "level": 85, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Shore Up", "U-turn", "Earth Power", "Shadow Ball"], - "abilities": ["Sacred Jewel", "Mold Breaker"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Shore Up", "Earth Power", "Shadow Ball"], - "abilities": ["Sacred Jewel", "Mold Breaker"], - "teraTypes": ["Normal"] - } - ] - }, - "tartaronis": { - "level": 87, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["Earth Power", "U-turn", "Hurricane", "Heat Wave", "Boomburst", "Focus Blast"], - "abilities": ["Levitate"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Nasty Plot", "Earth Power", "Hurricane", "Heat Wave", "Boomburst"], - "abilities": ["Levitate"], - "teraTypes": ["Normal"] - } - ] - }, - "inferonis": { - "level": 85, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Scorching Sands", "U-turn", "Stealth Rock", "Magma Storm"], - "abilities": ["Levitate"], - "teraTypes": ["Normal"] - }, - { - "role": "Wallbreaker", - "movepool": ["Nasty Plot", "Earth Power", "Boomburst", "Heat Wave"], - "abilities": ["Levitate"], - "teraTypes": ["Normal"] - } - ] - }, - "balenox": { - "level": 95, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Biocharge", "Parabolic Charge", "Dark Pulse", "Substitute"], - "abilities": ["Volt Absorb"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Parting Shot", "Recover", "Discharge", "Taunt", "Dark Pulse"], - "abilities": ["Volt Absorb"], - "teraTypes": ["Normal"] - } - ] - }, - "glanaktor": { - "level": 86, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Triple Axel", "Low Kick", "Knock Off", "Hydro Pump", "Spirit Break"], - "abilities": ["Water Bubble"], - "teraTypes": ["Normal"] - } - ] - }, - "ashshanlung": { - "level": 80, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Magma Surge", "Knock Off", "Slack Off", "Stealth Rock", "Dragon Tail"], - "abilities": ["Unaware"], - "teraTypes": ["Normal"] - } - ] - }, - - "blackvios": { - "level": 88, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Armor Cannon", "Meteor Beam", "Rock Polish", "Sunny Day"], - "abilities": ["Solar Core"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Magma Storm", "Stealth Rock", "Mortal Spin", "Slack Off"], - "abilities": ["Armor Tail"], - "teraTypes": ["Normal"] - } - ] - }, - "crysarios": { - "level": 88, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Mental Load", "Mortal Spin", "Slack Off", "Amnesia", "Roar"], - "abilities": ["Misty Surge", "Rough Skin"], - "teraTypes": ["Normal"] - } - ] - }, - "greensioth": { - "level": 90, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Snipe Shot", "Frost Breath", "Grass Knot", "Flip Turn"], - "abilities": ["Sniper"], - "teraTypes": ["Normal"] - } - ] - }, - "redzu": { - "level": 92, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Biocharge", "Parabolic Charge", "Flamethrower", "Dragon Pulse"], - "abilities": ["Transistor"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Electric Terrain", "Rising Voltage", "Flamethrower", "Dragon Pulse", "Volt Switch"], - "abilities": ["Surge Surfer"], - "teraTypes": ["Normal"] - } - ] - }, - "palepinas": { - "level": 84, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Hellflare", "Pyrotoxic Gale", "Protect", "Slack Off", "U-Turn"], - "abilities": ["Toxic Debris"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Blaze Ball", "Pyrotoxic Gale", "Stomping Tantrum", "U-Turn"], - "abilities": ["Blind Rage", "Toxic Debris"], - "teraTypes": ["Normal"] - } - ] - }, - "basariossandstone": { - "level": 86, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Diamond Storm", "Body Press", "Precipice Blades", "Shore Up"], - "abilities": ["Earth Eater"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Support", - "movepool": ["Earthquake", "Stealth Rock", "Rapid Spin", "Shore Up", "Toxic"], - "abilities": ["Earth Eater"], - "teraTypes": ["Normal"] - } - ] - }, - "zinogrehowling": { - "level": 85, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Charge", "Double Shock", "Roughhouse", "Ice Fang"], - "abilities": ["Howling Thunder"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Volt Switch", "Electro Drift", "Energy Ball", "Focus Blast", "Power Gem"], - "abilities": ["Howling Thunder"], - "teraTypes": ["Normal"] - } - ] - }, - "odibatorasu": { - "level": 84, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Dreadrock Cannon", "Stealth Rock", "Shore Up", "Rapid Spin", "Aura Sphere"], - "abilities": ["Dust Devil"], - "teraTypes": ["Normal"] - } - ] - }, - "landgiacrus": { - "level": 86, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Glare", "Volt Switch", "Wretched Water", "Stealth Rock", "Quicksand Breath"], - "abilities": ["Centrifuge"], - "teraTypes": ["Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Agility", "Earth Power", "Cyclone Rend", "Discharge", "Nasty Plot", "Aqua Jet"], - "abilities": ["Competitive"], - "teraTypes": ["Normal"] - } - ] - }, - "unknown": { - "level": 87, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Fiery Wrath", "Sludge Bomb", "Hurricane", "Blaze Ball", "Hidden Power Ice"], - "abilities": ["Blind Rage", "Berserk"], - "teraTypes": ["Normal"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Cutwing Barrage", "Crunch", "Poison Tail", "Flare Blitz"], - "abilities": ["Blind Rage", "Aggravation"], - "teraTypes": ["Normal"] - } - ] - }, - "deviljhostarving": { - "level": 82, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Devil's Jaw", "Poltergeist", "Thunderous Kick"], - "abilities": ["Starving Bite"], - "teraTypes": ["Normal"] - } - ] - }, - "whiteblos": { - "level": 80, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Head Charge", "Headlong Rush", "Extreme Speed", "U-Turn"], - "abilities": ["Rock Head"], - "teraTypes": ["Normal"] - }, - { - "role": "Fast Attacker", - "movepool": ["Head Charge", "Headlong Rush", "Head Smash", "U-Turn"], - "abilities": ["Rock Head"], - "teraTypes": ["Normal"] - } - ] - } -} \ No newline at end of file diff --git a/data/random-battles/scootopiav2/random-sets.json b/data/random-battles/scootopiav2/random-sets.json new file mode 100644 index 0000000000..1812a60a0b --- /dev/null +++ b/data/random-battles/scootopiav2/random-sets.json @@ -0,0 +1,856 @@ +{ + "albatrygon": { + "level": 100, + "sets": [ + { + "role": "Fast Support", + "movepool": ["Sticky Web", "Taunt", "Encore", "Brave Bird", "Memento", "Parting Shot"], + "abilities": ["Prankster"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Tidy Up", "Brave Bird", "Drill Peck", "Feral Rush", "Feral Bite", "Sacred Sword"], + "abilities": ["Prankster"] + } + ] + }, + "aurorowl": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Frost Breath", "Air Cutter", "Focus Blast", "Nasty Plot"], + "abilities": ["Technician"] + } + ] + }, + "arbrella": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Earthquake", "Wood Hammer", "Swords Dance", "Synthesis", "Stone Edge", "Superpower"], + "abilities": ["Tough Claws"] + }, + { + "role": "Choice Scarf", + "movepool": ["Earthquake", "Wood Hammer", "Stone Edge", "Superpower"], + "abilities": ["Tough Claws"] + } + ] + }, + "avastar": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Thunder Wave", "Heavy Slam", "Psychic", "Recover", "Teleport"], + "abilities": ["Shell Bunker"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Calm Mind", "Psychic", "Flash Cannon", "Recover", "Thunderbolt"], + "abilities": ["Shell Bunker"] + } + ] + }, + "axolacred": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Stealth Rock", "Dragon Tail", "Roost", "Core Enforcer", "Scald", "Defog", "Shed Tail"], + "abilities": ["Magic Guard"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Feral Rush", "Core Enforcer", "Flip Turn", "Recover"], + "abilities": ["Magic Guard"] + } + ] + }, + "barracoth": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Sheer Cold", "Flip Turn", "Triple Axel", "Slack Off"], + "abilities": ["Multiscale", "Filter"] + } + ] + }, + "blunderbusk": { + "level": 100, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Hydro Pump", "Aura Sphere", "Ice Beam", "Dark Pulse", "Dragon Pulse"], + "abilities": ["Mega Launcher"] + } + ] + }, + "brawnkey": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Stealth Rock", "Drain Punch", "Iron Head", "Chilly Reception", "Spikes"], + "abilities": ["Levitate"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Iron Defense", "Body Press", "Iron Head", "Stealth Rock"], + "abilities": ["Levitate"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bulk Up", "Drain Punch", "Iron Head", "Stealth Rock"], + "abilities": ["Levitate"] + } + ] + }, + "carapex": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Tailwind", "Acrobatics", "Earthquake", "Stone Edge"], + "abilities": ["Wind Rider"] + }, + { + "role": "Bulky Support", + "movepool": ["Stealth Rock", "Roost", "Body Press", "Knock Off", "Crystal Bash", "U-Turn"], + "abilities": ["Wind Rider"] + } + ] + }, + "celespirit": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Sheer Cold", "Moonlight", "Hex", "Ice Beam", "Moonblast"], + "abilities": ["Levitate"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Calm Mind", "Crystal Burst", "Shadow Ball", "Moonlight"], + "abilities": ["Levitate"] + } + ] + }, + "cellsius": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Calm Mind", "Hydro Pump", "Moonblast", "Ice Beam", "Psychic"], + "abilities": ["Beast Boost"] + }, + { + "role": "Fast Attacker", + "movepool": ["Hydro Pump", "Moonblast", "Ice Beam", "Flip Turn", "Psychic"], + "abilities": ["Beast Boost"] + } + ] + }, + "cindoe": { + "level": 100, + "sets": [ + { + "role": "Fast Support", + "movepool": ["Overheat", "Fiery Wrath", "Parting Shot", "Morning Sun"], + "abilities": ["Natural Cure"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Nasty Plot", "Fiery Wrath", "Fire Blast", "Morning Sun"], + "abilities": ["Natural Cure"] + }, + { + "role": "Setup Sweeper", + + "movepool": ["Nasty Plot", "Fiery Wrath", "Crystal Burst", "Morning Sun"], + "abilities": ["Natural Cure"] + } + ] + }, + "cinnastar": { + "level": 100, + "sets": [ + { + "role": "AV Pivot", + "movepool": ["Sludge Bomb", "Earth Power", "Focus Blast", "Mortal Spin"], + "abilities": ["Regenerator"] + }, + { + "role": "Bulky Support", + "movepool": ["Earth Power", "Mortal Spin", "Recover", "Stealth Rock", "Power Gem"], + "abilities": ["Regenerator"] + } + ] + }, + "cobracotta": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Poison Fang", "Leech Seed", "Knock Off", "Synthesis", "Stealth Rock", "Power Whip"], + "abilities": ["Heatproof"] + } + ] + }, + "corundell": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Meteor Beam", "Power Gem", "Overheat", "Earth Power", "Volt Switch", "Energy Ball"], + "abilities": ["Lightning Rod"] + } + ] + }, + "crossont": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Spikes", "Recover", "Knock Off", "Circle Throw"], + "abilities": ["Mold Breaker", "Sniper"] + }, + { + "role": "Bulky Attacker", + + "movepool": ["Crystal Cutter", "Close Combat", "Bulk Up", "Substitute"], + "abilities": ["Sniper"] + } + ] + }, + "cyllindrake": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Body Press", "Rapid Spin", "Morning Sun", "Stealth Rock", "Boomburst"], + "abilities": ["Scrappy"] + }, + { + "role": "Fast Support", + "movepool": ["Stealth Rock", "Rapid Spin", "Steel Beam", "Fire Blast"], + "abilities": ["Scrappy"] + }, + { + "role": "Fast Attacker", + + "movepool": ["Feral Shriek", "Flash Cannon", "Earth Power", "Feral Spray", "Rapid Spin"], + "abilities": ["Punk Rock"] + } + ] + }, + "dojodo": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Bulk Up", "Drain Punch", "Jet Punch", "Knock Off", "Substitute"], + "abilities": ["Supreme Overlord"] + }, + { + "role": "Setup Sweeper", + + "movepool": ["Bulk Up", "Drain Punch", "Crystal Bash", "Jet Punch", "Crystal Healing"], + "abilities": ["Supreme Overlord"] + } + ] + }, + "dolphena": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Coil", "Scale Shot", "Iron Tail", "Liquidation"], + "abilities": ["Mythical Presence"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "Scale Shot", "Liquidation", "Iron Head", "Substitute"], + "abilities": ["Mythical Presence"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Coil", "Scale Shot", "Iron Tail", "Liquidation"], + + "abilities": ["Mythical Presence"] + }, + { + "role": "Bulky Support", + "movepool": ["Defog", "Flip Turn", "Moonlight", "Dragon Tail"], + "abilities": ["Mythical Presence"] + } + ] + }, + "dracoil": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Defog", "Roost", "U-Turn", "Hurricane", "Fire Blast", "Glare", "Draco Meteor", "Earthquake"], + "abilities": ["Mythical Presence"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "Acrobatics", "Substitute", "Earthquake"], + "abilities": ["Gluttony"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "Dragon Rush", "Coil", "Earthquake", "Dual Wingbeat"], + "abilities": ["Mythical Presence"] + }, + { + "role": "Bulky Support", + "movepool": ["Feral Bite", "Dragon Tail", "Roost", "Glare", "Defog"], + "abilities": ["Mythical Presence"] + } + ] + }, + "efflor": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Giga Drain", "Leech Seed", "Rapid Spin", "Stealth Rock", "Chilly Reception"], + "abilities": ["Seed Sower"] + }, + { + "role": "Bulky Setup", + "movepool": ["Curse", "Stone Edge", "Body Press", "Synthesis"], + "abilities": ["Unaware"] + } + ] + }, + "electangle": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Gyro Ball", "Stealth Rock", "Body Press", "Volt Switch", "Discharge"], + "abilities": ["Filter"] + } + ] + }, + "elemadillo": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Flash Cannon", "Thunderbolt", "Volt Switch", "Energy Ball"], + "abilities": ["Motor Drive", "Weak Armor"] + }, + { + "role": "Fast Attacker", + + "movepool": ["Feral Power", "Flash Cannon", "Earth Power", "Feral Resilience"], + "abilities": ["Motor Drive", "Weak Armor"] + } + ] + }, + "embuck": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Blaze Kick", "Will-o-Wisp", "Morning Sun", "U-Turn", "Close Combat"], + "abilities": ["Intimidate"] + }, + { + "role": "Bulky Support", + + "movepool": ["Blaze Kick", "Crystal Bash", "Will-o-Wisp", "Morning Sun", "U-Turn"], + "abilities": ["Intimidate"] + }, + { + "role": "Fast Attacker", + "movepool": ["Flare Blitz", "Wild Charge", "U-Turn", "Close Combat"], + "abilities": ["Intimidate"] + } + ] + }, + "faerenheit": { + "level": 100, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Lava Plume", "Moonblast", "Morning Sun"], + "abilities": ["Beast Boost"] + }, + { + "role": "Bulky Setup", + + "movepool": ["Calm Mind", "Lava Plume", "Crystal Cage", "Morning Sun"], + "abilities": ["Beast Boost"] + } + ] + }, + "fenreil": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Double Edge", "Knock Off", "Superpower", "U-Turn"], + "abilities": ["Natural Cure"] + }, + { + "role": "Fast Attacker", + + "movepool": ["Feral Bite", "Knock Off", "Iron Head", "Feral Shred"], + "abilities": ["Natural Cure"] + } + ] + }, + "flocura": { + "level": 100, + "sets": [ + { + "role": "Fast Support", + "movepool": ["Stealth Rock", "Thunder Wave", "U-Turn", "Leaf Storm"], + "abilities": ["Power Construct"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Nasty Plot", "Giga Drain", "Psychic", "Earth Power"], + "abilities": ["Levitate"] + }, + { + "role": "Setup Sweeper", + + "movepool": ["Nasty Plot", "Giga Drain", "Feral Power", "Earth Power"], + "abilities": ["Levitate"] + }, + { + "role": "Fast Attacker", + "movepool": ["Leaf Storm", "U-Turn", "Psychic", "Earth Power"], + "abilities": ["Levitate"] + }, + { + "role": "Bulky Support", + "movepool": ["Leech Seed", "U-Turn", "Thunder Wave", "Psychic", "Giga Drain", "Stealth Rock"], + "abilities": ["Power Construct"] + } + ] + }, + "harzodia": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Light Screen", "Reflect", "Teleport", "Thunder Wave", "Psychic"], + "abilities": ["Prankster"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Meteor Beam", "Psychic", "Shadow Ball", "Calm Mind", "Focus Blast"], + "abilities": ["Unburden"] + } + ] + }, + "jaegorm": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["First Impression", "U-Turn", "Photon Ray", "Knock Off", "Superpower", "Earthquake"], + "abilities": ["Schooling"] + } + ] + }, + "jamborai": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Mortal Spin", "Recover", "Pyschic", "Scald", "Teleport"], + "abilities": ["Water Absorb"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Recover", "Pyschic", "Scald", "Sludge Bomb", "Stored Power"], + "abilities": ["Water Absorb"] + }, + { + "role": "Bulky Support", + + "movepool": ["Mortal Spin", "Recover", "Crystal Cage", "Crystal Healing", "Teleport"], + "abilities": ["Gooey"] + }, + { + "role": "Bulky Setup", + + "movepool": ["Crystal Fortification", "Recover", "Stored Power", "Crystal Beam"], + "abilities": ["Gooey"] + } + ] + }, + "kodokai": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + + "movepool": ["Crystal Cage", "Hex", "Will-o-Wisp", "Moonlight"], + "abilities": ["Aroma Veil"] + }, + { + "role": "Bulky Support", + "movepool": ["Wish", "Hex", "Will-o-Wisp", "Moonlight"], + "abilities": ["Aroma Veil"] + } + ] + }, + "krachiten": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["First Impression", "U-Turn", "Liquidation", "Rapid Spin"], + "abilities": ["Torrent"] + }, + { + "role": "Fast Attacker", + + "movepool": ["Crystal Cutter", "U-Turn", "Aqua Cutter", "Superpower", "Rapid Spin"], + "abilities": ["Sniper"] + } + ] + }, + "lumoth": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Quiver Dance", "Hex", "Sleep Powder", "Bug Buzz"], + "abilities": ["Levitate"] + } + ] + }, + "minillow": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Nasty Plot", "Agility", "Hydro Pump", "Moonblast", "Substitute"], + "abilities": ["Adaptability"] + } + ] + }, + "muabboa": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Earthquake", "U-Turn", "Close Combat", "Knock Off"], + "abilities": ["Inner Focus"] + }, + { + "role": "Setup Sweeper", + + "movepool": ["Swords Dance", "Earthquake", "Feral Rush", "Close Combat"], + "abilities": ["Inner Focus"] + } + ] + }, + "noxtrice": { + "level": 100, + "sets": [ + { + "role": "Fast Support", + "movepool": ["Poison Jab", "Flare Blitz", "Roost", "U-Turn"], + "abilities": ["Poison Touch"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Gunk Shot", "Flare Blitz", "Earthquake", "Dragon Dance"], + "abilities": ["Poison Touch"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Gunk Shot", "Feral Rush", "Earthquake", "Dragon Dance"], + "abilities": ["Flash Fire"] + } + ] + }, + "nunopod": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Earthquake", "Body Press", "Triple Axel", "Flip Turn", "Stealth Rock", "Rapid Spin", "Recover"], + "abilities": ["Opportunist"] + }, + { + "role": "Bulky Support", + + "movepool": ["Crystal Bash", "Body Press", "Earthquake", "Flip Turn", "Stealth Rock", "Rapid Spin", "Recover"], + "abilities": ["Opportunist"] + } + ] + }, + "orchile": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Moonblast", "Earth Power", "Will-o-Wisp", "Strength Sap", "Spikes"], + "abilities": ["Flower Veil"] + }, + { + "role": "Bulky Setup", + "movepool": ["Moonblast", "Earth Power", "Calm Mind", "Strength Sap"], + "abilities": ["Flower Veil"] + } + ] + }, + "platypad": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Revival Blessing", "Wave Crash", "Flip Turn", "Synthesis"], + "abilities": ["Flower Veil"] + }, + { + "role": "Bulky Setup", + + "movepool": ["Feral Resilience", "Feral Breath", "Giga Drain", "Synthesis"], + "abilities": ["Triage"] + } + ] + }, + "pythos": { + "level": 100, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Coil", "Knock Off", "Iron Tail", "Sucker Punch", "Superpower", "Facade"], + "abilities": ["Guts"] + } + ] + }, + "quadringo": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Defog", "Roost", "Dragon Tail", "Earthquake", "Moonblast"], + "abilities": ["Pastel Veil"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Moonblast", "Mystical Fire", "Roost"], + "abilities": ["Pastel Veil"] + }, + { + "role": "Fast Attacker", + "movepool": ["Moonblast", "Draco Meteor", "Mystical Fire", "Earthquake"], + "abilities": ["Pastel Veil"] + }, + { + "role": "Fast Attacker", + + "movepool": ["Feral Rush", "Earthquake", "Feral Shred", "Roost"], + "abilities": ["Pastel Veil"] + } + ] + }, + "rantler": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Double Edge", "Ice Spinner", "Superpower", "Earthquake"], + "abilities": ["Slush Rush"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Swords Dance", "Double Edge", "Ice Spinner", "Superpower", "Earthquake", "Quick Attack"], + "abilities": ["Slush Rush"] + }, + { + "role": "Fast Attacker", + "movepool": ["Double Edge", "Ice Spinner", "Superpower", "Quick Attack", "Fake Out"], + "abilities": ["Tough Claws"] + } + ] + }, + "roscenti": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["First Impression", "U-Turn", "Superpower", "Rock Blast", "Bullet Seed"], + "abilities": ["Skill Link"] + }, + { + "role": "Fast Attacker", + + "movepool": ["First Impression", "U-Turn", "Feral Rush", "Drill Run", "Iron Tail"], + "abilities": ["Sheer Force"] + }, + { + "role": "Fast Attacker", + + "movepool": ["First Impression", "U-Turn", "Crystal Tail", "Superpower", "Rock Slide"], + "abilities": ["Sheer Force"] + } + ] + }, + "salamalix": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Stealth Rock", "Spikes", "Stone Edge", "Close Combat", "Iron Head"], + "abilities": ["Intimidate"] + }, + { + "role": "Bulky Setup", + "movepool": ["Swords Dance", "Iron Head", "Close Combat", "Accelerock"], + "abilities": ["Intimidate"] + } + ] + }, + "salaos": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Toxic", "Recover", "Fiery Wrath", "Scald", "Flamethrower", "Toxic Spikes"], + "abilities": ["Good as Gold"] + }, + { + "role": "Bulky Support", + + "movepool": ["Toxic", "Recover", "Crystal Cage", "Flamethrower", "Toxic Spikes"], + "abilities": ["Good as Gold"] + } + ] + }, + "saphor": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Stealth Rock", "Earthquake", "Body Slam", "Slack Off", "Roar", "Heal Bell"], + "abilities": ["Thick Fat"] + }, + { + "role": "Bulky Support", + + "movepool": ["Stealth Rock", "Crystal Tail", "Crystal Shard", "Slack Off", "Roar", "Crystal Healing"], + "abilities": ["Thick Fat"] + }, + { + "role": "Bulky Setup", + + "movepool": ["Bulk Up", "Crystal Cutter", "Slack Off", "Body Press"], + "abilities": ["Thick Fat"] + }, + { + "role": "Bulky Setup", + + "movepool": ["Calm Mind", "Crystal Cage", "Slack Off", "Focus Blast"], + "abilities": ["Thick Fat"] + }, + { + "role": "Fast Attacker", + "movepool": ["Headlong Rush", "Double Edge", "Heavy Slam", "Superpower", "Stone Edge"], + "abilities": ["Thick Fat"] + } + ] + }, + "scalaron": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Flamethrower", "Hurricane", "Roost", "U-Turn", "Defog", "Toxic", "Will-o-Wisp"], + "abilities": ["Filter"] + }, + { + "role": "Bulky Support", + + "movepool": ["Flamethrower", "Crystal Cage", "Roost", "U-Turn", "Defog", "Will-o-Wisp", "Crystal Shard"], + "abilities": ["Filter"] + } + ] + }, + "soleron": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Thunderbolt", "Hurricane", "Heat Wave", "U-Turn", "Air Slash", "Volt Switch", "Roost"], + "abilities": ["Battle Bond"] + }, + { + "role": "Fast Attacker", + "movepool": ["Thunderbolt", "Feral Power", "Feral Spray", "Volt Switch", "Roost"], + + "abilities": ["Battle Bond"] + }, + { + "role": "Fast Attacker", + "movepool": ["Thunderbolt", "Crystal Burst", "Heat Wave", "Volt Switch", "Hurricane"], + + "abilities": ["Battle Bond"] + } + ] + }, + "torgeist": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Toxic Thread", "Hex", "Hurricane", "Heat Wave", "Pain Split", "Taunt"], + "abilities": ["Merciless"] + }, + { + "role": "Fast Attacker", + + "movepool": ["Toxic Thread", "Hex", "Feral Power", "Pain Split", "Taunt", "Nasty Plot"], + "abilities": ["Merciless"] + }, + { + "role": "Setup Sweeper", + + "movepool": ["Will-o-Wisp", "Hex", "Feral Power", "Nasty Plot"], + "abilities": ["Cursed Body"] + } + ] + }, + "woolora": { + "level": 100, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Cotton Guard", "Stored Power", "Draining Kiss"], + "abilities": ["Fluffy", "Pastel Veil"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Moonlight", "Stored Power", "Moonblast"], + "abilities": ["Fluffy"] + } + ] + }, + "zeploom": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Energy Siphon", "Synthesis", "Stealth Rock", "U-Turn", "Defog", "Toxic", "Earth Power"], + "abilities": ["Wind Rider"] + } + ] + } +} diff --git a/data/random-battles/monsterhunter/teams.ts b/data/random-battles/scootopiav2/teams.ts similarity index 96% rename from data/random-battles/monsterhunter/teams.ts rename to data/random-battles/scootopiav2/teams.ts index ed6c27548e..c03dcede03 100644 --- a/data/random-battles/monsterhunter/teams.ts +++ b/data/random-battles/scootopiav2/teams.ts @@ -22,13 +22,14 @@ const SETUP = [ 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'dragondance', 'filletaway', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', 'quiverdance', 'rockpolish', 'shellsmash', 'shiftgear', 'swordsdance', 'tailglow', 'takeheart', 'tidyup', 'trailblaze', 'trickroom', 'workup', 'victorydance', + 'feralresilience', 'feralspray', 'crystalfortification', ]; const SPEED_CONTROL = [ 'electroweb', 'glare', 'icywind', 'lowsweep', 'quash', 'stringshot', 'tailwind', 'thunderwave', 'trickroom', ]; // Hazard-setting moves const HAZARDS = [ - 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', + 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', 'crystalshard', ]; // Protect and its variants const PROTECT_MOVES = [ @@ -68,7 +69,7 @@ const NO_LEAD_POKEMON = [ const DOUBLES_NO_LEAD_POKEMON = [ 'Basculegion', 'Houndstone', 'Iron Bundle', 'Roaring Moon', 'Zacian', 'Zamazenta', ]; -export class RandomMHSTeams extends RandomTeams { +export class RandomSCTeams extends RandomTeams { override cullMovePool( types: string[], moves: Set, @@ -264,6 +265,7 @@ export class RandomMHSTeams extends RandomTeams { role: RandomTeamsTypes.Role, ): Set { const moves = new Set(); + if (this.getSuperType(moves)) types[1] = this.getSuperType(moves); let counter = this.queryMoves(moves, species, teraType, abilities); this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role); @@ -605,6 +607,7 @@ export class RandomMHSTeams extends RandomTeams { teraType: string, role: RandomTeamsTypes.Role, ) { + if (this.getSuperType(moves)) return this.getSuperType(moves) + " Orb"; if (!isDoubles) { if (role === 'Fast Bulky Setup' && (ability === 'Quark Drive' || ability === 'Protosynthesis')) { return 'Booster Energy'; @@ -621,7 +624,9 @@ export class RandomMHSTeams extends RandomTeams { return this.sample(species.requiredItems); } if (role === 'AV Pivot') return 'Assault Vest'; - // MHS hardcodes + // Super Type hardcodes + if (species.id === 'cyllindrake' && moves.has('shiftgear')) return 'Throat Spray'; + if (species.id === 'albatrygon' && moves.has('acrobatics')) return 'Sitrus Berry'; if (species.id === 'yiankutku' && moves.has('facade') || species.id === 'bluekutku' && moves.has('facade')) { return 'Frost Orb'; } @@ -684,6 +689,14 @@ export class RandomMHSTeams extends RandomTeams { } } + getSuperType(moves: Set | string[]): string { + for (const move of moves) { + if (move.includes('crystal')) return "Crystal"; + if (move.includes('feral')) return "Feral"; + } + return ""; + } + override randomSet( s: string | Species, teamDetails: RandomTeamsTypes.TeamDetails = {}, @@ -695,7 +708,7 @@ export class RandomMHSTeams extends RandomTeams { const sets = this.randomSets[species.id]["sets"]; const possibleSets: RandomTeamsTypes.RandomSetData[] = []; - const ruleTable = this.dex.formats.getRuleTable(this.format); + // const ruleTable = this.dex.formats.getRuleTable(this.format); for (const set of sets) { // Prevent Fast Bulky Setup on lead Paradox Pokemon, since it generates Booster Energy. @@ -705,7 +718,8 @@ export class RandomMHSTeams extends RandomTeams { set.role === 'Fast Bulky Setup' ) continue; // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented. - if ((teamDetails.teraBlast || ruleTable.has('terastalclause')) && set.role === 'Tera Blast user') { + // used here to limit team to 1 Super Types user + if (teamDetails.teraBlast && set.role === 'Tera Blast user') { continue; } possibleSets.push(set); @@ -725,13 +739,17 @@ export class RandomMHSTeams extends RandomTeams { const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 }; const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 }; - const types = species.types; + const types = []; + types[0] = species.types[0]; + if (species.types[1]) types[1] = species.types[1]; const abilities = set.abilities!; // Get moves const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role); const counter = this.queryMoves(moves, species, teraType, abilities); + if (this.getSuperType(moves)) types[1] = this.getSuperType(moves); + // Get ability ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role); @@ -817,7 +835,7 @@ export class RandomMHSTeams extends RandomTeams { override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./random-sets.json'); - randomMHSTeam() { + randomSCTeam() { this.enforceNoDirectCustomBanlistChanges(); const seed = this.prng.getSeed(); @@ -836,6 +854,7 @@ export class RandomMHSTeams extends RandomTeams { const baseFormes: { [k: string]: number } = {}; + // const superTypeCount = 0; const typeCount: { [k: string]: number } = {}; const typeComboCount: { [k: string]: number } = {}; const typeWeaknesses: { [k: string]: number } = {}; @@ -888,14 +907,17 @@ export class RandomMHSTeams extends RandomTeams { ) { if (pokemon.length + leadsRemaining === this.maxTeamSize) continue; set = this.randomSet(species, teamDetails, false, isDoubles); + if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue; pokemon.push(set); } else { set = this.randomSet(species, teamDetails, true, isDoubles); + if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue; pokemon.unshift(set); leadsRemaining--; } } else { set = this.randomSet(species, teamDetails, false, isDoubles); + if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue; pokemon.push(set); } @@ -919,6 +941,11 @@ export class RandomMHSTeams extends RandomTeams { typeComboCount[typeCombo] = 1; } + // Increment item counter + if (set.item === "Crystal Orb" || set.item === "Feral Orb") { + teamDetails.teraBlast = 1; + } + // Increment weakness counter for (const typeName of this.dex.types.names()) { // it's weak to the type @@ -971,4 +998,4 @@ export class RandomMHSTeams extends RandomTeams { } } -export default RandomMHSTeams; +export default RandomSCTeams; From cb910c69738e5a3f6ad7ce44a5da523551b2f255 Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Fri, 2 Jan 2026 11:40:01 -0500 Subject: [PATCH 032/139] Bio Mech Mons: Fix bugs (#11668) * Bio Mech Mons Unban Ability Shield * Fix bug with air balloon --- config/formats.ts | 2 +- data/mods/biomechmons/scripts.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 0cc811a1e1..1c569c93c0 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -574,7 +574,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ return this.validateSet(set, teamHas); } const allThings = [set.ability, set.item, ...set.moves] - .map(e => e.replace(/^(item|move|ability):?/i, '')).filter(e => e.length); + .map(e => e.replace(/^(item|move|ability):?(?!\s*shield)/i, '')).filter(e => e.length); for (const thing of allThings) { if (!dex.moves.get(thing).exists && !dex.abilities.get(thing).exists && !dex.items.get(thing).exists) { return [`${thing} does not exist.`]; diff --git a/data/mods/biomechmons/scripts.ts b/data/mods/biomechmons/scripts.ts index 6d9fdd3aba..34920e4fac 100644 --- a/data/mods/biomechmons/scripts.ts +++ b/data/mods/biomechmons/scripts.ts @@ -2,6 +2,20 @@ import { RESTORATIVE_BERRIES } from "../../../sim/pokemon"; export const Scripts: ModdedBattleScriptsData = { pokemon: { + isGrounded(negateImmunity) { + if ('gravity' in this.battle.field.pseudoWeather) return true; + if ('ingrain' in this.volatiles && this.battle.gen >= 4) return true; + if ('smackdown' in this.volatiles) return true; + const item = (this.ignoringItem() ? '' : this.item); + if (item === 'ironball' || (this.volatiles['item:ironball'] && !this.ignoringItem())) return true; + // If a Fire/Flying type uses Burn Up and Roost, it becomes ???/Flying-type, but it's still grounded. + if (!negateImmunity && this.hasType('Flying') && !(this.hasType('???') && 'roost' in this.volatiles)) return false; + if (this.hasAbility('levitate') && !this.battle.suppressingAbility(this)) return null; + if ('magnetrise' in this.volatiles) return false; + if ('telekinesis' in this.volatiles) return false; + if (item === 'airballoon' || (this.volatiles['item:airballoon'] && !this.ignoringItem())) return false; + return true; + }, getAbility() { const ability = this.battle.dex.abilities.getByID(this.ability); if (ability.exists) return ability; From 6304bec9dcf436857d0fe3e8fe6fdf23b86b2982 Mon Sep 17 00:00:00 2001 From: livid washed <115855253+livid-washed@users.noreply.github.com> Date: Sat, 3 Jan 2026 03:40:25 +1100 Subject: [PATCH 033/139] Random Battles hotfix: Fix Competitive Boltund (#11669) --- data/random-battles/gen8/teams.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/random-battles/gen8/teams.ts b/data/random-battles/gen8/teams.ts index d57fdafa92..6daf9528f1 100644 --- a/data/random-battles/gen8/teams.ts +++ b/data/random-battles/gen8/teams.ts @@ -1526,7 +1526,7 @@ export class RandomGen8Teams { case 'Cloud Nine': return (!isNoDynamax || species.id !== 'golduck'); case 'Competitive': - return (moves.has('rest') && moves.has('sleeptalk')); + return (!counter.get('Special') || moves.has('rest') && moves.has('sleeptalk')); case 'Compound Eyes': case 'No Guard': return !counter.get('inaccurate'); case 'Cursed Body': From cf82bac342df347bdeb614e613482c522790fb94 Mon Sep 17 00:00:00 2001 From: Runo <105902454+Runoisch@users.noreply.github.com> Date: Fri, 2 Jan 2026 11:42:40 -0500 Subject: [PATCH 034/139] NatDex: Fix Salamence and Gardevoir-Mega's Tiers (#11671) Should be marked RUBL but seems to be a typo --- data/formats-data.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/formats-data.ts b/data/formats-data.ts index eb60c77824..a7e8263fff 100644 --- a/data/formats-data.ts +++ b/data/formats-data.ts @@ -1877,7 +1877,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = gardevoirmega: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "RU", + natDexTier: "RUBL", }, gallade: { tier: "RU", @@ -2390,7 +2390,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = salamence: { tier: "RUBL", doublesTier: "(DUU)", - natDexTier: "RU", + natDexTier: "RUBL", }, salamencemega: { isNonstandard: "Past", From c735c99724c27bc79cdaa92c472647ed4463bb9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Fri, 2 Jan 2026 16:43:26 +0000 Subject: [PATCH 035/139] =?UTF-8?q?Legends=20Z-A:=20Add=20obtainable=20Pok?= =?UTF-8?q?=C3=A9mon=20(#11672)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Legends Z-A: Add obtainable Pokémon I don't feel like updating each Mega as the seasons go by. * Fix data test --- data/mods/gen9legends/formats-data.ts | 15 ++++++++------- test/sim/data.js | 8 ++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/data/mods/gen9legends/formats-data.ts b/data/mods/gen9legends/formats-data.ts index e49bb4adb9..5c77034c80 100644 --- a/data/mods/gen9legends/formats-data.ts +++ b/data/mods/gen9legends/formats-data.ts @@ -879,7 +879,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: null, }, sceptilemega: { - isNonstandard: "Unobtainable", + isNonstandard: null, }, torchic: { isNonstandard: null, @@ -891,7 +891,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: null, }, blazikenmega: { - isNonstandard: "Unobtainable", + isNonstandard: null, }, mudkip: { isNonstandard: null, @@ -903,7 +903,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: null, }, swampertmega: { - isNonstandard: "Unobtainable", + isNonstandard: null, }, poochyena: { isNonstandard: "Past", @@ -2260,13 +2260,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: null, }, sliggoohisui: { - isNonstandard: "Unobtainable", + isNonstandard: null, }, goodra: { isNonstandard: null, }, goodrahisui: { - isNonstandard: "Unobtainable", + isNonstandard: null, }, klefki: { isNonstandard: null, @@ -2308,7 +2308,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: null, }, avalugghisui: { - isNonstandard: "Unobtainable", + isNonstandard: null, }, noibat: { isNonstandard: null, @@ -2569,6 +2569,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: null, }, magearnaoriginal: { + isNonstandard: "Unobtainable", }, magearnamega: { isNonstandard: null, @@ -3179,7 +3180,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: null, }, baxcaliburmega: { - isNonstandard: "Unobtainable", + isNonstandard: null, }, gimmighoul: { isNonstandard: null, diff --git a/test/sim/data.js b/test/sim/data.js index 3bed847416..dcae534243 100644 --- a/test/sim/data.js +++ b/test/sim/data.js @@ -407,11 +407,11 @@ describe('Dex data', () => { // Shaymin (1) + Therian (4) + Hisui (16) + Basculin (1) + Basculegion (1) formes['gen8legends'] = 1 + 1 + 2 + 1 + 5 + 3 + 17 + 1 + 4 + 16 + 1 + 1; species['gen9legends'] = 232 + 132; // Lumiose Pokedex + Hyperspace Pokedex - // Mega (90) + Primal (2) + Rotom (5) + Keldeo (1) + Meloetta (1) + Genesect (4) + Vivillon (2) + Floette (1) + - // Meowstic (1) + Aegislash (1) + Pumpkaboo (3) + Gourgeist (3) + Zygarde (2) + Mimikyu (1) + Magearna (1) + - // Alola (4) + Toxtricity (1) + Indeedee (1) + Morpeko (1) + Galar (8) + Hisui (1) + Squawkabilly (3) + + // Mega (96) + Primal (2) + Rotom (5) + Keldeo (1) + Meloetta (1) + Genesect (4) + Vivillon (2) + Floette (1) + + // Meowstic (1) + Aegislash (1) + Pumpkaboo (3) + Gourgeist (3) + Zygarde (2) + Mimikyu (1) + + // Alola (4) + Toxtricity (1) + Indeedee (1) + Morpeko (1) + Galar (8) + Hisui (4) + Squawkabilly (3) + // Tatsugiri (2) + Gimmighoul (1) + Hoopa (1) - formes['gen9legends'] = 92 + 2 + 5 + 1 + 1 + 4 + 2 + 1 + 1 + 1 + 3 + 3 + 2 + 1 + 1 + 4 + 1 + 1 + 1 + 8 + 1 + 3 + 2 + 1 + 1; + formes['gen9legends'] = 96 + 2 + 5 + 1 + 1 + 4 + 2 + 1 + 1 + 1 + 3 + 3 + 2 + 1 + 4 + 1 + 1 + 1 + 8 + 4 + 3 + 2 + 1 + 1; for (const mod of ['gen7letsgo', 'gen8bdsp', 'gen8legends', 'gen9legends']) { it(`${mod} should have ${species[mod]} species and ${formes[mod]} formes`, () => { From de0358b76300d733ef3a28703313fd786a2181a1 Mon Sep 17 00:00:00 2001 From: demir Date: Fri, 2 Jan 2026 19:44:11 +0300 Subject: [PATCH 036/139] 35 Pokes: Add January 26 Pokemon (#11670) --- config/formats.ts | 8 ++++---- test/sim/team-validator/misc.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 1c569c93c0..2fefb54cfa 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2892,10 +2892,10 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin', ], unbanlist: [ - 'Beedrill-Base', 'Blastoise-Base', 'Bombirdier', 'Braviary-Hisui', 'Centiskorch', 'Cherrim', 'Cyclizar', 'Delcatty', 'Drampa-Base', 'Falinks-Base', - 'Galvantula', 'Glastrier', 'Goodra-Base', 'Gothitelle', 'Hypno', 'Klinklang', 'Lurantis-Base', 'Mamoswine', 'Mandibuzz', 'Mismagius', 'Mothim', - 'Oricorio-Baile', 'Perrserker', 'Revavroom', 'Scrafty-Base', 'Serperior', 'Sinistcha', 'Skarmory-Base', 'Squawkabilly-Green', 'Swoobat', 'Uxie', - 'Vanilluxe', 'Walrein', 'Wishiwashi', 'Wyrdeer', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', + 'Carracosta', 'Celebi', 'Cinccino', 'Cobalion', 'Cradily', 'Dedenne', 'Fezandipiti', 'Gabite', 'Granbull', 'Greedent', 'Hatterene', 'Heatmor', + 'Houndstone', 'Indeedee-M', 'Lilligant-Base', 'Medicham-Base', 'Orbeetle', 'Oricorio-Pom-Pom', 'Overqwil', 'Pincurchin', 'Pinsir-Base', 'Rotom-Wash', + 'Samurott-Base', 'Scovillain-Base', 'Sharpedo-Base', 'Shedinja', 'Shiftry', 'Steelix-Base', 'Tropius', 'Type: Null', 'Typhlosion-Hisui', 'Tyrantrum', + 'Veluza', 'Vivillon', 'Whimsicott', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', ], // Stupid hardcode onValidateSet(set, format, setHas, teamHas) { diff --git a/test/sim/team-validator/misc.js b/test/sim/team-validator/misc.js index aaff90ae16..47abd892b1 100644 --- a/test/sim/team-validator/misc.js +++ b/test/sim/team-validator/misc.js @@ -233,10 +233,10 @@ describe('Team Validator', () => { )) .reduce((x, y) => x + y); - // Dex.species.all skips over cosmetic formes const accepted = Dex.species.all().filter(species => !( // ruleTable.isBannedSpecies blind spots - species.natDexTier === 'Illegal' || species.isNonstandard === 'CAP' + species.natDexTier === 'Illegal' || species.isNonstandard === 'CAP' || + Dex.species.get(species.baseSpecies).cosmeticFormes?.includes(species.name) ) && !ruleTable.isBannedSpecies(species)).length; assert.equal(accepted, allowed); From 1b3275a22f52d901e2985180001f32b5f8fe7df9 Mon Sep 17 00:00:00 2001 From: InkyDarkBird <102001461+InkyDarkBird@users.noreply.github.com> Date: Fri, 2 Jan 2026 18:16:58 -0500 Subject: [PATCH 037/139] Bio Mech Mons: Fix Deoxys ban (#11675) --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 2fefb54cfa..b792bc8877 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -546,7 +546,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ // searchShow: false, ruleset: ['Standard OMs', 'Sleep Moves Clause'], banlist: [ - 'Annihilape​', 'Arceus​', 'Archaludon​', 'Baxcalibur​', 'Calyrex-Ice​', 'Calyrex-Shadow​', 'Chien-Pao​', 'Chi-Yu​', 'Deoxys​', 'Deoxys-Attack​', 'Dialga​', 'Dialga-Origin​', + 'Annihilape​', 'Arceus​', 'Archaludon​', 'Baxcalibur​', 'Calyrex-Ice​', 'Calyrex-Shadow​', 'Chien-Pao​', 'Chi-Yu​', 'Deoxys-Normal​', 'Deoxys-Attack​', 'Dialga​', 'Dialga-Origin​', 'Espathra​', 'Eternatus​', 'Flutter Mane​', 'Giratina​', 'Giratina-Origin​', 'Gouging Fire​', 'Groudon​', 'Ho-Oh​', 'Iron Bundle​', 'Koraidon​', 'Kyogre​', 'Kyurem-Black​', 'Kyurem-White​', 'Landorus-Incarnate', 'Lugia​', 'Lunala​', 'Magearna​', 'Mewtwo​', 'Miraidon​', 'Necrozma-Dawn-Wings​', 'Necrozma-Dusk-Mane​', 'Ogerpon-Hearthflame​', 'Palafin​', 'Palkia​', 'Palkia-Origin​', 'Rayquaza​', 'Regieleki​', 'Regigigas​', 'Reshiram​', 'Roaring Moon​', 'Slaking​', 'Shaymin-Sky​', 'Sneasler​', 'Solgaleo​', 'Spectrier​', 'Terapagos​', 'Ursaluna-Bloodmoon​', 'Urshifu', From f5483a18d0257f97248759cc4069ff6ac3d8248c Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Sat, 3 Jan 2026 18:12:53 -0500 Subject: [PATCH 038/139] BioMechMons: Fix bug with aliases (#11679) --- config/formats.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index b792bc8877..76a4178770 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -708,22 +708,22 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }; if (this.dex.items.get(pokemon.set.ability).exists) { - pokemon.m.scrambled.items.push({ thing: pokemon.set.ability, inSlot: 'Ability' }); + pokemon.m.scrambled.items.push({ thing: this.dex.items.get(pokemon.set.ability).name, inSlot: 'Ability' }); } else if (this.dex.moves.get(pokemon.set.ability).exists) { - pokemon.m.scrambled.moves.push({ thing: pokemon.set.ability, inSlot: 'Ability' }); + pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.ability).name, inSlot: 'Ability' }); } if (this.dex.abilities.get(pokemon.set.item).exists) { - pokemon.m.scrambled.abilities.push({ thing: pokemon.set.item, inSlot: 'Item' }); + pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(pokemon.set.item).name, inSlot: 'Item' }); } else if (this.dex.moves.get(pokemon.set.item).exists) { - pokemon.m.scrambled.moves.push({ thing: pokemon.set.item, inSlot: 'Item' }); + pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.item).name, inSlot: 'Item' }); } for (const move of pokemon.set.moves) { if (this.dex.abilities.get(move).exists) { - pokemon.m.scrambled.abilities.push({ thing: move, inSlot: 'Move' }); + pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(move).name, inSlot: 'Move' }); } else if (this.dex.items.get(move).exists) { - pokemon.m.scrambled.items.push({ thing: move, inSlot: 'Move' }); + pokemon.m.scrambled.items.push({ thing: this.dex.items.get(move).name, inSlot: 'Move' }); } } From 1a18b3dd556e268c75aaf6ec218f741bdf43dcd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Mon, 5 Jan 2026 17:03:25 +0000 Subject: [PATCH 039/139] Make `Battle#debug` more flexible (#11685) --- sim/battle.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sim/battle.ts b/sim/battle.ts index 8b787b026a..9b2c59cdc9 100644 --- a/sim/battle.ts +++ b/sim/battle.ts @@ -3144,9 +3144,9 @@ export class Battle { this.log[this.lastMoveLine] = parts.join('|'); } - debug(activity: string) { + debug(...activity: Part[]) { if (this.debugMode) { - this.add('debug', activity); + this.add('debug', ...activity); } } From acdbd55ee5be591add84ab2d0a6f96b4eafee230 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Mon, 5 Jan 2026 16:11:51 -0700 Subject: [PATCH 040/139] Bio Mech Mons: Fix duped item exploit --- config/formats.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 76a4178770..0b922f77c9 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -546,12 +546,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [ // searchShow: false, ruleset: ['Standard OMs', 'Sleep Moves Clause'], banlist: [ - 'Annihilape​', 'Arceus​', 'Archaludon​', 'Baxcalibur​', 'Calyrex-Ice​', 'Calyrex-Shadow​', 'Chien-Pao​', 'Chi-Yu​', 'Deoxys-Normal​', 'Deoxys-Attack​', 'Dialga​', 'Dialga-Origin​', - 'Espathra​', 'Eternatus​', 'Flutter Mane​', 'Giratina​', 'Giratina-Origin​', 'Gouging Fire​', 'Groudon​', 'Ho-Oh​', 'Iron Bundle​', 'Koraidon​', 'Kyogre​', 'Kyurem-Black​', 'Kyurem-White​', - 'Landorus-Incarnate', 'Lugia​', 'Lunala​', 'Magearna​', 'Mewtwo​', 'Miraidon​', 'Necrozma-Dawn-Wings​', 'Necrozma-Dusk-Mane​', 'Ogerpon-Hearthflame​', 'Palafin​', 'Palkia​', 'Palkia-Origin​', - 'Rayquaza​', 'Regieleki​', 'Regigigas​', 'Reshiram​', 'Roaring Moon​', 'Slaking​', 'Shaymin-Sky​', 'Sneasler​', 'Solgaleo​', 'Spectrier​', 'Terapagos​', 'Ursaluna-Bloodmoon​', 'Urshifu', - 'Urshifu-Rapid-Strike​', 'Volcarona​', 'Zacian​', 'Zacian-Crowned​', 'Zamazenta-Crowned', 'Zekrom​', 'Arena Trap​', 'Moody​', 'Sand Veil​', 'Shadow Tag​', 'Snow Cloak​', '​Bright Powder​', - 'Choice Band​', 'Choice Specs​', 'King\'s Rock​', 'Razor Fang​', 'Baton Pass​', 'Last Respects​', 'Shed Tail​', + 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chien-Pao', 'Chi-Yu', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', + 'Espathra', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', + 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin', + 'Rayquaza', 'Regieleki', 'Regigigas', 'Reshiram', 'Roaring Moon', 'Slaking', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Terapagos', 'Ursaluna-Bloodmoon', 'Urshifu', + 'Urshifu-Rapid-Strike', 'Volcarona', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', + 'Choice Band', 'Choice Specs', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', ], validateSet(set, teamHas) { const dex = this.dex; @@ -605,8 +605,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } const setHas: { [k: string]: true } = {}; for (const thing of allThings) { - if (setHas[this.toID(thing)]) return [`${set.species} has multiple copies of ${thing}.`]; - setHas[this.toID(thing)] = true; + let sanitizedThing: Item | Move | Ability = this.dex.items.get(thing); + if (!sanitizedThing.exists) sanitizedThing = this.dex.abilities.get(thing); + if (!sanitizedThing.exists) sanitizedThing = this.dex.moves.get(thing); + if (setHas[sanitizedThing.id]) return [`${set.species} has multiple copies of ${sanitizedThing.name}.`]; + setHas[sanitizedThing.id] = true; } const normalAbility = set.ability; if (!abilities.length) { From c671f43d50b22bd91fa70b355fd1870e95292a4c Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Mon, 5 Jan 2026 16:24:32 -0700 Subject: [PATCH 041/139] Add a /1v1factory command --- server/chat-plugins/randombattles/index.ts | 42 +++++++++++++++------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/server/chat-plugins/randombattles/index.ts b/server/chat-plugins/randombattles/index.ts index e9a767c76c..cf8c133ae8 100644 --- a/server/chat-plugins/randombattles/index.ts +++ b/server/chat-plugins/randombattles/index.ts @@ -257,21 +257,21 @@ function getLetsGoMoves(species: string | Species) { return data.moves.map(formatMove).sort().join(`, `); } -function battleFactorySets(species: string | Species, tier: string | null, gen = 'gen9', isBSS = false) { +function battleFactorySets(species: string | Species, tier: string | null, gen = 'gen9', isBSS = false, is1v1 = false) { species = Dex.species.get(species); if (typeof species.battleOnly === 'string') { species = Dex.species.get(species.battleOnly); } gen = toID(gen); const genNum = parseInt(gen[3]); - if (isNaN(genNum) || genNum < 6 || (isBSS && genNum < 7)) return null; + if (isNaN(genNum) || genNum < 6 || (isBSS && genNum < 7) || (is1v1 && genNum < 9)) return null; const statsFile = JSON.parse( - FS(`data/random-battles/gen${genNum}/${isBSS ? `bss-` : ``}factory-sets.json`).readIfExistsSync() || + FS(`data/random-battles/gen${genNum}/${isBSS ? `bss-` : is1v1 ? `1v1-` : ``}factory-sets.json`).readIfExistsSync() || "{}" ); if (!Object.keys(statsFile).length) return null; let buf = ``; - if (!isBSS) { + if (!isBSS && !is1v1) { if (!tier) throw new Chat.ErrorMessage(`Please provide a valid tier.`); if (!(toID(tier) in TIERS)) throw new Chat.ErrorMessage(`That tier isn't supported.`); if (!(TIERS[toID(tier)] in statsFile)) { @@ -330,19 +330,25 @@ function battleFactorySets(species: string | Species, tier: string | null, gen = buf += ``; } } else { - const format = Dex.formats.get(`${gen}bssfactory`); - if (!(species.id in statsFile)) throw new Chat.ErrorMessage(`${species.name} doesn't have any sets in ${format.name}.`); - const setObj = statsFile[species.id]; + const format = Dex.formats.get(`${gen}${is1v1 ? '1v1' : 'bss'}factory`); + if (!((is1v1 ? species.name : species.id) in statsFile)) throw new Chat.ErrorMessage(`${species.name} doesn't have any sets in ${format.name}.`); + const setObj = statsFile[is1v1 ? species.name : species.id]; if (genNum >= 9) { buf += `Species rarity: ${setObj.weight} (higher is more common, max 10)
`; buf += `Sets for ${species.name} in ${format.name}:
`; for (const [i, set] of setObj.sets.entries()) { buf += `
Set ${i + 1} (${set.weight}%)`; buf += `
    `; - buf += `
  • ${Dex.forFormat(format).species.get(set.species).name} @ ${set.item.map(formatItem).join(" / ")}
  • `; - buf += `
  • Ability: ${set.ability.map(formatAbility).join(" / ")}
  • `; - buf += `
  • Level: 50
  • `; - buf += `
  • Tera Type: ${set.teraType.map(formatType).join(' / ')}
  • `; + const item = !Array.isArray(set.item) ? [set.item] : set.item; + buf += `
  • ${Dex.forFormat(format).species.get(set.species).name} @ ${item.map(formatItem).join(" / ")}
  • `; + const ability = !Array.isArray(set.ability) ? [set.ability] : set.ability; + buf += `
  • Ability: ${ability.map(formatAbility).join(" / ")}
  • `; + if (isBSS) { + buf += `
  • Level: 50
  • `; + } else if (set.level) { + buf += `
  • Level: ${set.level}
  • `; + } + if (!is1v1) buf += `
  • Tera Type: ${set.teraType.map(formatType).join(' / ')}
  • `; if (set.evs) { buf += `
  • EVs: `; const evs: string[] = []; @@ -353,7 +359,8 @@ function battleFactorySets(species: string | Species, tier: string | null, gen = } buf += `${evs.join(" / ")}
  • `; } - buf += `
  • ${formatNature(set.nature)} Nature
  • `; + const nature = !Array.isArray(set.nature) ? [set.nature] : set.nature; + buf += `
  • ${nature.map(formatNature).join(" / ")} Nature
  • `; if (set.ivs) { buf += `
  • IVs: `; const ivs: string[] = []; @@ -603,10 +610,12 @@ export const commands: Chat.ChatCommands = { `/randomdoublesbattle OR /randdubs [pokemon], [gen] - Same as above, but instead displays Random Doubles Battle moves.`, ], + '1v1factory': 'battlefactory', bssfactory: 'battlefactory', battlefactory(target, room, user, connection, cmd) { if (!this.runBroadcast()) return; const isBSS = cmd === 'bssfactory'; + const is1v1 = cmd === '1v1factory'; if (isBSS) { const args = target.split(','); if (!args[0]) return this.parse(`/help battlefactory`); @@ -619,6 +628,15 @@ export const commands: Chat.ChatCommands = { const bssSets = battleFactorySets(species, null, mod, true); if (!bssSets) return this.parse(`/help battlefactory`); return this.sendReplyBox(bssSets); + } else if (is1v1) { + if (!target) return this.parse(`/help battlefactory`); + const species = Dex.species.get(target); + if (!species.exists) { + throw new Chat.ErrorMessage(`Error: Pok\u00e9mon '${target.trim()}' not found.`); + } + const onevoneSets = battleFactorySets(species, null, 'gen9', false, true); + if (!onevoneSets) return this.parse(`/help battlefactory`); + return this.sendReplyBox(onevoneSets); } else { const args = target.split(','); if (!args[0]) return this.parse(`/help battlefactory`); From 7a3f4dbbe27366cef77faf8b751ad6ff986ed088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Tue, 6 Jan 2026 02:40:27 +0000 Subject: [PATCH 042/139] Update Official Formats to Regulation I (#11686) --- config/formats.ts | 23 +++------------------- server/chat-plugins/randombattles/index.ts | 3 ++- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 0b922f77c9..74dd2a87d8 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -161,7 +161,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { name: "[Gen 9] BSS Reg I", mod: 'gen9', - searchShow: false, bestOfDefault: true, ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Limit Two Restricted'], restricted: ['Restricted Legendary'], @@ -169,6 +168,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { name: "[Gen 9] BSS Reg J", mod: 'gen9', + searchShow: false, bestOfDefault: true, ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Limit Two Restricted'], restricted: ['Restricted Legendary', 'Mythical'], @@ -255,29 +255,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [ restricted: ['Restricted Legendary'], }, { - name: "[Gen 9] VGC 2025 Reg I", - mod: 'gen9', - gameType: 'doubles', - searchShow: false, - bestOfDefault: true, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Open Team Sheets', 'Limit Two Restricted'], - restricted: ['Restricted Legendary'], - }, - { - name: "[Gen 9] VGC 2025 Reg J", + name: "[Gen 9] VGC 2026 Reg I", // Change back to 2025 after removing the ladder mod: 'gen9', gameType: 'doubles', bestOfDefault: true, ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Limit Two Restricted'], - restricted: ['Restricted Legendary', 'Mythical'], - }, - { - name: "[Gen 9] VGC 2025 Reg J (Bo3)", - mod: 'gen9', - gameType: 'doubles', - searchShow: false, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 9', 'VGC Timer', 'Force Open Team Sheets', 'Best of = 3', 'Limit Two Restricted'], - restricted: ['Restricted Legendary', 'Mythical'], + restricted: ['Restricted Legendary'], }, { name: "[Gen 9] VGC 2026 Reg F", diff --git a/server/chat-plugins/randombattles/index.ts b/server/chat-plugins/randombattles/index.ts index cf8c133ae8..2929d17d08 100644 --- a/server/chat-plugins/randombattles/index.ts +++ b/server/chat-plugins/randombattles/index.ts @@ -331,7 +331,8 @@ function battleFactorySets(species: string | Species, tier: string | null, gen = } } else { const format = Dex.formats.get(`${gen}${is1v1 ? '1v1' : 'bss'}factory`); - if (!((is1v1 ? species.name : species.id) in statsFile)) throw new Chat.ErrorMessage(`${species.name} doesn't have any sets in ${format.name}.`); + if (!((is1v1 ? species.name : species.id) in statsFile)) + throw new Chat.ErrorMessage(`${species.name} doesn't have any sets in ${format.name}.`); const setObj = statsFile[is1v1 ? species.name : species.id]; if (genNum >= 9) { buf += `Species rarity: ${setObj.weight} (higher is more common, max 10)
    `; From 537afeea760e903dbf3f1f6659bbb53705de93c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Thu, 8 Jan 2026 18:49:48 +0000 Subject: [PATCH 043/139] DPP: Sleep Moves Clause (#11687) --- config/formats.ts | 4 ++-- test/sim/team-validator/basic.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 74dd2a87d8..09e474ed7d 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3973,7 +3973,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { name: "[Gen 4] OU", mod: 'gen4', - ruleset: ['Standard', 'Evasion Abilities Clause', 'Baton Pass Stat Trap Clause', 'Freeze Clause Mod'], + ruleset: ['Standard', 'Evasion Abilities Clause', 'Baton Pass Stat Trap Clause', 'Freeze Clause Mod', 'Sleep Moves Clause', '!Sleep Clause Mod'], banlist: ['AG', 'Uber', 'Arena Trap', 'Quick Claw', 'Soul Dew', 'Swagger'], }, { @@ -4835,7 +4835,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ name: "[Gen 4] UU", mod: 'gen4', searchShow: false, - ruleset: ['[Gen 4] OU', '!Baton Pass Stat Trap Clause', '!Freeze Clause Mod'], + ruleset: ['[Gen 4] OU', '!Baton Pass Stat Trap Clause', '!Freeze Clause Mod', '!Sleep Moves Clause', 'Sleep Clause Mod'], banlist: ['OU', 'UUBL', 'Baton Pass'], unbanlist: ['Arena Trap', 'Snow Cloak', 'Quick Claw', 'Swagger'], }, diff --git a/test/sim/team-validator/basic.js b/test/sim/team-validator/basic.js index db18072a5b..d0926240a7 100644 --- a/test/sim/team-validator/basic.js +++ b/test/sim/team-validator/basic.js @@ -156,7 +156,7 @@ describe('Team Validator', () => { const team = [ { species: 'smeargle', ability: 'owntempo', moves: ['bellydrum', 'spore', 'sketch'], evs: { hp: 1 } }, ]; - assert.legalTeam(team, 'gen4ou'); + assert.legalTeam(team, 'gen4anythinggoes'); }); it('should accept both ability types for Mega Evolutions', () => { From 6d9a1cd20f8ce5e7f990d94a3f8e7d1241ccbd01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Thu, 8 Jan 2026 21:20:36 +0000 Subject: [PATCH 044/139] Ubers UU: Drop Regieleki and ban Giratina (#11678) https://www.smogon.com/forums/threads/sv-ubers-uu-metagame-discussion-giratina-ban-post-739.3731761/post-10818790 https://www.smogon.com/forums/threads/sv-ubers-uu-metagame-discussion-giratina-ban-post-739.3731761/post-10820664 --- config/formats.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 09e474ed7d..3e4b342046 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -340,11 +340,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: [ // Ubers OU 'Arceus-Normal', 'Arceus-Fairy', 'Arceus-Ghost', 'Arceus-Ground', 'Arceus-Water', 'Calyrex-Ice', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto', - 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Glimmora', 'Gliscor', 'Grimmsnarl', 'Groudon', 'Hatterene', 'Ho-Oh', 'Kingambit', - 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Regieleki', 'Ribombee', 'Skeledirge', 'Terapagos', - 'Ting-Lu', 'Zacian-Crowned', + 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina-Origin', 'Glimmora', 'Gliscor', 'Grimmsnarl', 'Groudon', 'Hatterene', 'Ho-Oh', 'Kingambit', 'Koraidon', + 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Ribombee', 'Skeledirge', 'Terapagos', 'Ting-Lu', 'Zacian-Crowned', // Ubers UUBL + Lunala, Arceus-Ghost, Arceus-Water - 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', 'Zekrom', + 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Giratina', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', + 'Zekrom', ], }, { From 35e871e1d1f13f06b8afedb5e322bde6b4b7d831 Mon Sep 17 00:00:00 2001 From: Aurastic <33085835+ISenseAura@users.noreply.github.com> Date: Fri, 9 Jan 2026 02:51:17 +0530 Subject: [PATCH 045/139] Thing of the day: Add destroy handler (#11694) --- server/chat-plugins/thing-of-the-day.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/chat-plugins/thing-of-the-day.ts b/server/chat-plugins/thing-of-the-day.ts index 755b260270..aa38e72590 100644 --- a/server/chat-plugins/thing-of-the-day.ts +++ b/server/chat-plugins/thing-of-the-day.ts @@ -1021,3 +1021,13 @@ export const roomSettings: Chat.SettingsHandler[] = [ ] : [['disabled', true]], }), ]; + +export const destroy = () => { + for (const [, v] of otds) { + if (v.autoStartTimer) { + clearInterval(v.autoStartTimer); + v.autoStartTimer = null; + v.room.modlog({ action: `${v.id.toUpperCase()} TIMER RESTART` }); + } + } +}; From 020da8412f4e6de6e35d68fd1c5246d6e7f19414 Mon Sep 17 00:00:00 2001 From: Caznovia <104919647+Caznovia@users.noreply.github.com> Date: Thu, 8 Jan 2026 16:29:26 -0500 Subject: [PATCH 046/139] Add Smeargle's Colosseum event learnset (#11673) --- data/learnsets.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/data/learnsets.ts b/data/learnsets.ts index f93d6231f6..10b8e0fba3 100644 --- a/data/learnsets.ts +++ b/data/learnsets.ts @@ -32244,18 +32244,22 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { smeargle: { learnset: { captivate: ["5D"], - falseswipe: ["5S1"], - flamethrower: ["6S2"], - furyswipes: ["6S2"], - meanlook: ["5S1"], - odorsleuth: ["5S1"], - seismictoss: ["6S2"], - sketch: ["9L1", "7L1", "7V", "6L1", "6S2", "5L1", "5D", "4L1", "3L1", "3S0"], + doubleslap: ["3S1"], + falseswipe: ["5S2"], + flamethrower: ["6S3"], + furyswipes: ["6S3"], + irontail: ["3S1"], + meanlook: ["5S2"], + odorsleuth: ["5S2"], + seismictoss: ["6S3"], + sketch: ["9L1", "7L1", "7V", "6L1", "6S3", "5L1", "5D", "4L1", "3L1", "3S1", "3S0"], sleeptalk: ["5D"], - spore: ["5S1"], + spore: ["5S2"], + tailwhip: ["3S1"], }, eventData: [ {generation: 3, level: 10, gender: "M", abilities: ["owntempo"], moves: ["sketch"], pokeball: "pokeball"}, + {generation: 3, level: 45, abilities: ["owntempo"], moves: ["sketch", "tailwhip", "doubleslap", "irontail"]}, {generation: 5, level: 50, gender: "F", nature: "Jolly", ivs: {atk: 31, spe: 31}, abilities: ["technician"], moves: ["falseswipe", "spore", "odorsleuth", "meanlook"], pokeball: "cherishball"}, {generation: 6, level: 40, gender: "M", nature: "Jolly", abilities: ["owntempo"], moves: ["sketch", "furyswipes", "seismictoss", "flamethrower"], pokeball: "cherishball"}, ], From ee77cf98ae753411d9a95a6b9123b45e066d8b7a Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Thu, 8 Jan 2026 16:35:48 -0500 Subject: [PATCH 047/139] Bio Mech Mons: Bugfixes (#11692) * fix useItem and eatItem * Fix banned move smuggling more * o v e r h a u l * lint * lint * this does not handle certain edgecases like Keldeo-Res * Fix Keldeo-Resolute validation * Update formats.ts * woopsie * oop * e * Update scripts.ts * Update scripts.ts * oh yea refactor this too * Update moves.ts * fix issue with PP not being deducted * simplify metronome check Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 76 ++++++++++++++++++-------------- data/mods/biomechmons/moves.ts | 18 ++++++++ data/mods/biomechmons/scripts.ts | 52 ++++++++++++++++++---- 3 files changed, 106 insertions(+), 40 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 3e4b342046..4f3df1f799 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -542,12 +542,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ let requiredItems: string[] = []; let requiredMove = ''; let requiredAbility = ''; - if (species.battleOnly) { - if (species.requiredItems) requiredItems = species.requiredItems; - if (species.requiredMove) requiredMove = species.requiredMove; - if (species.requiredAbility) requiredAbility = species.requiredAbility; - species = dex.species.get(species.battleOnly as string); - } + if (species.requiredItems) requiredItems = species.requiredItems; + if (species.requiredMove) requiredMove = species.requiredMove; + if (species.requiredAbility) requiredAbility = species.requiredAbility; + if (species.battleOnly) species = dex.species.get(species.battleOnly as string); + const effectFunctions = [dex.abilities, dex.items, dex.moves]; if ( !effectFunctions.some(f => f.get(set.ability).exists) && @@ -556,8 +555,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ) { return this.validateSet(set, teamHas); } - const allThings = [set.ability, set.item, ...set.moves] - .map(e => e.replace(/^(item|move|ability):?(?!\s*shield)/i, '')).filter(e => e.length); + const allThings = [set.ability, set.item, ...set.moves].filter(e => e.length); for (const thing of allThings) { if (!dex.moves.get(thing).exists && !dex.abilities.get(thing).exists && !dex.items.get(thing).exists) { return [`${thing} does not exist.`]; @@ -569,30 +567,26 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ) { return this.validateSet(set, teamHas); } - const moves = allThings.filter(thing => this.toID(thing) !== 'metronome' && dex.moves.get(thing).exists); + const moves = allThings.filter(thing => this.toID(thing) !== 'metronome' && + dex.moves.get(thing).exists).map(e => this.dex.moves.get(e).name); for (const m of moves) { - const moveName = this.dex.moves.get(m).name; - if (this.ruleTable.isBanned(`move:${this.toID(moveName)}`)) return [`${set.species}'s move ${moveName} is banned.`]; + if (this.ruleTable.isBanned(`move:${this.toID(m)}`)) return [`${set.species}'s move ${m} is banned.`]; } - const abilities = allThings.filter(thing => dex.abilities.get(thing).exists); + + const abilities = allThings.filter(thing => dex.abilities.get(thing).exists).map(e => this.dex.abilities.get(e).name); for (const a of abilities) { - const abilName = this.dex.abilities.get(a).name; - if (this.ruleTable.isBanned(`ability:${this.toID(abilName)}`)) { - return [`${set.species}'s ability ${abilName} is banned.`]; - } + if (this.ruleTable.isBanned(`ability:${this.toID(a)}`)) return [`${set.species}'s ability ${a} is banned.`]; } - const items = allThings.filter(thing => dex.items.get(thing).exists); + + const items = allThings.filter(thing => dex.items.get(thing).exists).map(e => this.dex.items.get(e).name); for (const i of items) { - const itemName = this.dex.items.get(i).name; - if (this.ruleTable.isBanned(`item:${this.toID(itemName)}`)) return [`${set.species}'s item ${itemName} is banned.`]; + if (this.ruleTable.isBanned(`item:${i}`)) return [`${set.species}'s item ${i} is banned.`]; } + const setHas: { [k: string]: true } = {}; - for (const thing of allThings) { - let sanitizedThing: Item | Move | Ability = this.dex.items.get(thing); - if (!sanitizedThing.exists) sanitizedThing = this.dex.abilities.get(thing); - if (!sanitizedThing.exists) sanitizedThing = this.dex.moves.get(thing); - if (setHas[sanitizedThing.id]) return [`${set.species} has multiple copies of ${sanitizedThing.name}.`]; - setHas[sanitizedThing.id] = true; + for (const thing of [...moves, ...items, ...abilities]) { + if (setHas[this.toID(thing)]) return [`${set.species} has multiple copies of ${thing}.`]; + setHas[this.toID(thing)] = true; } const normalAbility = set.ability; if (!abilities.length) { @@ -637,9 +631,16 @@ export const Formats: import('../sim/dex-formats').FormatList = [ if (!this.ruleTable.has('+ability:noability')) { this.ruleTable.set('+ability:noability', ''); } - let problems = this.validateSet(set, teamHas); - if (problems) problems = problems.filter(p => !p.endsWith('needs to have an ability.')); - if (problems?.length) return problems; + for (const curMove of moves) { + set.moves = [curMove]; + if (requiredMove && moves.map(this.toID).includes(this.toID(curMove)) && + this.toID(curMove) !== this.toID(requiredMove)) { + set.moves.push(requiredMove); + } + let problems = this.validateSet(set, teamHas); + if (problems) problems = problems.filter(p => !p.endsWith('needs to have an ability.')); + if (problems?.length) return problems; + } set.ability = normalAbility; set.item = normalItem; set.moves = normalMoves; @@ -701,11 +702,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [ if (this.dex.abilities.get(pokemon.set.item).exists) { pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(pokemon.set.item).name, inSlot: 'Item' }); - } else if (this.dex.moves.get(pokemon.set.item).exists) { + } else if (this.dex.moves.get(pokemon.set.item).exists && this.dex.moves.get(pokemon.set.item).id !== 'metronome') { pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.item).name, inSlot: 'Item' }); } for (const move of pokemon.set.moves) { + if (this.dex.moves.get(move).id === 'metronome') continue; if (this.dex.abilities.get(move).exists) { pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(move).name, inSlot: 'Move' }); } else if (this.dex.items.get(move).exists) { @@ -715,12 +717,22 @@ export const Formats: import('../sim/dex-formats').FormatList = [ const newMoveSlots = []; for (const moveSlot of pokemon.baseMoveSlots) { + if (moveSlot.id === 'metronome') { + const TeamValidator: typeof import('../sim/team-validator').TeamValidator = + require('../sim/team-validator').TeamValidator; + const cantMetronome = TeamValidator.get(this.format).checkCanLearn(this.dex.moves.get('metronome'), pokemon.species); + if (!cantMetronome) { + newMoveSlots.push(moveSlot); + } else { + pokemon.m.scrambled.items.push({ thing: this.dex.items.get('metronome').name, inSlot: 'Move' }); + } + continue; + } if (!this.dex.moves.get(moveSlot.id).exists) continue; newMoveSlots.push(moveSlot); } - // Do not let these be pointed at the same thing. Causes bugs otherwise. + (pokemon as any).baseMoveSlots = newMoveSlots; - pokemon.moveSlots = this.dex.deepClone(newMoveSlots); for (const scrambledMove of pokemon.m.scrambled.moves) { const move = this.dex.moves.get(scrambledMove.thing); @@ -734,8 +746,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ used: false, }; pokemon.baseMoveSlots.push(newMove); - pokemon.moveSlots.push(newMove); } + pokemon.moveSlots = pokemon.baseMoveSlots.slice(); } }, }, diff --git a/data/mods/biomechmons/moves.ts b/data/mods/biomechmons/moves.ts index a2b6665cda..1ab2c93520 100644 --- a/data/mods/biomechmons/moves.ts +++ b/data/mods/biomechmons/moves.ts @@ -223,6 +223,24 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, skillswap: { inherit: true, + onTryHit(target, source) { + const targetAbility = target.getAbility(); + const sourceAbility = source.getAbility(); + if (sourceAbility.flags['failskillswap'] || targetAbility.flags['failskillswap'] || target.volatiles['dynamax']) { + return false; + } + let sourceCanBeSet = this.runEvent('SetAbility', source, source, this.effect, targetAbility); + if (!this.dex.abilities.get(sourceAbility).exists && this.dex.items.get(sourceAbility.id).exists) { + sourceCanBeSet = this.runEvent('TakeItem', source, source, this.effect, this.dex.items.get(sourceAbility.id)); + } + + if (!sourceCanBeSet) return sourceCanBeSet; + let targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, sourceAbility); + if (!this.dex.abilities.get(targetAbility).exists && this.dex.items.get(targetAbility.id).exists) { + targetCanBeSet = this.runEvent('TakeItem', target, source, this.effect, this.dex.items.get(targetAbility.id)); + } + if (!targetCanBeSet) return targetCanBeSet; + }, onHit(target, source, move) { const targetAbility = target.getAbility(); const sourceAbility = source.getAbility(); diff --git a/data/mods/biomechmons/scripts.ts b/data/mods/biomechmons/scripts.ts index 34920e4fac..8b65660e01 100644 --- a/data/mods/biomechmons/scripts.ts +++ b/data/mods/biomechmons/scripts.ts @@ -63,6 +63,13 @@ export const Scripts: ModdedBattleScriptsData = { ); }, setAbility(ability, source, sourceEffect, isFromFormeChange = false, isTransform = false) { + const allThings = new Set([ + ...(this.m.scrambled.abilities as { thing: string }[]).map(e => e.thing), + ...(this.m.scrambled.items as { thing: string }[]).map(e => e.thing), + ...(this.m.scrambled.moves as { thing: string }[]).map(e => e.thing), + this.ability, this.moveSlots.map(e => e.id), this.item, + ].map(this.battle.toID)); + let isBMMAbil = false; let isOldBMMAbil = false; if (!this.hp) return false; @@ -91,7 +98,11 @@ export const Scripts: ModdedBattleScriptsData = { oldAbility = this.battle.dex.abilities.get(this.ability); } else { let abil = this.battle.dex.items.getByID(this.ability) as Item | Move; - if (!abil.exists) abil = this.battle.dex.moves.getByID(this.ability); + if (!abil.exists) { + abil = this.battle.dex.moves.getByID(this.ability); + } else { + if (!this.battle.runEvent('TakeItem', this, source, null, abil as Item)) return false; + } oldAbility = { id: this.ability, name: abil.name || this.ability, @@ -103,6 +114,9 @@ export const Scripts: ModdedBattleScriptsData = { } as Ability; isOldBMMAbil = true; } + + if (allThings.has(ability.id)) return false; + if (!isFromFormeChange) { if (ability.flags['cantsuppress'] || this.getAbility().flags['cantsuppress']) return false; } @@ -195,14 +209,22 @@ export const Scripts: ModdedBattleScriptsData = { if (!source) source = this; if (this.battle.gen <= 4) { if (source.itemKnockedOff) return false; - if (this.battle.toID(this.ability) === 'multitype') return false; - if (this.battle.toID(source.ability) === 'multitype') return false; + if (this.battle.toID(this.ability) === 'multitype' || (this.m.scrambled.abilities as { thing: string }[]) + .findIndex(e => this.battle.toID(e.thing) === 'multitype') >= 0) { + return false; + } + if (this.battle.toID(source.ability) === 'multitype' || (source.m.scrambled.abilities as { thing: string }[]) + .findIndex(e => this.battle.toID(e.thing) === 'multitype') >= 0) { + return false; + } } const item = this.getItem(); if (this.battle.runEvent('TakeItem', this, source, null, item)) { this.item = ''; let wrongSlot = (this.m.scrambled.abilities as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); if (wrongSlot >= 0) { + const dexAbil = this.battle.dex.abilities.get(this.m.scrambled.abilities[wrongSlot].thing); + if (dexAbil.flags['failskillswap']) return false; this.removeVolatile('ability:' + this.battle.toID(this.m.scrambled.abilities[wrongSlot].thing)); this.m.scrambled.abilities.splice(wrongSlot, 1); } else if ((this.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { @@ -225,6 +247,13 @@ export const Scripts: ModdedBattleScriptsData = { return false; }, setItem(item, source, effect) { + const allThings = new Set([ + ...(this.m.scrambled.abilities as { thing: string }[]).map(e => e.thing), + ...(this.m.scrambled.items as { thing: string }[]).map(e => e.thing), + ...(this.m.scrambled.moves as { thing: string }[]).map(e => e.thing), + this.ability, this.moveSlots.map(e => e.id), this.item, + ].map(this.battle.toID)); + let isBMMItem = false; let isOldBMMItem = false; if (!this.hp || !this.isActive) return false; @@ -235,7 +264,11 @@ export const Scripts: ModdedBattleScriptsData = { } else { const itemString = item; let newData = this.battle.dex.abilities.get(itemString) as Ability | Move; - if (!newData.exists) newData = this.battle.dex.moves.get(itemString); + if (!newData.exists) { + newData = this.battle.dex.moves.get(itemString); + } else { + if ((newData as Ability).flags['failskillswap']) return false; + } item = { id: newData.id || itemString, name: newData.name || itemString, @@ -246,6 +279,7 @@ export const Scripts: ModdedBattleScriptsData = { } as Item; } } + if (allThings.has(item.id)) return false; const effectid = this.battle.effect ? this.battle.effect.id : ''; if (RESTORATIVE_BERRIES.has('leppaberry' as ID)) { const inflicted = ['trick', 'switcheroo'].includes(effectid); @@ -341,8 +375,9 @@ export const Scripts: ModdedBattleScriptsData = { const isBMM = this.volatiles[item.id]?.inSlot; if (isBMM) { this.removeVolatile(item.id); - this.m.scrambled.items.splice((this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => - e.thing === this.battle.toID(item.name) && e.inSlot === isBMM), 1); + const itemIndex = (this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => + this.battle.toID(e.thing) === item.id && e.inSlot === isBMM); + if (itemIndex >= 0) this.m.scrambled.items.splice(itemIndex, 1); if (isBMM === 'Ability') this.setAbility('No Ability'); } else { this.lastItem = this.item; @@ -392,8 +427,9 @@ export const Scripts: ModdedBattleScriptsData = { const isBMM = this.volatiles[item.id]?.inSlot; if (isBMM) { this.removeVolatile(item.id); - this.m.scrambled.items.splice((this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => - e.thing === this.battle.toID(item.name) && e.inSlot === isBMM), 1); + const itemIndex = (this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => + this.battle.toID(e.thing) === item.id && e.inSlot === isBMM); + if (itemIndex >= 0) this.m.scrambled.items.splice(itemIndex, 1); if (isBMM === 'Ability') this.setAbility('No Ability'); } else { this.lastItem = this.item; From 684150d9d7a08726bc79ead9f4a6385529f3808c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Thu, 8 Jan 2026 21:59:22 +0000 Subject: [PATCH 048/139] Implement Mega Stones as {key: value} pairs (#11684) * Implement Mega Stones as pairs {key: value} * Fix Mega Evolution check * Add constructor guards to Dex getters * Update config/formats.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 6 +- data/items.ts | 574 ++++++------------ data/mods/chatbats/items.ts | 12 +- data/mods/gen8/rulesets.ts | 10 +- data/mods/gen9legendsou/items.ts | 8 +- data/mods/gen9legendsou/scripts.ts | 19 +- data/mods/gen9ssb/items.ts | 8 +- data/mods/gen9ssb/scripts.ts | 23 +- data/mods/mixandmega/scripts.ts | 8 +- data/random-battles/gen7/teams.ts | 3 +- data/rulesets.ts | 42 +- server/chat-plugins/othermetas.ts | 21 +- server/chat-plugins/randombattles/ssb.tsx | 2 +- .../chat-plugins/randombattles/winrates.tsx | 2 +- sim/battle-actions.ts | 18 +- sim/dex-abilities.ts | 2 +- sim/dex-conditions.ts | 2 +- sim/dex-data.ts | 4 +- sim/dex-items.ts | 15 +- sim/dex-moves.ts | 2 +- sim/dex-species.ts | 2 +- sim/team-validator.ts | 10 +- sim/tools/exhaustive-runner.ts | 4 +- test/sim/data.js | 6 - tools/set-import/importer.ts | 3 +- 25 files changed, 278 insertions(+), 528 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 4f3df1f799..15e48b217f 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2899,7 +2899,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ onValidateSet(set, format, setHas, teamHas) { if (set.item) { const item = this.dex.items.get(set.item); - if (item.megaEvolves && !(this.ruleTable.has(`+item:${item.id}`) || this.ruleTable.has(`+pokemontag:mega`))) { + if (item.megaStone && !(this.ruleTable.has(`+item:${item.id}`) || this.ruleTable.has(`+pokemontag:mega`))) { return [`Mega Evolution is banned.`]; } if (item.zMove && !(this.ruleTable.has(`+item:${item.id}`))) { @@ -3678,8 +3678,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } const item = this.dex.items.get(set.item); if (set.item && item.megaStone) { - const megaSpecies = this.dex.species.get(Array.isArray(item.megaStone) ? item.megaStone[0] : item.megaStone); - if (item.megaEvolves?.includes(species.baseSpecies) && megaSpecies.bst > 625) { + const megaSpecies = this.dex.species.get(item.megaStone[species.baseSpecies]); + if (megaSpecies.bst > 625) { return [ `${set.name || set.species}'s item ${item.name} is banned.`, `(Pok\u00e9mon with a BST higher than 625 are banned)`, ]; diff --git a/data/items.ts b/data/items.ts index 1ffb717568..fa452c1c48 100644 --- a/data/items.ts +++ b/data/items.ts @@ -22,12 +22,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { abomasite: { name: "Abomasite", spritenum: 575, - megaStone: "Abomasnow-Mega", - megaEvolves: "Abomasnow", + megaStone: { "Abomasnow": "Abomasnow-Mega" }, itemUser: ["Abomasnow"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 674, gen: 6, @@ -36,12 +34,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { absolite: { name: "Absolite", spritenum: 576, - megaStone: "Absol-Mega", - megaEvolves: "Absol", + megaStone: { "Absol": "Absol-Mega" }, itemUser: ["Absol"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 677, gen: 6, @@ -50,12 +46,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { absolitez: { name: "Absolite Z", spritenum: 576, - megaStone: "Absol-Mega-Z", - megaEvolves: "Absol", + megaStone: { "Absol": "Absol-Mega-Z" }, itemUser: ["Absol"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2588, gen: 9, @@ -141,12 +135,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { aerodactylite: { name: "Aerodactylite", spritenum: 577, - megaStone: "Aerodactyl-Mega", - megaEvolves: "Aerodactyl", + megaStone: { "Aerodactyl": "Aerodactyl-Mega" }, itemUser: ["Aerodactyl"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 672, gen: 6, @@ -155,12 +147,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { aggronite: { name: "Aggronite", spritenum: 578, - megaStone: "Aggron-Mega", - megaEvolves: "Aggron", + megaStone: { "Aggron": "Aggron-Mega" }, itemUser: ["Aggron"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 667, gen: 6, @@ -225,12 +215,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { alakazite: { name: "Alakazite", spritenum: 579, - megaStone: "Alakazam-Mega", - megaEvolves: "Alakazam", + megaStone: { "Alakazam": "Alakazam-Mega" }, itemUser: ["Alakazam"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 679, gen: 6, @@ -250,12 +238,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { altarianite: { name: "Altarianite", spritenum: 615, - megaStone: "Altaria-Mega", - megaEvolves: "Altaria", + megaStone: { "Altaria": "Altaria-Mega" }, itemUser: ["Altaria"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 755, gen: 6, @@ -264,12 +250,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { ampharosite: { name: "Ampharosite", spritenum: 580, - megaStone: "Ampharos-Mega", - megaEvolves: "Ampharos", + megaStone: { "Ampharos": "Ampharos-Mega" }, itemUser: ["Ampharos"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 658, gen: 6, @@ -350,12 +334,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { audinite: { name: "Audinite", spritenum: 617, - megaStone: "Audino-Mega", - megaEvolves: "Audino", + megaStone: { "Audino": "Audino-Mega" }, itemUser: ["Audino"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 757, gen: 6, @@ -397,12 +379,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { banettite: { name: "Banettite", spritenum: 582, - megaStone: "Banette-Mega", - megaEvolves: "Banette", + megaStone: { "Banette": "Banette-Mega" }, itemUser: ["Banette"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 668, gen: 6, @@ -411,12 +391,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { barbaracite: { name: "Barbaracite", spritenum: 564, - megaStone: "Barbaracle-Mega", - megaEvolves: "Barbaracle", + megaStone: { "Barbaracle": "Barbaracle-Mega" }, itemUser: ["Barbaracle"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2581, gen: 9, @@ -425,12 +403,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { baxcalibrite: { name: "Baxcalibrite", spritenum: 0, - megaStone: "Baxcalibur-Mega", - megaEvolves: "Baxcalibur", + megaStone: { "Baxcalibur": "Baxcalibur-Mega" }, itemUser: ["Baxcalibur"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2601, gen: 9, @@ -446,12 +422,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { beedrillite: { name: "Beedrillite", spritenum: 628, - megaStone: "Beedrill-Mega", - megaEvolves: "Beedrill", + megaStone: { "Beedrill": "Beedrill-Mega" }, itemUser: ["Beedrill"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 770, gen: 6, @@ -582,12 +556,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { blastoisinite: { name: "Blastoisinite", spritenum: 583, - megaStone: "Blastoise-Mega", - megaEvolves: "Blastoise", + megaStone: { "Blastoise": "Blastoise-Mega" }, itemUser: ["Blastoise"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 661, gen: 6, @@ -596,12 +568,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { blazikenite: { name: "Blazikenite", spritenum: 584, - megaStone: "Blaziken-Mega", - megaEvolves: "Blaziken", + megaStone: { "Blaziken": "Blaziken-Mega" }, itemUser: ["Blaziken"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 664, gen: 6, @@ -762,12 +732,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { cameruptite: { name: "Cameruptite", spritenum: 625, - megaStone: "Camerupt-Mega", - megaEvolves: "Camerupt", + megaStone: { "Camerupt": "Camerupt-Mega" }, itemUser: ["Camerupt"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 767, gen: 6, @@ -793,12 +761,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { chandelurite: { name: "Chandelurite", spritenum: 557, - megaStone: "Chandelure-Mega", - megaEvolves: "Chandelure", + megaStone: { "Chandelure": "Chandelure-Mega" }, itemUser: ["Chandelure"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2574, gen: 9, @@ -822,12 +788,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { charizarditex: { name: "Charizardite X", spritenum: 585, - megaStone: "Charizard-Mega-X", - megaEvolves: "Charizard", + megaStone: { "Charizard": "Charizard-Mega-X" }, itemUser: ["Charizard"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 660, gen: 6, @@ -836,12 +800,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { charizarditey: { name: "Charizardite Y", spritenum: 586, - megaStone: "Charizard-Mega-Y", - megaEvolves: "Charizard", + megaStone: { "Charizard": "Charizard-Mega-Y" }, itemUser: ["Charizard"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 678, gen: 6, @@ -903,12 +865,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { chesnaughtite: { name: "Chesnaughtite", spritenum: 558, - megaStone: "Chesnaught-Mega", - megaEvolves: "Chesnaught", + megaStone: { "Chesnaught": "Chesnaught-Mega" }, itemUser: ["Chesnaught"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2575, gen: 9, @@ -978,12 +938,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { chimechite: { name: "Chimechite", spritenum: 0, - megaStone: "Chimecho-Mega", - megaEvolves: "Chimecho", + megaStone: { "Chimecho": "Chimecho-Mega" }, itemUser: ["Chimecho"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2587, gen: 9, @@ -1130,12 +1088,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { clefablite: { name: "Clefablite", spritenum: 544, - megaStone: "Clefable-Mega", - megaEvolves: "Clefable", + megaStone: { "Clefable": "Clefable-Mega" }, itemUser: ["Clefable"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2559, gen: 9, @@ -1258,12 +1214,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { crabominite: { name: "Crabominite", spritenum: 0, - megaStone: "Crabominable-Mega", - megaEvolves: "Crabominable", + megaStone: { "Crabominable": "Crabominable-Mega" }, itemUser: ["Crabominable"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2595, gen: 9, @@ -1357,12 +1311,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { darkranite: { name: "Darkranite", spritenum: 0, - megaStone: "Darkrai-Mega", - megaEvolves: "Darkrai", + megaStone: { "Darkrai": "Darkrai-Mega" }, itemUser: ["Darkrai"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2593, gen: 9, @@ -1425,12 +1377,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { delphoxite: { name: "Delphoxite", spritenum: 559, - megaStone: "Delphox-Mega", - megaEvolves: "Delphox", + megaStone: { "Delphox": "Delphox-Mega" }, itemUser: ["Delphox"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2576, gen: 9, @@ -1454,12 +1404,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { diancite: { name: "Diancite", spritenum: 624, - megaStone: "Diancie-Mega", - megaEvolves: "Diancie", + megaStone: { "Diancie": "Diancie-Mega" }, itemUser: ["Diancie"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 764, gen: 6, @@ -1521,12 +1469,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { dragalgite: { name: "Dragalgite", spritenum: 565, - megaStone: "Dragalge-Mega", - megaEvolves: "Dragalge", + megaStone: { "Dragalge": "Dragalge-Mega" }, itemUser: ["Dragalge"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2582, gen: 9, @@ -1564,12 +1510,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { dragoninite: { name: "Dragoninite", spritenum: 547, - megaStone: "Dragonite-Mega", - megaEvolves: "Dragonite", + megaStone: { "Dragonite": "Dragonite-Mega" }, itemUser: ["Dragonite"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2562, gen: 9, @@ -1615,12 +1559,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { drampanite: { name: "Drampanite", spritenum: 569, - megaStone: "Drampa-Mega", - megaEvolves: "Drampa", + megaStone: { "Drampa": "Drampa-Mega" }, itemUser: ["Drampa"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2585, gen: 9, @@ -1714,12 +1656,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { eelektrossite: { name: "Eelektrossite", spritenum: 556, - megaStone: "Eelektross-Mega", - megaEvolves: "Eelektross", + megaStone: { "Eelektross": "Eelektross-Mega" }, itemUser: ["Eelektross"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2573, gen: 9, @@ -1889,12 +1829,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { emboarite: { name: "Emboarite", spritenum: 552, - megaStone: "Emboar-Mega", - megaEvolves: "Emboar", + megaStone: { "Emboar": "Emboar-Mega" }, itemUser: ["Emboar"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2569, gen: 9, @@ -1946,12 +1884,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { excadrite: { name: "Excadrite", spritenum: 553, - megaStone: "Excadrill-Mega", - megaEvolves: "Excadrill", + megaStone: { "Excadrill": "Excadrill-Mega" }, itemUser: ["Excadrill"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2570, gen: 9, @@ -2031,12 +1967,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { falinksite: { name: "Falinksite", spritenum: 570, - megaStone: "Falinks-Mega", - megaEvolves: "Falinks", + megaStone: { "Falinks": "Falinks-Mega" }, itemUser: ["Falinks"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2586, gen: 9, @@ -2052,12 +1986,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { feraligite: { name: "Feraligite", spritenum: 549, - megaStone: "Feraligatr-Mega", - megaEvolves: "Feraligatr", + megaStone: { "Feraligatr": "Feraligatr-Mega" }, itemUser: ["Feraligatr"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2564, gen: 9, @@ -2252,12 +2184,11 @@ export const Items: import('../sim/dex-items').ItemDataTable = { floettite: { name: "Floettite", spritenum: 562, - megaStone: "Floette-Mega", - megaEvolves: "Floette-Eternal", + megaStone: { "Floette-Eternal": "Floette-Mega" }, itemUser: ["Floette-Eternal"], onTakeItem(item, source) { - if ([item.megaEvolves, item.megaStone].includes(source.baseSpecies.name)) return false; - return true; + return !item.megaStone || (!item.megaStone[source.baseSpecies.name] && + !Object.values(item.megaStone).includes(source.baseSpecies.name)); }, num: 2579, gen: 9, @@ -2397,12 +2328,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { froslassite: { name: "Froslassite", spritenum: 551, - megaStone: "Froslass-Mega", - megaEvolves: "Froslass", + megaStone: { "Froslass": "Froslass-Mega" }, itemUser: ["Froslass"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2566, gen: 9, @@ -2440,12 +2369,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { galladite: { name: "Galladite", spritenum: 616, - megaStone: "Gallade-Mega", - megaEvolves: "Gallade", + megaStone: { "Gallade": "Gallade-Mega" }, itemUser: ["Gallade"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 756, gen: 6, @@ -2474,12 +2401,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { garchompite: { name: "Garchompite", spritenum: 573, - megaStone: "Garchomp-Mega", - megaEvolves: "Garchomp", + megaStone: { "Garchomp": "Garchomp-Mega" }, itemUser: ["Garchomp"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 683, gen: 6, @@ -2488,12 +2413,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { garchompitez: { name: "Garchompite Z", spritenum: 573, - megaStone: "Garchomp-Mega-Z", - megaEvolves: "Garchomp", + megaStone: { "Garchomp": "Garchomp-Mega-Z" }, itemUser: ["Garchomp"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2590, gen: 9, @@ -2502,12 +2425,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { gardevoirite: { name: "Gardevoirite", spritenum: 587, - megaStone: "Gardevoir-Mega", - megaEvolves: "Gardevoir", + megaStone: { "Gardevoir": "Gardevoir-Mega" }, itemUser: ["Gardevoir"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 657, gen: 6, @@ -2516,12 +2437,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { gengarite: { name: "Gengarite", spritenum: 588, - megaStone: "Gengar-Mega", - megaEvolves: "Gengar", + megaStone: { "Gengar": "Gengar-Mega" }, itemUser: ["Gengar"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 656, gen: 6, @@ -2572,12 +2491,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { glalitite: { name: "Glalitite", spritenum: 623, - megaStone: "Glalie-Mega", - megaEvolves: "Glalie", + megaStone: { "Glalie": "Glalie-Mega" }, itemUser: ["Glalie"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 763, gen: 6, @@ -2586,12 +2503,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { glimmoranite: { name: "Glimmoranite", spritenum: 0, - megaStone: "Glimmora-Mega", - megaEvolves: "Glimmora", + megaStone: { "Glimmora": "Glimmora-Mega" }, itemUser: ["Glimmora"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2600, gen: 9, @@ -2609,12 +2524,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { golisopite: { name: "Golisopite", spritenum: 0, - megaStone: "Golisopod-Mega", - megaEvolves: "Golisopod", + megaStone: { "Golisopod": "Golisopod-Mega" }, itemUser: ["Golisopod"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2596, gen: 9, @@ -2623,12 +2536,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { golurkite: { name: "Golurkite", spritenum: 0, - megaStone: "Golurk-Mega", - megaEvolves: "Golurk", + megaStone: { "Golurk": "Golurk-Mega" }, itemUser: ["Golurk"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2594, gen: 9, @@ -2709,13 +2620,11 @@ export const Items: import('../sim/dex-items').ItemDataTable = { greninjite: { name: "Greninjite", spritenum: 560, - megaStone: "Greninja-Mega", - megaEvolves: "Greninja", + megaStone: { "Greninja": "Greninja-Mega" }, itemUser: ["Greninja"], onTakeItem(item, source) { // TODO: Figure out if this works on Greninja-Bond - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2577, gen: 9, @@ -2824,12 +2733,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { gyaradosite: { name: "Gyaradosite", spritenum: 589, - megaStone: "Gyarados-Mega", - megaEvolves: "Gyarados", + megaStone: { "Gyarados": "Gyarados-Mega" }, itemUser: ["Gyarados"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 676, gen: 6, @@ -2877,12 +2784,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { hawluchanite: { name: "Hawluchanite", spritenum: 566, - megaStone: "Hawlucha-Mega", - megaEvolves: "Hawlucha", + megaStone: { "Hawlucha": "Hawlucha-Mega" }, itemUser: ["Hawlucha"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2583, gen: 9, @@ -2919,12 +2824,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { heatranite: { name: "Heatranite", spritenum: 0, - megaStone: "Heatran-Mega", - megaEvolves: "Heatran", + megaStone: { "Heatran": "Heatran-Mega" }, itemUser: ["Heatran"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2592, gen: 9, @@ -2969,12 +2872,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { heracronite: { name: "Heracronite", spritenum: 590, - megaStone: "Heracross-Mega", - megaEvolves: "Heracross", + megaStone: { "Heracross": "Heracross-Mega" }, itemUser: ["Heracross"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 680, gen: 6, @@ -2995,12 +2896,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { houndoominite: { name: "Houndoominite", spritenum: 591, - megaStone: "Houndoom-Mega", - megaEvolves: "Houndoom", + megaStone: { "Houndoom": "Houndoom-Mega" }, itemUser: ["Houndoom"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 666, gen: 6, @@ -3213,12 +3112,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { kangaskhanite: { name: "Kangaskhanite", spritenum: 592, - megaStone: "Kangaskhan-Mega", - megaEvolves: "Kangaskhan", + megaStone: { "Kangaskhan": "Kangaskhan-Mega" }, itemUser: ["Kangaskhan"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 675, gen: 6, @@ -3371,12 +3268,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { latiasite: { name: "Latiasite", spritenum: 629, - megaStone: "Latias-Mega", - megaEvolves: "Latias", + megaStone: { "Latias": "Latias-Mega" }, itemUser: ["Latias"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 684, gen: 6, @@ -3385,12 +3280,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { latiosite: { name: "Latiosite", spritenum: 630, - megaStone: "Latios-Mega", - megaEvolves: "Latios", + megaStone: { "Latios": "Latios-Mega" }, itemUser: ["Latios"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 685, gen: 6, @@ -3571,12 +3464,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { lopunnite: { name: "Lopunnite", spritenum: 626, - megaStone: "Lopunny-Mega", - megaEvolves: "Lopunny", + megaStone: { "Lopunny": "Lopunny-Mega" }, itemUser: ["Lopunny"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 768, gen: 6, @@ -3601,12 +3492,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { lucarionite: { name: "Lucarionite", spritenum: 594, - megaStone: "Lucario-Mega", - megaEvolves: "Lucario", + megaStone: { "Lucario": "Lucario-Mega" }, itemUser: ["Lucario"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 673, gen: 6, @@ -3615,12 +3504,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { lucarionitez: { name: "Lucarionite Z", spritenum: 594, - megaStone: "Lucario-Mega-Z", - megaEvolves: "Lucario", + megaStone: { "Lucario": "Lucario-Mega-Z" }, itemUser: ["Lucario"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2591, gen: 9, @@ -3772,12 +3659,14 @@ export const Items: import('../sim/dex-items').ItemDataTable = { magearnite: { name: "Magearnite", spritenum: 0, - megaStone: ["Magearna-Mega", "Magearna-Original-Mega"], - megaEvolves: ["Magearna", "Magearna-Original"], + megaStone: { + "Magearna": "Magearna-Mega", + "Magearna-Original": "Magearna-Original-Mega", + }, itemUser: ["Magearna", "Magearna-Original"], onTakeItem(item, source) { - if (item.megaEvolves!.includes(source.baseSpecies.baseSpecies)) return false; - return true; + return !item.megaStone || (!item.megaStone[source.baseSpecies.name] && + !Object.values(item.megaStone).includes(source.baseSpecies.name)); }, num: 2597, gen: 9, @@ -3860,12 +3749,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { malamarite: { name: "Malamarite", spritenum: 563, - megaStone: "Malamar-Mega", - megaEvolves: "Malamar", + megaStone: { "Malamar": "Malamar-Mega" }, itemUser: ["Malamar"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2580, gen: 9, @@ -3883,12 +3770,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { manectite: { name: "Manectite", spritenum: 596, - megaStone: "Manectric-Mega", - megaEvolves: "Manectric", + megaStone: { "Manectric": "Manectric-Mega" }, itemUser: ["Manectric"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 682, gen: 6, @@ -3943,12 +3828,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { mawilite: { name: "Mawilite", spritenum: 598, - megaStone: "Mawile-Mega", - megaEvolves: "Mawile", + megaStone: { "Mawile": "Mawile-Mega" }, itemUser: ["Mawile"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 681, gen: 6, @@ -3977,12 +3860,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { medichamite: { name: "Medichamite", spritenum: 599, - megaStone: "Medicham-Mega", - megaEvolves: "Medicham", + megaStone: { "Medicham": "Medicham-Mega" }, itemUser: ["Medicham"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 665, gen: 6, @@ -3991,12 +3872,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { meganiumite: { name: "Meganiumite", spritenum: 548, - megaStone: "Meganium-Mega", - megaEvolves: "Meganium", + megaStone: { "Meganium": "Meganium-Mega" }, itemUser: ["Meganium"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2563, gen: 9, @@ -4043,12 +3922,14 @@ export const Items: import('../sim/dex-items').ItemDataTable = { meowsticite: { name: "Meowsticite", spritenum: 0, - megaStone: ["Meowstic-M-Mega", "Meowstic-F-Mega"], - megaEvolves: ["Meowstic", "Meowstic-F"], + megaStone: { + "Meowstic": "Meowstic-M-Mega", + "Meowstic-F": "Meowstic-F-Mega", + }, itemUser: ["Meowstic", "Meowstic-F"], onTakeItem(item, source) { - if (item.megaEvolves!.includes(source.baseSpecies.baseSpecies)) return false; - return true; + return !item.megaStone || (!item.megaStone[source.baseSpecies.name] && + !Object.values(item.megaStone).includes(source.baseSpecies.name)); }, num: 2594, gen: 9, @@ -4057,12 +3938,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { metagrossite: { name: "Metagrossite", spritenum: 618, - megaStone: "Metagross-Mega", - megaEvolves: "Metagross", + megaStone: { "Metagross": "Metagross-Mega" }, itemUser: ["Metagross"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 758, gen: 6, @@ -4164,12 +4043,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { mewtwonitex: { name: "Mewtwonite X", spritenum: 600, - megaStone: "Mewtwo-Mega-X", - megaEvolves: "Mewtwo", + megaStone: { "Mewtwo": "Mewtwo-Mega-X" }, itemUser: ["Mewtwo"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 662, gen: 6, @@ -4178,12 +4055,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { mewtwonitey: { name: "Mewtwonite Y", spritenum: 601, - megaStone: "Mewtwo-Mega-Y", - megaEvolves: "Mewtwo", + megaStone: { "Mewtwo": "Mewtwo-Mega-Y" }, itemUser: ["Mewtwo"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 663, gen: 6, @@ -4677,12 +4552,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { pidgeotite: { name: "Pidgeotite", spritenum: 622, - megaStone: "Pidgeot-Mega", - megaEvolves: "Pidgeot", + megaStone: { "Pidgeot": "Pidgeot-Mega" }, itemUser: ["Pidgeot"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 762, gen: 6, @@ -4726,12 +4599,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { pinsirite: { name: "Pinsirite", spritenum: 602, - megaStone: "Pinsir-Mega", - megaEvolves: "Pinsir", + megaStone: { "Pinsir": "Pinsir-Mega" }, itemUser: ["Pinsir"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 671, gen: 6, @@ -5082,12 +4953,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { pyroarite: { name: "Pyroarite", spritenum: 561, - megaStone: "Pyroar-Mega", - megaEvolves: "Pyroar", + megaStone: { "Pyroar": "Pyroar-Mega" }, itemUser: ["Pyroar"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2578, gen: 9, @@ -5161,13 +5030,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { raichunitex: { name: "Raichunite X", spritenum: 0, - megaStone: "Raichu-Mega-X", - megaEvolves: "Raichu", + megaStone: { "Raichu": "Raichu-Mega-X" }, itemUser: ["Raichu"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.name || - item.megaStone === source.baseSpecies.name) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2585, gen: 9, @@ -5176,13 +5042,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { raichunitey: { name: "Raichunite Y", spritenum: 0, - megaStone: "Raichu-Mega-Y", - megaEvolves: "Raichu", + megaStone: { "Raichu": "Raichu-Mega-Y" }, itemUser: ["Raichu"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.name || - item.megaStone === source.baseSpecies.name) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2586, gen: 9, @@ -5561,12 +5424,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { sablenite: { name: "Sablenite", spritenum: 614, - megaStone: "Sableye-Mega", - megaEvolves: "Sableye", + megaStone: { "Sableye": "Sableye-Mega" }, itemUser: ["Sableye"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 754, gen: 6, @@ -5640,12 +5501,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { salamencite: { name: "Salamencite", spritenum: 627, - megaStone: "Salamence-Mega", - megaEvolves: "Salamence", + megaStone: { "Salamence": "Salamence-Mega" }, itemUser: ["Salamence"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 769, gen: 6, @@ -5654,12 +5513,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { sceptilite: { name: "Sceptilite", spritenum: 613, - megaStone: "Sceptile-Mega", - megaEvolves: "Sceptile", + megaStone: { "Sceptile": "Sceptile-Mega" }, itemUser: ["Sceptile"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 753, gen: 6, @@ -5668,12 +5525,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { scizorite: { name: "Scizorite", spritenum: 605, - megaStone: "Scizor-Mega", - megaEvolves: "Scizor", + megaStone: { "Scizor": "Scizor-Mega" }, itemUser: ["Scizor"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 670, gen: 6, @@ -5682,12 +5537,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { scolipite: { name: "Scolipite", spritenum: 554, - megaStone: "Scolipede-Mega", - megaEvolves: "Scolipede", + megaStone: { "Scolipede": "Scolipede-Mega" }, itemUser: ["Scolipede"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2571, gen: 9, @@ -5708,12 +5561,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { scovillainite: { name: "Scovillainite", spritenum: 0, - megaStone: "Scovillain-Mega", - megaEvolves: "Scovillain", + megaStone: { "Scovillain": "Scovillain-Mega" }, itemUser: ["Scovillain"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2599, gen: 9, @@ -5722,12 +5573,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { scraftinite: { name: "Scraftinite", spritenum: 555, - megaStone: "Scrafty-Mega", - megaEvolves: "Scrafty", + megaStone: { "Scrafty": "Scrafty-Mega" }, itemUser: ["Scrafty"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2572, gen: 9, @@ -5767,12 +5616,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { sharpedonite: { name: "Sharpedonite", spritenum: 619, - megaStone: "Sharpedo-Mega", - megaEvolves: "Sharpedo", + megaStone: { "Sharpedo": "Sharpedo-Mega" }, itemUser: ["Sharpedo"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 759, gen: 6, @@ -5914,12 +5761,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { skarmorite: { name: "Skarmorite", spritenum: 550, - megaStone: "Skarmory-Mega", - megaEvolves: "Skarmory", + megaStone: { "Skarmory": "Skarmory-Mega" }, itemUser: ["Skarmory"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2565, gen: 9, @@ -5958,12 +5803,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { slowbronite: { name: "Slowbronite", spritenum: 620, - megaStone: "Slowbro-Mega", - megaEvolves: "Slowbro", + megaStone: { "Slowbro": "Slowbro-Mega" }, itemUser: ["Slowbro"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 760, gen: 6, @@ -6129,12 +5972,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { staraptite: { name: "Staraptite", spritenum: 0, - megaStone: "Staraptor-Mega", - megaEvolves: "Staraptor", + megaStone: { "Staraptor": "Staraptor-Mega" }, itemUser: ["Staraptor"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2589, gen: 9, @@ -6175,12 +6016,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { starminite: { name: "Starminite", spritenum: 546, - megaStone: "Starmie-Mega", - megaEvolves: "Starmie", + megaStone: { "Starmie": "Starmie-Mega" }, itemUser: ["Starmie"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2561, gen: 9, @@ -6224,12 +6063,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { steelixite: { name: "Steelixite", spritenum: 621, - megaStone: "Steelix-Mega", - megaEvolves: "Steelix", + megaStone: { "Steelix": "Steelix-Mega" }, itemUser: ["Steelix"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 761, gen: 6, @@ -6338,12 +6175,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { swampertite: { name: "Swampertite", spritenum: 612, - megaStone: "Swampert-Mega", - megaEvolves: "Swampert", + megaStone: { "Swampert": "Swampert-Mega" }, itemUser: ["Swampert"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 752, gen: 6, @@ -6426,12 +6261,15 @@ export const Items: import('../sim/dex-items').ItemDataTable = { tatsugirinite: { name: "Tatsugirinite", spritenum: 0, - megaStone: ["Tatsugiri-Curly-Mega", "Tatsugiri-Droopy-Mega", "Tatsugiri-Stretchy-Mega"], - megaEvolves: ["Tatsugiri", "Tatsugiri-Droopy", "Tatsugiri-Stretchy"], + megaStone: { + "Tatsugiri": "Tatsugiri-Curly-Mega", + "Tatsugiri-Droopy": "Tatsugiri-Droopy-Mega", + "Tatsugiri-Stretchy": "Tatsugiri-Stretchy-Mega", + }, itemUser: ["Tatsugiri", "Tatsugiri-Droopy", "Tatsugiri-Stretchy"], onTakeItem(item, source) { - if (item.megaEvolves!.includes(source.baseSpecies.baseSpecies)) return false; - return true; + return !item.megaStone || (!item.megaStone[source.baseSpecies.name] && + !Object.values(item.megaStone).includes(source.baseSpecies.name)); }, num: 2601, gen: 9, @@ -7549,12 +7387,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { tyranitarite: { name: "Tyranitarite", spritenum: 607, - megaStone: "Tyranitar-Mega", - megaEvolves: "Tyranitar", + megaStone: { "Tyranitar": "Tyranitar-Mega" }, itemUser: ["Tyranitar"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 669, gen: 6, @@ -7628,12 +7464,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { venusaurite: { name: "Venusaurite", spritenum: 608, - megaStone: "Venusaur-Mega", - megaEvolves: "Venusaur", + megaStone: { "Venusaur": "Venusaur-Mega" }, itemUser: ["Venusaur"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 659, gen: 6, @@ -7642,12 +7476,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { victreebelite: { name: "Victreebelite", spritenum: 545, - megaStone: "Victreebel-Mega", - megaEvolves: "Victreebel", + megaStone: { "Victreebel": "Victreebel-Mega" }, itemUser: ["Victreebel"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2560, gen: 9, @@ -7976,12 +7808,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { zeraorite: { name: "Zeraorite", spritenum: 0, - megaStone: "Zeraora-Mega", - megaEvolves: "Zeraora", + megaStone: { "Zeraora": "Zeraora-Mega" }, itemUser: ["Zeraora"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: 2598, gen: 9, @@ -8006,12 +7836,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { zygardite: { name: "Zygardite", spritenum: 568, - megaStone: "Zygarde-Mega", - megaEvolves: "Zygarde-Complete", + megaStone: { "Zygarde-Complete": "Zygarde-Mega" }, itemUser: ["Zygarde-Complete"], onTakeItem(item, source) { - if (source.baseSpecies.baseSpecies === 'Zygarde') return false; - return true; + return source.baseSpecies.baseSpecies !== 'Zygarde'; }, num: 2584, gen: 9, @@ -8303,12 +8131,10 @@ export const Items: import('../sim/dex-items').ItemDataTable = { crucibellite: { name: "Crucibellite", spritenum: 577, - megaStone: "Crucibelle-Mega", - megaEvolves: "Crucibelle", + megaStone: { "Crucibelle": "Crucibelle-Mega" }, itemUser: ["Crucibelle"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: -1, gen: 6, diff --git a/data/mods/chatbats/items.ts b/data/mods/chatbats/items.ts index d665b92d55..f059180595 100644 --- a/data/mods/chatbats/items.ts +++ b/data/mods/chatbats/items.ts @@ -13,12 +13,10 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { masquerainite: { name: "Masquerainite", spritenum: 1, - megaStone: "Masquerain-Mega", - megaEvolves: "Masquerain", + megaStone: { "Masquerain": "Masquerain-Mega" }, itemUser: ["Masquerain"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: -1, gen: 9, @@ -59,12 +57,10 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { typhlosionite: { name: "Typhlosionite", spritenum: 1, - megaStone: "Typhlosion-Mega", - megaEvolves: "Typhlosion", + megaStone: { "Typhlosion": "Typhlosion-Mega" }, itemUser: ["Typhlosion"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, num: -2, gen: 9, diff --git a/data/mods/gen8/rulesets.ts b/data/mods/gen8/rulesets.ts index 7958555cca..866c2568da 100644 --- a/data/mods/gen8/rulesets.ts +++ b/data/mods/gen8/rulesets.ts @@ -92,10 +92,10 @@ export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable if (["Zacian", "Zamazenta"].includes(species.baseSpecies) && this.toID(set.item).startsWith('rusted')) { species = this.dex.species.get(set.species + "-Crowned"); } - if (set.item && this.dex.items.get(set.item).megaStone) { + if (set.item) { const item = this.dex.items.get(set.item); - if (item.megaEvolves === species.baseSpecies) { - species = this.dex.species.get(Array.isArray(item.megaStone) ? item.megaStone[0] : item.megaStone); + if (item.megaStone?.[species.baseSpecies]) { + species = this.dex.species.get(item.megaStone[species.baseSpecies]); } } if ( @@ -123,8 +123,8 @@ export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable } if (set.item) { const item = this.dex.items.get(set.item); - if (item.megaEvolves === set.species) { - godSpecies = this.dex.species.get(Array.isArray(item.megaStone) ? item.megaStone[0] : item.megaStone); + if (item.megaStone?.[set.species]) { + godSpecies = this.dex.species.get(item.megaStone[set.species]); } if (["Zacian", "Zamazenta"].includes(godSpecies.baseSpecies) && item.id.startsWith('rusted')) { godSpecies = this.dex.species.get(set.species + "-Crowned"); diff --git a/data/mods/gen9legendsou/items.ts b/data/mods/gen9legendsou/items.ts index 5a4e3fb9c0..9e71c2e5cb 100644 --- a/data/mods/gen9legendsou/items.ts +++ b/data/mods/gen9legendsou/items.ts @@ -2,15 +2,15 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { slowbronite: { inherit: true, onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.name || item.megaStone === source.baseSpecies.name) return false; - return true; + return !item.megaStone || (!item.megaStone[source.baseSpecies.name] && + !Object.values(item.megaStone).includes(source.baseSpecies.name)); }, }, greninjite: { inherit: true, onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.name || item.megaStone === source.baseSpecies.name) return false; - return true; + return !item.megaStone || (!item.megaStone[source.baseSpecies.name] && + !Object.values(item.megaStone).includes(source.baseSpecies.name)); }, }, zygardite: { diff --git a/data/mods/gen9legendsou/scripts.ts b/data/mods/gen9legendsou/scripts.ts index a71a40b244..ac0cdf8b94 100644 --- a/data/mods/gen9legendsou/scripts.ts +++ b/data/mods/gen9legendsou/scripts.ts @@ -57,23 +57,8 @@ export const Scripts: ModdedBattleScriptsData = { pokemon.baseMoves.includes(this.battle.toID(altForme.requiredMove)) && !item.zMove) { return altForme.name; } - if (Array.isArray(item.megaEvolves)) { - if (!Array.isArray(item.megaStone)) { - throw new Error(`${item.name}#megaEvolves and ${item.name}#megaStone type mismatch`); - } - if (item.megaEvolves.length !== item.megaStone.length) { - throw new Error(`${item.name}#megaEvolves and ${item.name}#megaStone length mismatch`); - } - const index = item.megaEvolves.indexOf(species.name); - if (index < 0) return null; - return item.megaStone[index]; - } else { - if (item.megaEvolves === species.name) { - if (Array.isArray(item.megaStone)) throw new Error(`${item.name}#megaEvolves and ${item.name}#megaStone type mismatch`); - return item.megaStone; - } - } - return null; + if (!item.megaStone) return null; + return item.megaStone[species.name]; }, runMegaEvo(pokemon) { const speciesid = pokemon.canMegaEvo || pokemon.canUltraBurst; diff --git a/data/mods/gen9ssb/items.ts b/data/mods/gen9ssb/items.ts index ba538d227f..db1bfae705 100644 --- a/data/mods/gen9ssb/items.ts +++ b/data/mods/gen9ssb/items.ts @@ -14,11 +14,9 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { name: "Flygonite", spritenum: 111, itemUser: ["Flygon"], - megaEvolves: "Flygon", - megaStone: "Trapinch", + megaStone: { "Trapinch": "Flygon" }, onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; - return true; + return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, desc: "If held by a Flygon, this item allows it to Mega Evolve in battle.", }, @@ -36,7 +34,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { gardevoirite: { inherit: true, itemUser: ["Ralts"], - megaEvolves: "Ralts", + megaStone: { "Ralts": "Gardevoir-Mega" }, desc: "If held by a Ralts, this item allows it to Mega Evolve in battle.", }, // Peary diff --git a/data/mods/gen9ssb/scripts.ts b/data/mods/gen9ssb/scripts.ts index f1b3cbba00..6be6a31470 100644 --- a/data/mods/gen9ssb/scripts.ts +++ b/data/mods/gen9ssb/scripts.ts @@ -963,26 +963,11 @@ export const Scripts: ModdedBattleScriptsData = { pokemon.baseMoves.includes(this.battle.toID(altForme.requiredMove)) && !item.zMove) { return altForme.name; } + if (!item.megaStone) return null; // a hacked-in Megazard X can mega evolve into Megazard Y, but not into Megazard X - if (Array.isArray(item.megaEvolves)) { - if (!Array.isArray(item.megaStone)) { - throw new Error(`${item.name}#megaEvolves and ${item.name}#megaStone type mismatch`); - } - if (item.megaEvolves.length !== item.megaStone.length) { - throw new Error(`${item.name}#megaEvolves and ${item.name}#megaStone length mismatch`); - } - // FIXME: Change to species.name when champions comes - const index = item.megaEvolves.indexOf(species.baseSpecies); - if (index < 0) return null; - return item.megaStone[index]; - // FIXME: Change to species.name when champions comes - } else { - if (item.megaEvolves === species.baseSpecies) { - if (Array.isArray(item.megaStone)) throw new Error(`${item.name}#megaEvolves and ${item.name}#megaStone type mismatch`); - return item.megaStone; - } - } - return null; + // FIXME: Change to species.name when champions comes + const megaEvolution = item.megaStone[species.baseSpecies]; + return megaEvolution && megaEvolution !== species.name ? megaEvolution : null; }, // 1 Z per pokemon diff --git a/data/mods/mixandmega/scripts.ts b/data/mods/mixandmega/scripts.ts index 78d85cce0b..77089a00c4 100644 --- a/data/mods/mixandmega/scripts.ts +++ b/data/mods/mixandmega/scripts.ts @@ -385,12 +385,8 @@ export const Scripts: ModdedBattleScriptsData = { if (pokemon.species.isMega) return null; const item = pokemon.getItem(); - if (item.megaStone) { - if (item.megaStone.includes(pokemon.baseSpecies.name)) return null; - return Array.isArray(item.megaStone) ? item.megaStone[0] : item.megaStone; - } else { - return null; - } + if (!item.megaStone || item.megaStone[pokemon.baseSpecies.name]) return null; + return Object.values(item.megaStone)[0]; }, runMegaEvo(pokemon) { if (pokemon.species.isMega) return false; diff --git a/data/random-battles/gen7/teams.ts b/data/random-battles/gen7/teams.ts index 1f427d5304..3f6278ca55 100644 --- a/data/random-battles/gen7/teams.ts +++ b/data/random-battles/gen7/teams.ts @@ -1607,8 +1607,7 @@ export class RandomGen7Teams extends RandomGen8Teams { if (isMonotype) { // Prevents Mega Evolutions from breaking the type limits if (itemData.megaStone) { - const megaSpecies = this.dex.species.get(Array.isArray(itemData.megaStone) ? - itemData.megaStone[0] : itemData.megaStone); + const megaSpecies = this.dex.species.get(Object.values(itemData.megaStone)[0]); if (types.length > megaSpecies.types.length) types = [species.types[0]]; // Only check the second type because a Mega Evolution should always share the first type with its base forme. if (megaSpecies.types[1] && types[1] && megaSpecies.types[1] !== types[1]) { diff --git a/data/rulesets.ts b/data/rulesets.ts index f051d043f3..d3d6f68b63 100644 --- a/data/rulesets.ts +++ b/data/rulesets.ts @@ -1507,17 +1507,9 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { typeTable = typeTable.filter(type => species.types.includes(type)); } const item = this.dex.items.get(set.item); - if (item.megaStone) { - if (Array.isArray(item.megaStone)) { - const index = (item.megaEvolves as string[]).indexOf(species.name); - if (index >= 0) { - species = this.dex.species.get(item.megaStone[index]); - typeTable = typeTable.filter(type => species.types.includes(type)); - } - } else { - species = this.dex.species.get(item.megaStone); - typeTable = typeTable.filter(type => species.types.includes(type)); - } + if (item.megaStone?.[species.name]) { + species = this.dex.species.get(item.megaStone[species.name]); + typeTable = typeTable.filter(type => species.types.includes(type)); } if (item.id === "ultranecroziumz" && species.baseSpecies === "Necrozma") { species = this.dex.species.get("Necrozma-Ultra"); @@ -1556,17 +1548,9 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { } color = species.color; const item = this.dex.items.get(set.item); - if (item.megaStone) { - if (Array.isArray(item.megaStone)) { - const index = (item.megaEvolves as string[]).indexOf(species.name); - if (index >= 0) { - species = this.dex.species.get(item.megaStone[index]); - color = species.color; - } - } else { - species = this.dex.species.get(item.megaStone); - color = species.color; - } + if (item.megaStone?.[species.name]) { + species = this.dex.species.get(item.megaStone[species.name]); + color = species.color; } if (item.id === "ultranecroziumz" && species.baseSpecies === "Necrozma") { species = this.dex.species.get("Necrozma-Ultra"); @@ -2666,12 +2650,10 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { ) { species = this.dex.species.get(`${species.baseSpecies}-Crowned`); } - if (set.item && this.dex.items.get(set.item).megaStone) { + if (set.item) { const item = this.dex.items.get(set.item); - if (item.megaEvolves?.includes(species.name)) { - species = this.dex.species.get(Array.isArray(item.megaEvolves) ? - (item.megaStone as string[])[item.megaEvolves.indexOf(species.name)] : - item.megaStone as string); + if (item.megaStone?.[species.name]) { + species = this.dex.species.get(item.megaStone[species.name]); } } if (this.ruleTable.isRestrictedSpecies(species) || @@ -2693,10 +2675,8 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { } if (set.item) { const item = this.dex.items.get(set.item); - if (item.megaEvolves?.includes(set.species)) { - godSpecies = this.dex.species.get(Array.isArray(item.megaEvolves) ? - (item.megaStone as string[])[item.megaEvolves.indexOf(set.species)] : - item.megaStone as string); + if (item.megaStone?.[set.species]) { + godSpecies = this.dex.species.get(item.megaStone[set.species]); } if (["Zacian", "Zamazenta"].includes(godSpecies.baseSpecies) && item.id.startsWith('rusted')) { godSpecies = this.dex.species.get(set.species + "-Crowned"); diff --git a/server/chat-plugins/othermetas.ts b/server/chat-plugins/othermetas.ts index fd356b3cd5..37a54c70d4 100644 --- a/server/chat-plugins/othermetas.ts +++ b/server/chat-plugins/othermetas.ts @@ -29,14 +29,23 @@ function getMegaStone(stone: string, mod = 'gen9'): Item | null { id: move.id, name: move.name, fullname: move.name, - megaEvolves: 'Rayquaza', - megaStone: 'Rayquaza-Mega', + megaStone: { 'Rayquaza': 'Rayquaza-Mega' }, exists: true, // Adding extra values to appease typescript gen: 6, num: -1, effectType: 'Item', sourceEffect: '', + isBerry: false, + ignoreKlutz: false, + isGem: false, + isPokeball: false, + isPrimalOrb: false, + shortDesc: "", + desc: "", + isNonstandard: null, + noCopy: false, + affectsFainted: false, } as Item; } else { return null; @@ -131,8 +140,8 @@ export const commands: Chat.ChatCommands = { megaSpecies = dex.species.get(forcedForme); baseSpecies = dex.species.get(forcedForme.split('-')[0]); } else { - megaSpecies = dex.species.get(Array.isArray(stone.megaStone) ? stone.megaStone[0] : stone.megaStone); - baseSpecies = dex.species.get(Array.isArray(stone.megaEvolves) ? stone.megaEvolves[0] : stone.megaEvolves); + megaSpecies = dex.species.get(Object.values(stone.megaStone!)[0]); + baseSpecies = dex.species.get(Object.keys(stone.megaStone!)[0]); } break; } @@ -282,8 +291,8 @@ export const commands: Chat.ChatCommands = { megaSpecies = dex.species.get(forcedForme); baseSpecies = dex.species.get(forcedForme.split('-')[0]); } else { - megaSpecies = dex.species.get(Array.isArray(aStone.megaStone) ? aStone.megaStone[0] : aStone.megaStone); - baseSpecies = dex.species.get(Array.isArray(aStone.megaEvolves) ? aStone.megaEvolves[0] : aStone.megaEvolves); + megaSpecies = dex.species.get(Object.values(aStone.megaStone!)[0]); + baseSpecies = dex.species.get(Object.keys(aStone.megaStone!)[0]); } break; } diff --git a/server/chat-plugins/randombattles/ssb.tsx b/server/chat-plugins/randombattles/ssb.tsx index 5f7df25a44..10d2f329d3 100644 --- a/server/chat-plugins/randombattles/ssb.tsx +++ b/server/chat-plugins/randombattles/ssb.tsx @@ -373,7 +373,7 @@ class SSBSetsHTML extends Chat.JSX.Component<{ target: string }> { {(!Array.isArray(set.item) && item.megaStone) && } {/* keys and Kennedy have an itemless forme change */} {['Rayquaza'].includes(set.species) && } diff --git a/server/chat-plugins/randombattles/winrates.tsx b/server/chat-plugins/randombattles/winrates.tsx index cbba1ce0a4..f61e95652f 100644 --- a/server/chat-plugins/randombattles/winrates.tsx +++ b/server/chat-plugins/randombattles/winrates.tsx @@ -134,7 +134,7 @@ export function getSpeciesName(set: PokemonSet, format: Format) { } else if (species === "Groudon" && item.name === "Red Orb") { return "Groudon-Primal"; } else if (item.megaStone) { - return Array.isArray(item.megaStone) ? item.megaStone[0] : item.megaStone; + return Object.values(item.megaStone)[0]; } else if (species === "Rayquaza" && moves.includes('Dragon Ascent') && !item.zMove && megaRayquazaPossible) { return "Rayquaza-Mega"; } else if (species === "Poltchageist-Artisan") { // Babymons from here on out diff --git a/sim/battle-actions.ts b/sim/battle-actions.ts index 55243f4f23..7879fdd6c0 100644 --- a/sim/battle-actions.ts +++ b/sim/battle-actions.ts @@ -1871,21 +1871,15 @@ export class BattleActions { pokemon.baseMoves.includes(toID(altForme.requiredMove)) && !item.zMove) { return altForme.name; } + if (!item.megaStone) return null; // Temporary hardcode until generation shift - if ((species.baseSpecies === "Floette" || species.baseSpecies === "Zygarde") && item.megaEvolves === species.name) { - return item.megaStone as string; + if ((species.baseSpecies === "Floette" || species.baseSpecies === "Zygarde") && item.megaStone[species.name]) { + return item.megaStone[species.name]; } // a hacked-in Megazard X can mega evolve into Megazard Y, but not into Megazard X - if (Array.isArray(item.megaStone)) { - // FIXME: Change to species.name when champions comes - const index = (item.megaEvolves as string[]).indexOf(species.baseSpecies); - if (index < 0) return null; - return item.megaStone[index]; - // FIXME: Change to species.name when champions comes - } else if (item.megaEvolves === species.baseSpecies && item.megaStone !== species.name) { - return item.megaStone; - } - return null; + // FIXME: Change to species.name when champions comes + const megaEvolution = item.megaStone[species.baseSpecies]; + return megaEvolution && megaEvolution !== species.name ? megaEvolution : null; } canUltraBurst(pokemon: Pokemon) { diff --git a/sim/dex-abilities.ts b/sim/dex-abilities.ts index 63e406cc52..c3af1b2ccf 100644 --- a/sim/dex-abilities.ts +++ b/sim/dex-abilities.ts @@ -85,7 +85,7 @@ export class DexAbilities { } getByID(id: ID): Ability { - if (id === '') return EMPTY_ABILITY; + if (id === '' || id === 'constructor') return EMPTY_ABILITY; let ability = this.abilityCache.get(id); if (ability) return ability; diff --git a/sim/dex-conditions.ts b/sim/dex-conditions.ts index 990ce7cd93..057d6f3284 100644 --- a/sim/dex-conditions.ts +++ b/sim/dex-conditions.ts @@ -665,7 +665,7 @@ export class DexConditions { } getByID(id: ID): Condition { - if (id === '') return EMPTY_CONDITION; + if (id === '' || id === 'constructor') return EMPTY_CONDITION; let condition = this.conditionCache.get(id); if (condition) return condition; diff --git a/sim/dex-data.ts b/sim/dex-data.ts index 59c505737c..55c47238a7 100644 --- a/sim/dex-data.ts +++ b/sim/dex-data.ts @@ -172,7 +172,7 @@ export class DexNatures { return this.getByID(toID(name)); } getByID(id: ID): Nature { - if (id === '') return EMPTY_NATURE; + if (id === '' || id === 'constructor') return EMPTY_NATURE; let nature = this.natureCache.get(id); if (nature) return nature; @@ -293,7 +293,7 @@ export class DexTypes { } getByID(id: ID): TypeInfo { - if (id === '') return EMPTY_TYPE_INFO; + if (id === '' || id === 'constructor') return EMPTY_TYPE_INFO; let type = this.typeCache.get(id); if (type) return type; diff --git a/sim/dex-items.ts b/sim/dex-items.ts index ef97fd8f43..d8558177e7 100644 --- a/sim/dex-items.ts +++ b/sim/dex-items.ts @@ -43,17 +43,11 @@ export class Item extends BasicEffect implements Readonly { */ readonly onMemory?: string; /** - * If this is a mega stone: The name (e.g. Charizard-Mega-X) of the - * forme this allows transformation into. + * If this is a mega stone: A pair (e.g. Charizard: Charizard-Mega-X) of the + * forme this allows transformation from and into. * undefined, if not a mega stone. */ - readonly megaStone?: string | string[]; - /** - * If this is a mega stone: The name (e.g. Charizard) of the - * forme this allows transformation from. - * undefined, if not a mega stone. - */ - readonly megaEvolves?: string | string[]; + readonly megaStone?: { [megaEvolves: string]: string }; /** * If this is a Z crystal: true if the Z Crystal is generic * (e.g. Firium Z). If species-specific, the name @@ -116,7 +110,6 @@ export class Item extends BasicEffect implements Readonly { this.onDrive = data.onDrive || undefined; this.onMemory = data.onMemory || undefined; this.megaStone = data.megaStone || undefined; - this.megaEvolves = data.megaEvolves || undefined; this.zMove = data.zMove || undefined; this.zMoveType = data.zMoveType || undefined; this.zMoveFrom = data.zMoveFrom || undefined; @@ -176,7 +169,7 @@ export class DexItems { } getByID(id: ID): Item { - if (id === '') return EMPTY_ITEM; + if (id === '' || id === 'constructor') return EMPTY_ITEM; let item = this.itemCache.get(id); if (item) return item; if (this.dex.getAlias(id)) { diff --git a/sim/dex-moves.ts b/sim/dex-moves.ts index 63f9a13afa..5b56490430 100644 --- a/sim/dex-moves.ts +++ b/sim/dex-moves.ts @@ -621,7 +621,7 @@ export class DexMoves { } getByID(id: ID): Move { - if (id === '') return EMPTY_MOVE; + if (id === '' || id === 'constructor') return EMPTY_MOVE; let move = this.moveCache.get(id); if (move) return move; if (this.dex.getAlias(id)) { diff --git a/sim/dex-species.ts b/sim/dex-species.ts index fab61861ca..4a05d4ca0c 100644 --- a/sim/dex-species.ts +++ b/sim/dex-species.ts @@ -436,7 +436,7 @@ export class DexSpecies { } getByID(id: ID): Species { - if (id === '') return EMPTY_SPECIES; + if (id === '' || id === 'constructor') return EMPTY_SPECIES; let species: Mutable | undefined = this.speciesCache.get(id); if (species) return species; diff --git a/sim/team-validator.ts b/sim/team-validator.ts index 8d234a9ea7..e109837780 100644 --- a/sim/team-validator.ts +++ b/sim/team-validator.ts @@ -526,14 +526,8 @@ export class TeamValidator { if (ruleTable.has('obtainableformes')) { const canMegaEvo = dex.gen <= 7 || ruleTable.has('+pokemontag:past'); - if (item.megaEvolves?.includes(species.name)) { - if (!item.megaStone) throw new Error(`Item ${item.name} has no base form for mega evolution`); - if (Array.isArray(item.megaEvolves)) { - const idx = item.megaEvolves.indexOf(species.name); - tierSpecies = dex.species.get(item.megaStone[idx]); - } else { - tierSpecies = dex.species.get(item.megaStone as string); - } + if (item.megaStone?.[species.name]) { + tierSpecies = dex.species.get(item.megaStone[species.name]); } else if (item.id === 'redorb' && species.id === 'groudon') { tierSpecies = dex.species.get('Groudon-Primal'); } else if (item.id === 'blueorb' && species.id === 'kyogre') { diff --git a/sim/tools/exhaustive-runner.ts b/sim/tools/exhaustive-runner.ts index db239828ae..90cdecad54 100644 --- a/sim/tools/exhaustive-runner.ts +++ b/sim/tools/exhaustive-runner.ts @@ -137,8 +137,8 @@ export class ExhaustiveRunner { const signatures = new Map(); for (const id of pools.items.possible) { const item = dex.data.Items[id]; - if (item.megaEvolves) { - const pokemon = toID(item.megaEvolves); + if (item.megaStone) { + const pokemon = toID(Object.keys(item.megaStone)[0]); const combo = { item: id }; let combos = signatures.get(pokemon); if (!combos) { diff --git a/test/sim/data.js b/test/sim/data.js index dcae534243..9c8f96a2c5 100644 --- a/test/sim/data.js +++ b/test/sim/data.js @@ -132,12 +132,6 @@ describe('Dex data', () => { const entry = Items[itemid]; assert.equal(toID(entry.name), itemid, `Mismatched Item key "${itemid}" of "${entry.name}"`); assert.equal(typeof entry.num, 'number', `Item ${entry.name} should have a number`); - if (entry.megaStone) { - assert.equal(typeof entry.megaStone, typeof entry.megaEvolves, `Item ${entry.name} megaStone and megaEvolves should both be the same type`); - if (Array.isArray(entry.megaStone)) { - assert.equal(entry.megaStone.length, entry.megaEvolves.length, `Item ${entry.name} megaStone and megaEvolves arrays should be the same length`); - } - } } }); diff --git a/tools/set-import/importer.ts b/tools/set-import/importer.ts index 9458ad0d7f..ab59d11bd2 100644 --- a/tools/set-import/importer.ts +++ b/tools/set-import/importer.ts @@ -312,7 +312,8 @@ function skip(dex: ModdedDex, format: Format, pokemon: string, set: DeepPartial< if (pokemon === 'Rayquaza-Mega') { return format.id.includes('ubers') || !hasMove('Dragon Ascent'); } else { - return dex.items.get(set.item).megaStone !== pokemon; + const item = dex.items.get(set.item); + return !item.megaStone || !Object.values(item.megaStone).includes(pokemon); } } if (pokemon === 'Necrozma-Ultra' && set.item !== 'Ultranecrozium Z') return true; From dd421f7466b44fd821c53d53058c2413a246cab4 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Thu, 8 Jan 2026 21:43:25 -0700 Subject: [PATCH 049/139] Add old gens of Mix and Mega for MnMPL --- config/formats.ts | 289 +++++++++++++++++++++------- data/mods/gen6mixandmega/items.ts | 46 +++++ data/mods/gen6mixandmega/scripts.ts | 117 +++++++++++ data/mods/gen7mixandmega/items.ts | 46 +++++ data/mods/gen7mixandmega/scripts.ts | 121 ++++++++++++ data/mods/gen8mixandmega/scripts.ts | 115 +++++++++++ data/mods/mixandmega/scripts.ts | 10 +- 7 files changed, 671 insertions(+), 73 deletions(-) create mode 100644 data/mods/gen6mixandmega/items.ts create mode 100644 data/mods/gen6mixandmega/scripts.ts create mode 100644 data/mods/gen7mixandmega/items.ts create mode 100644 data/mods/gen7mixandmega/scripts.ts create mode 100644 data/mods/gen8mixandmega/scripts.ts diff --git a/config/formats.ts b/config/formats.ts index 15e48b217f..b72d9cff53 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2760,91 +2760,242 @@ export const Formats: import('../sim/dex-formats').FormatList = [ section: "Temporary Tour Metas", }, { - name: "[Gen 9] AAA Doubles", - desc: `Pokémon have access to almost any ability.`, - mod: 'gen9', + name: "[Gen 9] Mix and Mega LC", + desc: `Mega evolve any Pokémon with any mega stone, or transform them with Genesect Drives, Primal orbs, Origin orbs, Rusted items, Ogerpon Masks, Arceus Plates, and Silvally Memories with no limit. Mega and Primal boosts based on form changes from gen 7.`, + mod: 'mixandmega', searchShow: false, - gameType: 'doubles', - ruleset: ['Standard Doubles', 'Evasion Abilities Clause', 'Standard OMs', 'Sleep Moves Clause', '!Obtainable Abilities', 'Ability Clause = 2'], + ruleset: ['Standard OMs', 'Little Cup', 'Sleep Clause Mod', 'Terastal Clause'], banlist: [ - 'Annihilape', 'Arceus', 'Basculegion-M', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dragonite', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', 'Eternatus', 'Flutter Mane', - 'Gholdengo', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyurem-White', 'Kyurem-Black', 'Koraidon', 'Kyogre', 'Lugia', 'Lunala', 'Mewtwo', 'Miraidon', - 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Raging Bolt', 'Regigigas', 'Reshiram', 'Solgaleo', 'Slaking', 'Terapagos', - 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Anger Point', 'Arena Trap', 'Comatose', 'Commander', 'Contrary', 'Costar', 'Dancer', - 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Orichalcum Pulse', 'Moody', 'Neutralizing Gas', 'Parental Bond', - 'Prankster', 'Pure Power', 'Serene Grace', 'Shadow Tag', 'Simple', 'Soul-Heart', 'Stamina', 'Steam Engine', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Razor Fang', - 'Beat Up', + 'Basculin-White-Striped', 'Dunsparce', 'Duraludon', 'Meditite', 'Rufflet', 'Scyther', 'Sneasel', 'Sneasel-Hisui', 'Stantler', 'Moody', + 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Lucarionite Z', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Zygardite', + 'Baton Pass', ], + restricted: [ + 'Aipom', 'Buizel', 'Cutiefly', 'Dratini', 'Elekid', 'Gastly', 'Girafarig', 'Gligar', 'Mienfoo', + 'Misdreavus', 'Murkrow', 'Pawniard', 'Qwilfish-Hisui', 'Voltorb-Hisui', 'Wattrel', 'Yanma', + ], + onValidateTeam(team) { + const itemTable = new Set(); + for (const set of team) { + const item = this.dex.items.get(set.item); + if (!(item.forcedForme && !item.zMove) && !item.megaStone && + !item.isPrimalOrb && !item.name.startsWith('Rusted')) continue; + const natdex = this.ruleTable.has('natdexmod'); + if (natdex && item.id !== 'ultranecroziumz') continue; + const species = this.dex.species.get(set.species); + if (species.isNonstandard && !this.ruleTable.has(`+pokemontag:${this.toID(species.isNonstandard)}`)) { + return [`${species.baseSpecies} does not exist in gen 9.`]; + } + if (((item.itemUser?.includes(species.name) || item.forcedForme === species.name) && + !item.megaStone && !item.isPrimalOrb) || (natdex && species.name.startsWith('Necrozma-') && + item.id === 'ultranecroziumz')) { + continue; + } + if (this.ruleTable.isRestrictedSpecies(species) || this.toID(set.ability) === 'powerconstruct') { + return [`${species.name} is not allowed to hold ${item.name}.`]; + } + if (itemTable.has(item.id)) { + return [ + `You are limited to one of each Mega Stone/Primal Orb/Rusted item/Origin item/Ogerpon Mask/Arceus Plate/Silvally Memory.`, + `(You have more than one ${item.name})`, + ]; + } + itemTable.add(item.id); + } + }, + onBegin() { + for (const pokemon of this.getAllPokemon()) { + pokemon.m.originalSpecies = pokemon.baseSpecies.name; + } + }, + onSwitchIn(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + // Place volatiles on the Pokémon to show its mega-evolved condition and details + this.add('-start', pokemon, originalSpecies.requiredItems?.[0] || originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + }, + onSwitchOut(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + this.add('-end', pokemon, originalSpecies.requiredItems?.[0] || originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + } + }, }, { - name: "[Gen 9] AAA Ubers", - desc: `Pokémon have access to almost any ability.`, - mod: 'gen9', + name: "[Gen 8] Mix and Mega", + desc: `Mega evolve any Pokémon with any mega stone with no limit. Boosts based on mega evolution from gen 7.`, + mod: 'gen8mixandmega', searchShow: false, - ruleset: ['Standard OMs', 'Sleep Moves Clause', '!Obtainable Abilities', 'Terastal Clause'], + ruleset: ['Standard', 'Dynamax Clause', 'Overflow Stat Mod'], banlist: [ - 'Calyrex-Shadow', 'Slaking', 'Arena Trap', 'Comatose', 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Imposter', - 'Innards Out', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Pure Power', 'Shadow Tag', 'Simple', 'Stakeout', - 'Speed Boost', 'Water Bubble', 'Wonder Guard', 'Baton Pass', + 'Calyrex-Shadow', 'Eternatus', 'Kyogre', 'Zacian', 'Zacian-Crowned', 'Moody', 'Shadow Tag', 'Beedrillite', 'Blazikenite', + 'Gengarite', 'Kangaskhanite', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Baton Pass', 'Electrify', ], + restricted: [ + 'Calyrex-Ice', 'Dialga', 'Gengar', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Marshadow', 'Melmetal', 'Mewtwo', + 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Urshifu', 'Urshifu-Rapid-Strike', 'Solgaleo', + 'Xerneas', 'Yveltal', 'Zekrom', 'Power Construct', + ], + onValidateTeam(team) { + const itemTable = new Set(); + for (const set of team) { + const item = this.dex.items.get(set.item); + if (!item.megaStone) continue; + const species = this.dex.species.get(set.species); + const ability = this.dex.abilities.get(set.ability); + if (this.ruleTable.isRestricted(`item:${item.id}`) || this.ruleTable.isRestricted(`ability:${ability.id}`)) { + return [`${species.name} is not allowed to hold ${item.name}.`]; + } + if (itemTable.has(item.id)) { + return [ + `You are limited to one of each Mega Stone.`, + `(You have more than one ${item.name})`, + ]; + } + itemTable.add(item.id); + } + }, + onBegin() { + for (const pokemon of this.getAllPokemon()) { + pokemon.m.originalSpecies = pokemon.baseSpecies.name; + } + }, + onSwitchIn(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + // Place volatiles on the Pokémon to show its mega-evolved condition and details + this.add('-start', pokemon, originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + }, + onSwitchOut(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + this.add('-end', pokemon, originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + } + }, }, { - name: "[Gen 9] AAA UU", - desc: `Pokémon have access to almost any ability.`, - mod: 'gen9', + name: "[Gen 7] Mix and Mega", + desc: `Mega evolve any Pokémon with any mega stone, or transform them with Primal orbs, with no limit.`, + mod: 'gen7mixandmega', searchShow: false, - ruleset: ['[Gen 9] Almost Any Ability'], - banlist: [ - 'Archaludon', 'Brambleghast', 'Chien-Pao', 'Cinderace', 'Cobalion', 'Corviknight', 'Deoxys-Speed', 'Empoleon', 'Excadrill', 'Garchomp', 'Gholdengo', 'Gliscor', - 'Goodra-Hisui', 'Great Tusk', 'Heatran', 'Hydreigon', 'Iron Boulder', 'Iron Crown', 'Iron Hands', 'Iron Moth', 'Iron Treads', 'Kingambit', 'Landorus-Incarnate', - 'Landorus-Therian', 'Latios', 'Mamoswine', 'Manaphy', 'Meowscarada', 'Moltres-Base', 'Ogerpon-Cornerstone', 'Ogerpon-Hearthflame', 'Ogerpon-Wellspring', 'Pecharunt', - 'Primarina', 'Roaring Moon', 'Sandy Shocks', 'Scream Tail', 'Sinistcha', 'Skarmory', 'Slither Wing', 'Swampert', 'Thundurus-Incarnate', 'Thundurus-Therian', 'Ting-Lu', - 'Tinkaton', 'Ursaluna-Bloodmoon', 'Zamazenta-Hero', 'Zamazenta-Crowned', 'Zapdos-Base', 'Zapdos-Galar', 'Zarude', 'Light Clay', + ruleset: ['Standard', 'Mega Rayquaza Clause', 'Overflow Stat Mod'], + banlist: ['Shadow Tag', 'Gengarite', 'Baton Pass', 'Electrify'], + restricted: [ + 'Beedrillite', 'Blazikenite', 'Kangaskhanite', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Ultranecrozium Z', 'Power Construct', + 'Arceus', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dragonite', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', + 'Landorus-Therian', 'Lugia', 'Lunala', 'Marshadow', 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Pheromosa', 'Rayquaza', + 'Regigigas', 'Reshiram', 'Shuckle', 'Slaking', 'Solgaleo', 'Xerneas', 'Yveltal', 'Zekrom', ], + onValidateTeam(team) { + const itemTable = new Set(); + for (const set of team) { + const item = this.dex.items.get(set.item); + if (!item.megaStone && !item.isPrimalOrb && item.id !== 'ultranecroziumz') continue; + const species = this.dex.species.get(set.species); + const ability = this.dex.abilities.get(set.ability); + if ( + ((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies)) || + (item.id === 'ultranecroziumz' && species.name.startsWith('Necrozma-')) + ) continue; + if (this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`) || + this.ruleTable.isRestricted(`ability:${ability.id}`)) { + return [`${species.name} is not allowed to hold ${item.name}.`]; + } + if (itemTable.has(item.id)) { + return [ + `You are limited to one of each Mega Stone/Primal Orb.`, + `(You have more than one ${item.name})`, + ]; + } + itemTable.add(item.id); + } + }, + onBegin() { + for (const pokemon of this.getAllPokemon()) { + pokemon.m.originalSpecies = pokemon.baseSpecies.name; + } + }, + onSwitchIn(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + // Place volatiles on the Pokémon to show its mega-evolved condition and details + this.add('-start', pokemon, originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + }, + onSwitchOut(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + this.add('-end', pokemon, originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + } + }, }, { - name: "[Gen 8] Almost Any Ability", - desc: `Pokémon have access to almost any ability.`, - mod: 'gen8', + name: "[Gen 6] Mix and Mega", + desc: `Mega evolve any Pokémon with any mega stone, or transform them with Primal orbs, with no limit.`, + mod: 'gen6mixandmega', searchShow: false, - ruleset: ['Standard OMs', 'Ability Clause = 2', '!Obtainable Abilities', 'Sleep Moves Clause'], - banlist: [ - 'Archeops', 'Blacephalon', 'Buzzwole', 'Calyrex-Ice', 'Calyrex-Shadow', 'Dialga', 'Dracovish', 'Dragapult', 'Dragonite', 'Eternatus', 'Genesect', 'Gengar', 'Giratina', - 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kartana', 'Keldeo', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Marshadow', 'Melmetal', - 'Mewtwo', 'Naganadel', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Palkia', 'Pheromosa', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shedinja', 'Solgaleo', - 'Spectrier', 'Urshifu', 'Urshifu-Rapid-Strike', 'Victini', 'Weavile', 'Xerneas', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Hero', 'Zekrom', 'Zeraora', 'Zygarde-50%', - 'Arena Trap', 'Comatose', 'Contrary', 'Fluffy', 'Fur Coat', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Intrepid Sword', - 'Libero', 'Magic Bounce', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Poison Heal', 'Protean', 'Pure Power', 'Shadow Tag', 'Simple', 'Speed Boost', - 'Stakeout', 'Unburden', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Baton Pass', 'Electrify', + ruleset: ['Standard', 'Swagger Clause', 'Mega Rayquaza Clause', 'Overflow Stat Mod', '!Sleep Clause Mod', 'Sleep Moves Clause'], + banlist: ['Shadow Tag', 'Baton Pass', 'Electrify'], + restricted: [ + 'Beedrillite', 'Gengarite', 'Kangaskhanite', 'Mawilite', 'Medichamite', + 'Arceus', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Dialga', 'Dragonite', 'Genesect', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', + 'Kyurem-White', 'Lugia', 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shaymin-Sky', 'Slaking', 'Xerneas', 'Yveltal', 'Zekrom', ], - }, - { - name: "[Gen 8] Balanced Hackmons", - desc: `Anything directly hackable onto a set (EVs, IVs, forme, ability, item, and move) and is usable in local battles is allowed.`, - mod: 'gen8', - searchShow: false, - ruleset: ['-Nonexistent', 'OHKO Clause', 'Evasion Moves Clause', 'Forme Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Dynamax Clause', 'Sleep Moves Clause', 'Endless Battle Clause'], - banlist: [ - 'Calyrex-Shadow', 'Cramorant-Gorging', 'Darmanitan-Galar-Zen', 'Eternatus-Eternamax', 'Shedinja', 'Zacian-Crowned', - 'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Huge Power', 'Illusion', 'Innards Out', 'Intrepid Sword', 'Libero', - 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Parental Bond', 'Protean', 'Pure Power', 'Shadow Tag', 'Stakeout', - 'Water Bubble', 'Wonder Guard', 'Comatose + Sleep Talk', 'Rusted Sword', 'Belly Drum', 'Bolt Beak', 'Court Change', - 'Double Iron Bash', 'Octolock', 'Shell Smash', 'Transform', - ], - unbanlist: ['Acupressure'], - }, - { - name: "[Gen 7] Balanced Hackmons", - desc: `Anything directly hackable onto a set (EVs, IVs, forme, ability, item, and move) and is usable in local battles is allowed.`, - mod: 'gen7', - searchShow: false, - ruleset: ['-Nonexistent', 'Ability Clause = 2', 'CFZ Clause', 'OHKO Clause', 'Evasion Moves Clause', 'Forme Clause', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Moves Clause', 'Endless Battle Clause'], - banlist: [ - 'Groudon-Primal', 'Rayquaza-Mega', 'Arena Trap', 'Contrary', 'Huge Power', 'Illusion', 'Innards Out', 'Magnet Pull', 'Moody', - 'Parental Bond', 'Protean', 'Psychic Surge', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble', 'Wonder Guard', 'Gengarite', - 'Baton Pass', 'Belly Drum', 'Chatter', 'Electrify', 'Shell Smash', - ], - unbanlist: ['Acupressure'], + onValidateTeam(team) { + const itemTable = new Set(); + for (const set of team) { + const item = this.dex.items.get(set.item); + if (!item.megaStone && !item.isPrimalOrb) continue; + const species = this.dex.species.get(set.species); + if ((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies)) continue; + if (this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`)) { + return [`${species.name} is not allowed to hold ${item.name}.`]; + } + if (itemTable.has(item.id)) { + return [ + `You are limited to one of each Mega Stone/Primal Orb.`, + `(You have more than one ${item.name})`, + ]; + } + itemTable.add(item.id); + } + }, + onBegin() { + for (const pokemon of this.getAllPokemon()) { + pokemon.m.originalSpecies = pokemon.baseSpecies.name; + } + }, + onSwitchIn(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + // Place volatiles on the Pokémon to show its mega-evolved condition and details + this.add('-start', pokemon, originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + }, + onSwitchOut(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + this.add('-end', pokemon, originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + } + }, }, // National Dex diff --git a/data/mods/gen6mixandmega/items.ts b/data/mods/gen6mixandmega/items.ts new file mode 100644 index 0000000000..f02eb9841b --- /dev/null +++ b/data/mods/gen6mixandmega/items.ts @@ -0,0 +1,46 @@ +export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { + blueorb: { + inherit: true, + onSwitchIn(pokemon) { + if (pokemon.isActive && !pokemon.species.isPrimal && !pokemon.transformed) { + // @ts-expect-error modded + const species: Species = this.actions.getMixedSpecies(pokemon.m.originalSpecies, 'Kyogre-Primal', pokemon); + if (pokemon.m.originalSpecies === 'Kyogre') { + pokemon.formeChange(species, this.effect, true); + } else { + pokemon.formeChange(species, this.effect, true); + pokemon.baseSpecies = species; + this.add('-start', pokemon, 'Blue Orb', '[silent]'); + } + } + }, + onTakeItem: false, + }, + redorb: { + inherit: true, + onSwitchIn(pokemon) { + if (pokemon.isActive && !pokemon.species.isPrimal && !pokemon.transformed) { + // @ts-expect-error modded + const species: Species = this.actions.getMixedSpecies(pokemon.m.originalSpecies, 'Groudon-Primal', pokemon); + if (pokemon.m.originalSpecies === 'Groudon') { + pokemon.formeChange(species, this.effect, true); + } else { + pokemon.formeChange(species, this.effect, true); + pokemon.baseSpecies = species; + this.add('-start', pokemon, 'Red Orb', '[silent]'); + const apparentSpecies = pokemon.illusion ? pokemon.illusion.species.name : pokemon.m.originalSpecies; + const oSpecies = this.dex.species.get(apparentSpecies); + if (pokemon.illusion) { + const types = oSpecies.types; + if (types.length > 1 || types[types.length - 1] !== 'Fire') { + this.add('-start', pokemon, 'typechange', (types[0] !== 'Fire' ? types[0] + '/' : '') + 'Fire', '[silent]'); + } + } else if (oSpecies.types.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + } + }, + onTakeItem: false, + }, +}; diff --git a/data/mods/gen6mixandmega/scripts.ts b/data/mods/gen6mixandmega/scripts.ts new file mode 100644 index 0000000000..e4b67ff9c7 --- /dev/null +++ b/data/mods/gen6mixandmega/scripts.ts @@ -0,0 +1,117 @@ +export const Scripts: ModdedBattleScriptsData = { + gen: 6, + inherit: 'gen6', + init() { + for (const i in this.data.Items) { + if (!this.data.Items[i].megaStone) continue; + this.modData('Items', i).onTakeItem = false; + } + }, + actions: { + canMegaEvo(pokemon) { + if (pokemon.species.isMega || pokemon.species.isPrimal) return null; + + const item = pokemon.getItem(); + if (item.megaStone) { + const values = Object.values(item.megaStone); + if (values.includes(pokemon.name)) return null; + return values[0]; + } else if (pokemon.baseMoves.includes('dragonascent')) { + return 'Rayquaza-Mega'; + } else { + return null; + } + }, + runMegaEvo(pokemon) { + if (pokemon.species.isMega || pokemon.species.isPrimal) return false; + + const species: Species = (this as any).getMixedSpecies(pokemon.m.originalSpecies, pokemon.canMegaEvo, pokemon); + + // Do we have a proper sprite for it? Code for when megas actually exist + if (this.dex.species.get(pokemon.canMegaEvo as any).baseSpecies === pokemon.m.originalSpecies) { + pokemon.formeChange(species, pokemon.getItem(), true); + } else { + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + const oMegaSpecies = this.dex.species.get((species as any).originalSpecies); + pokemon.formeChange(species, pokemon.getItem(), true); + this.battle.add('-start', pokemon, oMegaSpecies.requiredItem, '[silent]'); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.battle.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + + pokemon.canMegaEvo = false; + return true; + }, + getMixedSpecies(originalForme, formeChange, pokemon) { + const originalSpecies = this.dex.species.get(originalForme); + const formeChangeSpecies = this.dex.species.get(formeChange); + if (originalSpecies.baseSpecies === formeChangeSpecies.baseSpecies) { + return formeChangeSpecies; + } + const deltas = (this as any).getFormeChangeDeltas(formeChangeSpecies, pokemon); + const species = (this as any).mutateOriginalSpecies(originalSpecies, deltas); + return species; + }, + getFormeChangeDeltas(formeChangeSpecies, pokemon) { + // Should be fine as long as Necrozma-U doesn't get added or Game Freak makes me sad with some convoluted forme change + const baseSpecies = this.dex.species.get(formeChangeSpecies.isMega ? + formeChangeSpecies.battleOnly as string : formeChangeSpecies.baseSpecies); + const deltas: { + ability: string, + baseStats: SparseStatsTable, + weighthg: number, + heightm: number, + originalSpecies: string, + requiredItem: string | undefined, + type?: string, + formeType?: string, + isMega?: boolean, + } = { + ability: formeChangeSpecies.abilities['0'], + baseStats: {}, + weighthg: formeChangeSpecies.weighthg - baseSpecies.weighthg, + heightm: ((formeChangeSpecies.heightm * 10) - (baseSpecies.heightm * 10)) / 10, + originalSpecies: formeChangeSpecies.name, + requiredItem: formeChangeSpecies.requiredItem, + }; + let statId: StatID; + for (statId in formeChangeSpecies.baseStats) { + deltas.baseStats[statId] = formeChangeSpecies.baseStats[statId] - baseSpecies.baseStats[statId]; + } + let formeType: string | null = null; + if (formeChangeSpecies.types.length > baseSpecies.types.length) { + deltas.type = formeChangeSpecies.types[1]; + } else if (formeChangeSpecies.types.length < baseSpecies.types.length) { + deltas.type = baseSpecies.types[0]; + } else if (formeChangeSpecies.types[1] !== baseSpecies.types[1]) { + deltas.type = formeChangeSpecies.types[1]; + } + if (formeChangeSpecies.isMega && !formeType) formeType = 'Mega'; + if (formeChangeSpecies.isPrimal) formeType = 'Primal'; + if (formeType) deltas.formeType = formeType; + return deltas; + }, + mutateOriginalSpecies(speciesOrForme, deltas) { + if (!deltas) throw new TypeError("Must specify deltas!"); + const species = this.dex.deepClone(this.dex.species.get(speciesOrForme)); + species.abilities = { '0': deltas.ability }; + if (species.types[0] === deltas.type) { + species.types = [deltas.type]; + } else if (deltas.type) { + species.types = [species.types[0], deltas.type]; + } + const baseStats = species.baseStats; + for (const statName in baseStats) { + baseStats[statName] = this.battle.clampIntRange(baseStats[statName] + deltas.baseStats[statName], 1, 255); + } + species.weighthg = Math.max(1, species.weighthg + deltas.weighthg); + species.heightm = Math.max(0.1, ((species.heightm * 10) + (deltas.heightm * 10)) / 10); + species.originalSpecies = deltas.originalSpecies; + species.requiredItem = deltas.requiredItem; + if (deltas.formeType === 'Mega' || deltas.isMega) species.isMega = true; + if (deltas.formeType === 'Primal') species.isPrimal = true; + return species; + }, + }, +}; diff --git a/data/mods/gen7mixandmega/items.ts b/data/mods/gen7mixandmega/items.ts new file mode 100644 index 0000000000..f02eb9841b --- /dev/null +++ b/data/mods/gen7mixandmega/items.ts @@ -0,0 +1,46 @@ +export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { + blueorb: { + inherit: true, + onSwitchIn(pokemon) { + if (pokemon.isActive && !pokemon.species.isPrimal && !pokemon.transformed) { + // @ts-expect-error modded + const species: Species = this.actions.getMixedSpecies(pokemon.m.originalSpecies, 'Kyogre-Primal', pokemon); + if (pokemon.m.originalSpecies === 'Kyogre') { + pokemon.formeChange(species, this.effect, true); + } else { + pokemon.formeChange(species, this.effect, true); + pokemon.baseSpecies = species; + this.add('-start', pokemon, 'Blue Orb', '[silent]'); + } + } + }, + onTakeItem: false, + }, + redorb: { + inherit: true, + onSwitchIn(pokemon) { + if (pokemon.isActive && !pokemon.species.isPrimal && !pokemon.transformed) { + // @ts-expect-error modded + const species: Species = this.actions.getMixedSpecies(pokemon.m.originalSpecies, 'Groudon-Primal', pokemon); + if (pokemon.m.originalSpecies === 'Groudon') { + pokemon.formeChange(species, this.effect, true); + } else { + pokemon.formeChange(species, this.effect, true); + pokemon.baseSpecies = species; + this.add('-start', pokemon, 'Red Orb', '[silent]'); + const apparentSpecies = pokemon.illusion ? pokemon.illusion.species.name : pokemon.m.originalSpecies; + const oSpecies = this.dex.species.get(apparentSpecies); + if (pokemon.illusion) { + const types = oSpecies.types; + if (types.length > 1 || types[types.length - 1] !== 'Fire') { + this.add('-start', pokemon, 'typechange', (types[0] !== 'Fire' ? types[0] + '/' : '') + 'Fire', '[silent]'); + } + } else if (oSpecies.types.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + } + }, + onTakeItem: false, + }, +}; diff --git a/data/mods/gen7mixandmega/scripts.ts b/data/mods/gen7mixandmega/scripts.ts new file mode 100644 index 0000000000..8f056ff19e --- /dev/null +++ b/data/mods/gen7mixandmega/scripts.ts @@ -0,0 +1,121 @@ +export const Scripts: ModdedBattleScriptsData = { + gen: 7, + inherit: 'gen7', + init() { + for (const i in this.data.Items) { + if (!this.data.Items[i].megaStone) continue; + this.modData('Items', i).onTakeItem = false; + } + }, + actions: { + canMegaEvo(pokemon) { + if (pokemon.species.isMega || pokemon.species.isPrimal) return null; + + const item = pokemon.getItem(); + if (item.megaStone) { + const values = Object.values(item.megaStone); + if (values.includes(pokemon.name)) return null; + return values[0]; + } else if (pokemon.baseMoves.includes('dragonascent')) { + return 'Rayquaza-Mega'; + } else { + return null; + } + }, + runMegaEvo(pokemon) { + if (pokemon.species.isMega || pokemon.species.isPrimal) return false; + + const isUltraBurst = !pokemon.canMegaEvo; + + const species: Species = (this as any).getMixedSpecies(pokemon.m.originalSpecies, + pokemon.canMegaEvo || pokemon.canUltraBurst, pokemon); + + // Do we have a proper sprite for it? Code for when megas actually exist + if (isUltraBurst || this.dex.species.get(pokemon.canMegaEvo as any).baseSpecies === pokemon.m.originalSpecies) { + pokemon.formeChange(species, pokemon.getItem(), true); + } else { + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + const oMegaSpecies = this.dex.species.get((species as any).originalSpecies); + pokemon.formeChange(species, pokemon.getItem(), true); + this.battle.add('-start', pokemon, oMegaSpecies.requiredItem, '[silent]'); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.battle.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + } + + pokemon.canMegaEvo = false; + if (isUltraBurst) pokemon.canUltraBurst = null; + return true; + }, + getMixedSpecies(originalForme, formeChange, pokemon) { + const originalSpecies = this.dex.species.get(originalForme); + const formeChangeSpecies = this.dex.species.get(formeChange); + if (originalSpecies.baseSpecies === formeChangeSpecies.baseSpecies) { + return formeChangeSpecies; + } + const deltas = (this as any).getFormeChangeDeltas(formeChangeSpecies, pokemon); + const species = (this as any).mutateOriginalSpecies(originalSpecies, deltas); + return species; + }, + getFormeChangeDeltas(formeChangeSpecies, pokemon) { + // Should be fine as long as Necrozma-U doesn't get added or Game Freak makes me sad with some convoluted forme change + const baseSpecies = this.dex.species.get(formeChangeSpecies.isMega ? + formeChangeSpecies.battleOnly as string : formeChangeSpecies.baseSpecies); + const deltas: { + ability: string, + baseStats: SparseStatsTable, + weighthg: number, + heightm: number, + originalSpecies: string, + requiredItem: string | undefined, + type?: string, + formeType?: string, + isMega?: boolean, + } = { + ability: formeChangeSpecies.abilities['0'], + baseStats: {}, + weighthg: formeChangeSpecies.weighthg - baseSpecies.weighthg, + heightm: ((formeChangeSpecies.heightm * 10) - (baseSpecies.heightm * 10)) / 10, + originalSpecies: formeChangeSpecies.name, + requiredItem: formeChangeSpecies.requiredItem, + }; + let statId: StatID; + for (statId in formeChangeSpecies.baseStats) { + deltas.baseStats[statId] = formeChangeSpecies.baseStats[statId] - baseSpecies.baseStats[statId]; + } + let formeType: string | null = null; + if (formeChangeSpecies.types.length > baseSpecies.types.length) { + deltas.type = formeChangeSpecies.types[1]; + } else if (formeChangeSpecies.types.length < baseSpecies.types.length) { + deltas.type = baseSpecies.types[0]; + } else if (formeChangeSpecies.types[1] !== baseSpecies.types[1]) { + deltas.type = formeChangeSpecies.types[1]; + } + if (formeChangeSpecies.isMega && !formeType) formeType = 'Mega'; + if (formeChangeSpecies.isPrimal) formeType = 'Primal'; + if (formeType) deltas.formeType = formeType; + return deltas; + }, + mutateOriginalSpecies(speciesOrForme, deltas) { + if (!deltas) throw new TypeError("Must specify deltas!"); + const species = this.dex.deepClone(this.dex.species.get(speciesOrForme)); + species.abilities = { '0': deltas.ability }; + if (species.types[0] === deltas.type) { + species.types = [deltas.type]; + } else if (deltas.type) { + species.types = [species.types[0], deltas.type]; + } + const baseStats = species.baseStats; + for (const statName in baseStats) { + baseStats[statName] = this.battle.clampIntRange(baseStats[statName] + deltas.baseStats[statName], 1, 255); + } + species.weighthg = Math.max(1, species.weighthg + deltas.weighthg); + species.heightm = Math.max(0.1, ((species.heightm * 10) + (deltas.heightm * 10)) / 10); + species.originalSpecies = deltas.originalSpecies; + species.requiredItem = deltas.requiredItem; + if (deltas.formeType === 'Mega' || deltas.isMega) species.isMega = true; + if (deltas.formeType === 'Primal') species.isPrimal = true; + return species; + }, + }, +}; diff --git a/data/mods/gen8mixandmega/scripts.ts b/data/mods/gen8mixandmega/scripts.ts new file mode 100644 index 0000000000..e59a9f14ea --- /dev/null +++ b/data/mods/gen8mixandmega/scripts.ts @@ -0,0 +1,115 @@ +export const Scripts: ModdedBattleScriptsData = { + gen: 8, + inherit: 'gen8', + init() { + for (const i in this.data.Items) { + const item = this.data.Items[i]; + if (!item.megaStone || item.isNonstandard !== 'Past') continue; + this.modData('Items', i).onTakeItem = false; + this.modData('Items', i).isNonstandard = null; + if (item.megaStone) { + for (const megaEvo of Object.values(item.megaStone)) { + this.modData('FormatsData', this.toID(megaEvo)).isNonstandard = null; + } + } + } + }, + actions: { + canMegaEvo(pokemon) { + if (pokemon.species.isMega) return null; + + const item = pokemon.getItem(); + if (!item.megaStone) return null; + return Object.values(item.megaStone)[0]; + }, + runMegaEvo(pokemon) { + if (pokemon.species.isMega) return false; + + const species: Species = (this as any).getMixedSpecies(pokemon.m.originalSpecies, pokemon.canMegaEvo, pokemon); + + /* Do we have a proper sprite for it? Code for when megas actually exist + if (this.dex.species.get(pokemon.canMegaEvo!).baseSpecies === pokemon.m.originalSpecies) { + pokemon.formeChange(species, pokemon.getItem(), true); + } else { */ + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + const oMegaSpecies = this.dex.species.get((species as any).originalSpecies); + pokemon.formeChange(species, pokemon.getItem(), true); + this.battle.add('-start', pokemon, oMegaSpecies.requiredItem, '[silent]'); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.battle.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + } + // } + + pokemon.canMegaEvo = false; + return true; + }, + getMixedSpecies(originalForme, formeChange, pokemon) { + const originalSpecies = this.dex.species.get(originalForme); + const formeChangeSpecies = this.dex.species.get(formeChange); + const deltas = (this as any).getFormeChangeDeltas(formeChangeSpecies, pokemon); + const species = (this as any).mutateOriginalSpecies(originalSpecies, deltas); + return species; + }, + getFormeChangeDeltas(formeChangeSpecies, pokemon) { + // Should be fine as long as Necrozma-U doesn't get added or Game Freak makes me sad with some convoluted forme change + let baseSpecies = this.dex.species.get(formeChangeSpecies.isMega ? + formeChangeSpecies.battleOnly as string : formeChangeSpecies.baseSpecies); + if (formeChangeSpecies.name === 'Zygarde-Mega') { + baseSpecies = this.dex.species.get('Zygarde-Complete'); + } + const deltas: { + ability: string, + baseStats: SparseStatsTable, + weighthg: number, + heightm: number, + originalSpecies: string, + requiredItem: string | undefined, + type?: string, + formeType?: string, + isMega?: boolean, + } = { + ability: formeChangeSpecies.abilities['0'], + baseStats: {}, + weighthg: formeChangeSpecies.weighthg - baseSpecies.weighthg, + heightm: ((formeChangeSpecies.heightm * 10) - (baseSpecies.heightm * 10)) / 10, + originalSpecies: formeChangeSpecies.name, + requiredItem: formeChangeSpecies.requiredItem, + }; + let statId: StatID; + for (statId in formeChangeSpecies.baseStats) { + deltas.baseStats[statId] = formeChangeSpecies.baseStats[statId] - baseSpecies.baseStats[statId]; + } + if (formeChangeSpecies.types.length > baseSpecies.types.length) { + deltas.type = formeChangeSpecies.types[1]; + } else if (formeChangeSpecies.types.length < baseSpecies.types.length) { + deltas.type = 'mono'; + } else if (formeChangeSpecies.types[1] !== baseSpecies.types[1]) { + deltas.type = formeChangeSpecies.types[1]; + } + deltas.isMega = true; + return deltas; + }, + mutateOriginalSpecies(speciesOrForme, deltas) { + if (!deltas) throw new TypeError("Must specify deltas!"); + const species = this.dex.deepClone(this.dex.species.get(speciesOrForme)); + species.abilities = { '0': deltas.ability }; + if (species.types[0] === deltas.type) { + species.types = [deltas.type]; + } else if (deltas.type === 'mono') { + species.types = [species.types[0]]; + } else if (deltas.type) { + species.types = [species.types[0], deltas.type]; + } + const baseStats = species.baseStats; + for (const statName in baseStats) { + baseStats[statName] = this.battle.clampIntRange(baseStats[statName] + deltas.baseStats[statName], 1, 255); + } + species.weighthg = Math.max(1, species.weighthg + deltas.weighthg); + species.heightm = Math.max(0.1, ((species.heightm * 10) + (deltas.heightm * 10)) / 10); + species.originalSpecies = deltas.originalSpecies; + species.requiredItem = deltas.requiredItem; + if (deltas.isMega) species.isMega = true; + return species; + }, + }, +}; diff --git a/data/mods/mixandmega/scripts.ts b/data/mods/mixandmega/scripts.ts index 77089a00c4..312f9bba8d 100644 --- a/data/mods/mixandmega/scripts.ts +++ b/data/mods/mixandmega/scripts.ts @@ -6,9 +6,11 @@ export const Scripts: ModdedBattleScriptsData = { if (!item.megaStone && !item.onDrive && !(item.onPlate && !item.zMove) && !item.onMemory) continue; this.modData('Items', i).onTakeItem = false; if (item.isNonstandard === "Past" || item.isNonstandard === "Future") this.modData('Items', i).isNonstandard = null; - /* if (item.megaStone) { - this.modData('FormatsData', this.toID(item.megaStone)).isNonstandard = null; - } */ + if (item.megaStone) { + for (const megaEvo of Object.values(item.megaStone)) { + this.modData('FormatsData', this.toID(megaEvo)).isNonstandard = null; + } + } } }, start() { @@ -385,7 +387,7 @@ export const Scripts: ModdedBattleScriptsData = { if (pokemon.species.isMega) return null; const item = pokemon.getItem(); - if (!item.megaStone || item.megaStone[pokemon.baseSpecies.name]) return null; + if (!item.megaStone) return null; return Object.values(item.megaStone)[0]; }, runMegaEvo(pokemon) { From 2c13c4057863a6f0176a2ce4501d864e24b91008 Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Fri, 9 Jan 2026 16:56:32 -0500 Subject: [PATCH 050/139] Biomechmons: Properly make items consumable if not in the item slot (#11697) --- data/mods/biomechmons/scripts.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data/mods/biomechmons/scripts.ts b/data/mods/biomechmons/scripts.ts index 8b65660e01..c642b0d71a 100644 --- a/data/mods/biomechmons/scripts.ts +++ b/data/mods/biomechmons/scripts.ts @@ -374,9 +374,10 @@ export const Scripts: ModdedBattleScriptsData = { const isBMM = this.volatiles[item.id]?.inSlot; if (isBMM) { + let dexItem = this.battle.dex.items.get(item.name); this.removeVolatile(item.id); const itemIndex = (this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => - this.battle.toID(e.thing) === item.id && e.inSlot === isBMM); + this.battle.toID(e.thing) === dexItem.id && e.inSlot === isBMM); if (itemIndex >= 0) this.m.scrambled.items.splice(itemIndex, 1); if (isBMM === 'Ability') this.setAbility('No Ability'); } else { @@ -426,9 +427,10 @@ export const Scripts: ModdedBattleScriptsData = { const isBMM = this.volatiles[item.id]?.inSlot; if (isBMM) { + let dexItem = this.battle.dex.items.get(item.name); this.removeVolatile(item.id); const itemIndex = (this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => - this.battle.toID(e.thing) === item.id && e.inSlot === isBMM); + this.battle.toID(e.thing) === dexItem.id && e.inSlot === isBMM); if (itemIndex >= 0) this.m.scrambled.items.splice(itemIndex, 1); if (isBMM === 'Ability') this.setAbility('No Ability'); } else { From 28fd76a15170e0df932a0e3b6c1ea397c9723db8 Mon Sep 17 00:00:00 2001 From: Mia <49593536+mia-pi-git@users.noreply.github.com> Date: Fri, 9 Jan 2026 16:00:06 -0600 Subject: [PATCH 051/139] Fix checks --- data/mods/biomechmons/scripts.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/mods/biomechmons/scripts.ts b/data/mods/biomechmons/scripts.ts index c642b0d71a..285d639239 100644 --- a/data/mods/biomechmons/scripts.ts +++ b/data/mods/biomechmons/scripts.ts @@ -374,7 +374,7 @@ export const Scripts: ModdedBattleScriptsData = { const isBMM = this.volatiles[item.id]?.inSlot; if (isBMM) { - let dexItem = this.battle.dex.items.get(item.name); + const dexItem = this.battle.dex.items.get(item.name); this.removeVolatile(item.id); const itemIndex = (this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => this.battle.toID(e.thing) === dexItem.id && e.inSlot === isBMM); @@ -427,7 +427,7 @@ export const Scripts: ModdedBattleScriptsData = { const isBMM = this.volatiles[item.id]?.inSlot; if (isBMM) { - let dexItem = this.battle.dex.items.get(item.name); + const dexItem = this.battle.dex.items.get(item.name); this.removeVolatile(item.id); const itemIndex = (this.m.scrambled.items as { thing: string, inSlot: string }[]).findIndex(e => this.battle.toID(e.thing) === dexItem.id && e.inSlot === isBMM); From d547152057a099e56fe1dd875f59b46b8cb3f997 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 9 Jan 2026 17:34:36 -0700 Subject: [PATCH 052/139] Update aliases --- data/aliases.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data/aliases.ts b/data/aliases.ts index 23325f6096..a56fc4ab90 100644 --- a/data/aliases.ts +++ b/data/aliases.ts @@ -91,8 +91,10 @@ export const Aliases: import('../sim/dex').AliasesTable = { zaou: "[Gen 9] Legends Z-A OU", legendsou: "[Gen 9] Legends Z-A OU", plzaou: "[Gen 9] Legends Z-A OU", - omotm: "[Gen 9] Pokebilities", - lcotm: "[Gen 9] Tera Override", + omotm: "[Gen 9] Tier Shift", + lcotm: "[Gen 9] Bio Mech Mons", + ommotm: "[Gen 9] NatDex Camove Chaos", + ommspotlight: "[Gen 9] NatDex Camove Chaos", // mega evos --- 1st ordered alphabetically by species, 2nd by alias megasnow: "Abomasnow-Mega", From 275fc6385119b31588fefc6207af653444cbbbbf Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 9 Jan 2026 18:58:45 -0700 Subject: [PATCH 053/139] BMM: Fix validation --- config/formats.ts | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index b72d9cff53..b08b8d800c 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -567,39 +567,38 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ) { return this.validateSet(set, teamHas); } - const moves = allThings.filter(thing => this.toID(thing) !== 'metronome' && - dex.moves.get(thing).exists).map(e => this.dex.moves.get(e).name); + const moves = allThings.map(e => this.dex.moves.get(e)).filter(thing => thing.id !== 'metronome' && thing.exists); for (const m of moves) { - if (this.ruleTable.isBanned(`move:${this.toID(m)}`)) return [`${set.species}'s move ${m} is banned.`]; + if (this.ruleTable.isBanned(`move:${m.id}`)) return [`${set.species}'s move ${m.name} is banned.`]; } - const abilities = allThings.filter(thing => dex.abilities.get(thing).exists).map(e => this.dex.abilities.get(e).name); + const abilities = allThings.map(e => this.dex.abilities.get(e)).filter(thing => thing.exists); for (const a of abilities) { - if (this.ruleTable.isBanned(`ability:${this.toID(a)}`)) return [`${set.species}'s ability ${a} is banned.`]; + if (this.ruleTable.isBanned(`ability:${a.id}`)) return [`${set.species}'s ability ${a.name} is banned.`]; } - const items = allThings.filter(thing => dex.items.get(thing).exists).map(e => this.dex.items.get(e).name); + const items = allThings.map(e => this.dex.items.get(e)).filter(thing => thing.exists); for (const i of items) { - if (this.ruleTable.isBanned(`item:${i}`)) return [`${set.species}'s item ${i} is banned.`]; + if (this.ruleTable.isBanned(`item:${i.id}`)) return [`${set.species}'s item ${i.name} is banned.`]; } const setHas: { [k: string]: true } = {}; for (const thing of [...moves, ...items, ...abilities]) { - if (setHas[this.toID(thing)]) return [`${set.species} has multiple copies of ${thing}.`]; - setHas[this.toID(thing)] = true; + if (setHas[thing.id]) return [`${set.species} has multiple copies of ${thing.name}.`]; + setHas[thing.id] = true; } const normalAbility = set.ability; if (!abilities.length) { set.ability = 'noability'; } else { - set.ability = this.toID(abilities[0]); + set.ability = abilities[0].id; } if (abilities.some(abil => !Object.values(species.abilities).map(this.toID).includes(this.toID(abil))) && this.ruleTable.has('obtainableabilities') ) { if (set.ability !== 'noability') return [`${set.species} has illegal abilities.`]; } - if (requiredAbility && !abilities.map(this.toID).includes(this.toID(requiredAbility))) { + if (requiredAbility && !abilities.map(a => a.id).includes(this.toID(requiredAbility))) { return [`${set.species} requires ${requiredAbility} on its set.`]; } if (!moves.length) { @@ -609,14 +608,14 @@ export const Formats: import('../sim/dex-formats').FormatList = [ return [`${set.name} has ${set.moves.length} moves, which is more than the limit of ${this.ruleTable.maxMoveCount}.`]; } const normalMoves = set.moves; - set.moves = [moves[0]]; + set.moves = [moves[0].id]; if ( - moves.some(move => this.checkCanLearn(dex.moves.get(move), species)) && + moves.some(move => this.checkCanLearn(move, species)) && this.ruleTable.has('obtainablemoves') ) { return [`${set.species} has illegal moves.`]; } - if (requiredMove && !moves.map(this.toID).includes(this.toID(requiredMove))) { + if (requiredMove && !moves.map(m => m.id).includes(this.toID(requiredMove))) { return [`${set.species} requires ${requiredMove} on its set.`]; } if (!items.length && requiredItems.length) { @@ -624,7 +623,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } const normalItem = set.item; if (items.length) { - set.item = items.find(i => dex.items.get(i).forcedForme || dex.items.get(i).itemUser) || items[0]; + set.item = (items.find(i => i.forcedForme || i.itemUser) || items[0]).id; } else { set.item = ''; } @@ -632,9 +631,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ this.ruleTable.set('+ability:noability', ''); } for (const curMove of moves) { - set.moves = [curMove]; - if (requiredMove && moves.map(this.toID).includes(this.toID(curMove)) && - this.toID(curMove) !== this.toID(requiredMove)) { + set.moves = [curMove.id]; + if (requiredMove && moves.map(m => m.id).includes(curMove.id) && + curMove.id !== this.toID(requiredMove)) { set.moves.push(requiredMove); } let problems = this.validateSet(set, teamHas); From 6bcb0f7f32c4fe317351b5cd0638ce75e64204a9 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 9 Jan 2026 19:04:38 -0700 Subject: [PATCH 054/139] Fix typo --- config/formats.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index b08b8d800c..b2ab22937b 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -593,7 +593,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } else { set.ability = abilities[0].id; } - if (abilities.some(abil => !Object.values(species.abilities).map(this.toID).includes(this.toID(abil))) && + if (abilities.some(abil => !Object.values(species.abilities).map(this.toID).includes(abil.id)) && this.ruleTable.has('obtainableabilities') ) { if (set.ability !== 'noability') return [`${set.species} has illegal abilities.`]; @@ -609,10 +609,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } const normalMoves = set.moves; set.moves = [moves[0].id]; - if ( - moves.some(move => this.checkCanLearn(move, species)) && - this.ruleTable.has('obtainablemoves') - ) { + if (moves.some(move => this.checkCanLearn(move, species)) && this.ruleTable.has('obtainablemoves')) { return [`${set.species} has illegal moves.`]; } if (requiredMove && !moves.map(m => m.id).includes(this.toID(requiredMove))) { From f2883557ca71b1a14bc1039fd307aee7de4ab455 Mon Sep 17 00:00:00 2001 From: Guangcong Luo Date: Sat, 10 Jan 2026 21:28:47 +0000 Subject: [PATCH 055/139] Protect against infinite loop --- server/chat-formatter.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/chat-formatter.ts b/server/chat-formatter.ts index 322688a220..feb4bafe13 100644 --- a/server/chat-formatter.ts +++ b/server/chat-formatter.ts @@ -422,7 +422,12 @@ class TextFormatter { let i = start + 2; // Find or . // We need to check the location of `>` to disambiguate from . - while (this.at(i) !== '<' || this.at(i + 1) !== '/' || this.at(i + 3) !== '>') i++; + while (this.at(i) !== '<' || this.at(i + 1) !== '/' || this.at(i + 3) !== '>') { + if (i >= this.str.length) { + throw new Error(`Unclosed URL span when parsing: ${this.str}`); + } + i++; + } i += 4; this.pushSlice(i); } From 9fd696977c6f0393b1bbbb0aefc680d02938cda8 Mon Sep 17 00:00:00 2001 From: Guangcong Luo Date: Sat, 10 Jan 2026 14:36:51 -0800 Subject: [PATCH 056/139] Fix crash in formatText --- server/chat-formatter.ts | 4 ++-- test/server/chat.js | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/server/chat-formatter.ts b/server/chat-formatter.ts index feb4bafe13..1eb8be2e20 100644 --- a/server/chat-formatter.ts +++ b/server/chat-formatter.ts @@ -35,7 +35,7 @@ SOURCE FOR LINKREGEX (compile with https://regexfree.k55.io/ ) ( # characters allowed inside URL paths ( - [^\s()&<>[\]] | & | " + [^\s()&<>[\]`] | & | " | # parentheses in URLs should be matched, so they're not confused # for parentheses around URLs @@ -60,7 +60,7 @@ SOURCE FOR LINKREGEX (compile with https://regexfree.k55.io/ ) (?! [^ ]*> ) */ -export const linkRegex = /(?:(?:https?:\/\/[a-z0-9-]+(?:\.[a-z0-9-]+)*|www\.[a-z0-9-]+(?:\.[a-z0-9-]+)+|\b[a-z0-9-]+(?:\.[a-z0-9-]+)*\.(?:(?:com?|org|net|edu|info|us|jp)\b|[a-z]{2,3}(?=:[0-9]|\/)))(?::[0-9]+)?(?:\/(?:(?:[^\s()&<>[\]]|&|"|\((?:[^\s()<>&[\]]|&)*\)|\[(?:[^\s()<>&[\]]|&)*])*(?:[^\s()[\]{}".,!?;:&<>*`^~\\]|\((?:[^\s()<>&[\]]|&)*\)))?)?|[a-z0-9.]+@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,})(?![^ ]*>)/ig; +export const linkRegex = /(?:(?:https?:\/\/[a-z0-9-]+(?:\.[a-z0-9-]+)*|www\.[a-z0-9-]+(?:\.[a-z0-9-]+)+|\b[a-z0-9-]+(?:\.[a-z0-9-]+)*\.(?:(?:com?|org|net|edu|info|us|jp)\b|[a-z]{2,3}(?=:[0-9]|\/)))(?::[0-9]+)?(?:\/(?:(?:[^\s()&<>[\]`]|&|"|\((?:[^\s()<>&[\]]|&)*\)|\[(?:[^\s()<>&[\]]|&)*])*(?:[^\s()[\]{}".,!?;:&<>*`^~\\]|\((?:[^\s()<>&[\]]|&)*\)))?)?|[a-z0-9.]+@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,})(?![^ ]*>)/ig; /** * A span is a part of the text that's formatted. In the text: diff --git a/test/server/chat.js b/test/server/chat.js index 02a1e58dfa..b202664a7c 100644 --- a/test/server/chat.js +++ b/test/server/chat.js @@ -3,6 +3,17 @@ const assert = require('assert').strict; describe('Chat', () => { + it('should not infinite loop formatText', () => { + assert.equal( + Chat.formatText(`<\\\\||^^**~~\`\`https://a/Olaaaseusbobalhos\`\`~~**^^||\\\\`), + `<https://a/Olaaaseusbobalhos` + ); + assert.equal( + Chat.formatText(`[[https://google.com/]]text`), + `https://google.com/text` + ); + }); + it('should run formatText correctly', () => { assert.equal( Chat.formatText(`hi **__bold italics__** ^^superscript^^ \\\\subscript\\\\ normal ~~strikethrough~~ bye`), From f5011b81ecbd76778dd9e59f41b206ee927d91f3 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sat, 10 Jan 2026 20:16:28 -0700 Subject: [PATCH 057/139] EBC: Auto tie should kick in after turn 1000 ends --- sim/battle.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sim/battle.ts b/sim/battle.ts index 9b2c59cdc9..e4c6e2ee87 100644 --- a/sim/battle.ts +++ b/sim/battle.ts @@ -1790,7 +1790,7 @@ export class Battle { if (this.turn <= 100) return; // the turn limit is not a part of Endless Battle Clause - if (this.turn >= 1000) { + if (this.turn > 1000) { this.add('message', `It is turn 1000. You have hit the turn limit!`); this.tie(); return true; From a86abb2b6bb18dd29b9dce4c9c8a39967d7b5ff4 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sat, 10 Jan 2026 22:28:55 -0700 Subject: [PATCH 058/139] Fix test --- test/sim/misc/endlessbattleclause.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/sim/misc/endlessbattleclause.js b/test/sim/misc/endlessbattleclause.js index eb2cc3437d..a61dd2d007 100644 --- a/test/sim/misc/endlessbattleclause.js +++ b/test/sim/misc/endlessbattleclause.js @@ -182,7 +182,7 @@ describe('Endless Battle Clause (slow)', () => { { species: "Blissey", moves: ['splash'] }, { species: "Vaporeon", moves: ['splash'] }, ] }); - for (let i = 0; i < 998; i++) { + for (let i = 0; i < 999; i++) { battle.makeChoices('switch 2', 'switch 2'); } assert(!battle.ended); From b5514e03af1877b819c1390644547d87f16c9508 Mon Sep 17 00:00:00 2001 From: TurboRx <187360786+TurboRx@users.noreply.github.com> Date: Mon, 12 Jan 2026 03:27:14 +0530 Subject: [PATCH 059/139] Update LICENSE Year (#11689) --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index f1bc80d370..118e1fe24a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2011-2024 Guangcong Luo and other contributors http://pokemonshowdown.com/ +Copyright (c) 2011-2026 Guangcong Luo and other contributors http://pokemonshowdown.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From fe37e47d54b47db80d2bc8dc889b55fe68907901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Mon, 12 Jan 2026 18:35:03 +0000 Subject: [PATCH 060/139] Update OU by technicality (#11698) * SS: Move Victini to (OU) * SM: Move Tangrowth to (OU) * ORAS: Move Jirachi to (OU) --- data/mods/gen6/formats-data.ts | 2 +- data/mods/gen7/formats-data.ts | 2 +- data/mods/gen8/formats-data.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/mods/gen6/formats-data.ts b/data/mods/gen6/formats-data.ts index 75ebb0da61..ae2091be52 100644 --- a/data/mods/gen6/formats-data.ts +++ b/data/mods/gen6/formats-data.ts @@ -1678,7 +1678,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat doublesTier: "DUber", }, jirachi: { - tier: "OU", + tier: "(OU)", doublesTier: "DUber", }, deoxys: { diff --git a/data/mods/gen7/formats-data.ts b/data/mods/gen7/formats-data.ts index 7af4a2c6ae..ada8df1394 100644 --- a/data/mods/gen7/formats-data.ts +++ b/data/mods/gen7/formats-data.ts @@ -592,7 +592,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat doublesTier: "NFE", }, tangrowth: { - tier: "OU", + tier: "(OU)", doublesTier: "(DUU)", }, kangaskhan: { diff --git a/data/mods/gen8/formats-data.ts b/data/mods/gen8/formats-data.ts index 373fb35bd0..774b525b8a 100644 --- a/data/mods/gen8/formats-data.ts +++ b/data/mods/gen8/formats-data.ts @@ -2922,7 +2922,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat isNonstandard: "Past", }, victini: { - tier: "OU", + tier: "(OU)", doublesTier: "DUU", natDexTier: "OU", }, From ea822f8863407f7a16995a9db3519f8e250237c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Tue, 13 Jan 2026 18:02:16 +0000 Subject: [PATCH 061/139] Auctions: Show managers of top bidder in bid info box (#11702) --- server/chat-plugins/auction.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/chat-plugins/auction.ts b/server/chat-plugins/auction.ts index 34a632eedb..77ac2d405d 100644 --- a/server/chat-plugins/auction.ts +++ b/server/chat-plugins/auction.ts @@ -259,8 +259,11 @@ export class Auction extends Rooms.SimpleRoomGame { sendBidInfo() { let buf = `
    `; buf += Utils.html`Player: ${this.nominatedPlayer.name} `; - if (this.type === 'auction') buf += `Top bid: ${this.highestBid} `; - if (this.type === 'auction') buf += Utils.html`Top bidder: ${this.highestBidder.name}
    `; + if (this.type === 'auction') { + buf += `Top bid: ${this.highestBid} `; + buf += Utils.html`Top bidder: ${this.highestBidder.name} `; + buf += `Managers: ${this.highestBidder.getManagers().map(m => `${Utils.escapeHTML(m)}`).join(' ')}
    `; + } buf += Utils.html`Tiers Played: ${this.nominatedPlayer.tiersPlayed.length ? `${this.nominatedPlayer.tiersPlayed.join(', ')}` : 'N/A'}
    `; buf += Utils.html`Tiers Not Played: ${this.nominatedPlayer.tiersNotPlayed.length ? `${this.nominatedPlayer.tiersNotPlayed.join(', ')}` : 'N/A'}`; buf += `
    `; From 5dfa67e2482d4baf06a562bd3f31568bd0c532ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Thu, 15 Jan 2026 01:12:54 +0000 Subject: [PATCH 062/139] Remove Gen 3 check in Gen 4 code (#11706) --- data/mods/gen4/scripts.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/data/mods/gen4/scripts.ts b/data/mods/gen4/scripts.ts index 67f54d423d..b73128e018 100644 --- a/data/mods/gen4/scripts.ts +++ b/data/mods/gen4/scripts.ts @@ -55,10 +55,6 @@ export const Scripts: ModdedBattleScriptsData = { // Weather baseDamage = this.battle.runEvent('WeatherModifyDamage', pokemon, target, move, baseDamage); - if (this.battle.gen === 3 && move.category === 'Physical' && !Math.floor(baseDamage)) { - baseDamage = 1; - } - baseDamage += 2; const isCrit = target.getMoveHitData(move).crit; From 8ac23313bb72eac0d34fb374410e55a6f742a52d Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:31:32 -0700 Subject: [PATCH 063/139] Camove Chaos: Ban Roserade --- config/formats.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index b2ab22937b..620681f727 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -758,8 +758,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Eternatus', 'Flutter Mane', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Komala', 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Mawile-Mega', 'Medicham-Mega', 'Melmetal', 'Metagross-Mega', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palafin', - 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Regieleki', 'Reshiram', 'Salamence-Mega', 'Sceptile-Mega', 'Serperior', 'Shedinja', 'Sneasler', - 'Solgaleo', 'Spectrier', 'Tapu Koko', 'Ting-Lu', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Xerneas', 'Xurkitree', 'Yveltal', 'Zacian', 'Zacian-Crowned', + 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Regieleki', 'Reshiram', 'Roserade', 'Salamence-Mega', 'Sceptile-Mega', 'Serperior', 'Shedinja', + 'Sneasler', 'Solgaleo', 'Spectrier', 'Tapu Koko', 'Ting-Lu', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Xerneas', 'Xurkitree', 'Yveltal', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zoroark', 'Arena Trap', 'Moody', 'Magnet Pull', 'Regenerator > 2', 'Power Construct', 'Shadow Tag', 'Damp Rock', 'Heat Rock', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Smooth Rock', 'Assist', 'Astral Barrage', 'Baneful Bunker', 'Baton Pass', 'Belly Drum', 'Bolt Beak', 'Boomburst', 'Burning Bulwark', 'Ceaseless Edge', 'Chatter', 'Clangorous Soul', 'Dire Claw', 'Double Iron Bash', From 7e557b7cf5bb70a80d36177c4f5657a8d776f36d Mon Sep 17 00:00:00 2001 From: Emikatana Date: Wed, 14 Jan 2026 21:38:03 -0500 Subject: [PATCH 064/139] Add new ChatBats mons + bug fixes (#11705) * adding new mons * adding new mons * adding new mons * adding new mons * adding focus band changes * add moves * +new mons * +new mons * +new mons * +new mons * +sinister arrows * +new abilities * fix * fix * fix * fixing sinister arrows * fixing oceanic blessing * fixing sinister arrows clarity * oops * fixing oceanic blessing * fixing sinister arrows * oop * fixing biogenesis * fixing oceanic blessing message * fixing some stuff * fixing sinister arrows * oops * updating test mons * removing test code * kyogre level down * lint issues * lint issues * lint fix (why) * lint badly * adding new ChatBats mons * adding new mons * adding new mons * new mons * raticite + fixing focus band * adding jello body * fixing electric terrain + Volbeat and adding Jello Body * adding last breakfast * adding nibble nibble * fix * fix * fixing electric terrain * fixing crowverload * fixing focus band hopefully * fix focus band (final) * testing breakfast * fixing breakfast * fixes * hopefully fixing breakfast * oops * removing debug text and adding descriptions * description * balance changes + fixing raticate ability * removing test code * lint fix * lint * lint fixes * lint fix for the lint fix * lint fix * fixing team generation failing sometimes --- data/mods/chatbats/abilities.ts | 37 ++++++++++++ data/mods/chatbats/items.ts | 16 ++++- data/mods/chatbats/moves.ts | 60 ++++++++++++++----- data/mods/chatbats/pokedex.ts | 25 +++++++- data/mods/chatbats/scripts.ts | 6 ++ data/random-battles/chatbats/random-sets.json | 34 +++++++++-- data/random-battles/chatbats/teams.ts | 7 ++- 7 files changed, 161 insertions(+), 24 deletions(-) diff --git a/data/mods/chatbats/abilities.ts b/data/mods/chatbats/abilities.ts index 5735325348..e2039820ce 100644 --- a/data/mods/chatbats/abilities.ts +++ b/data/mods/chatbats/abilities.ts @@ -953,4 +953,41 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa }, shortDesc: "This Pokemon can poison a Pokemon regardless of its typing and hit them with Poison moves.", }, + jellobody: { + onTryHit(pokemon, target, move) { + if (move.selfSwitch) { + this.add('-immune', pokemon, '[from] ability: Jello Body'); + this.heal(target.baseMaxhp / 2); + return null; + } + }, + onModifyMove(move, source, target) { + move.drain = [1, 2]; + }, + flags: { breakable: 1 }, + name: "Jello Body", + rating: 5, + num: -122, + shortDesc: "Immune to pivot moves, heals 50% HP when hit by one. All moves drain 50%.", + }, + nibblenibble: { + onPrepareHit(source, target, move) { + if (move.category === 'Status' || move.multihit || move.flags['noparentalbond'] || move.flags['charge'] || + move.flags['futuremove'] || move.spreadHit || move.isZ || move.isMax || !move.flags['bite']) return; + move.multihit = 2; + move.multihitType = 'parentalbond'; + }, + // Damage modifier implemented in BattleActions#modifyDamage() + onSourceModifySecondaries(secondaries, target, source, move) { + if (move.multihitType === 'parentalbond' && move.id === 'secretpower' && move.hit < 2) { + // hack to prevent accidentally suppressing King's Rock/Razor Fang + return secondaries.filter(effect => effect.volatileStatus === 'flinch'); + } + }, + flags: {}, + name: "Nibble Nibble", + rating: 5, + num: -123, + shortDesc: "Parental Bond but for Bite moves.", + }, }; diff --git a/data/mods/chatbats/items.ts b/data/mods/chatbats/items.ts index f059180595..a88b72957d 100644 --- a/data/mods/chatbats/items.ts +++ b/data/mods/chatbats/items.ts @@ -123,14 +123,28 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { }, onDamagePriority: -40, onDamage(damage, target, source, effect) { - const chance = Math.max(Math.floor(target.hp / target.maxhp), 10); + const chance = Math.max(Math.floor(100 - (target.maxhp - target.hp)), 10); if (this.randomChance(chance, 100) && damage >= target.hp && effect && effect.effectType === 'Move') { this.add("-activate", target, "item: Focus Band"); return target.hp - 1; + } else { + return damage; } }, num: 230, gen: 2, desc: "Chance to survive attack equal to percentage of remaining HP, minimum 10%.", }, + raticite: { + name: "Raticite", + spritenum: 1, + megaStone: { "Raticate": "Raticate-Mega" }, + itemUser: ["Raticate"], + onTakeItem(item, source) { + return !item.megaStone?.[source.baseSpecies.baseSpecies]; + }, + num: -3, + gen: 9, + desc: "If held by a Raticate, this item allows it to Mega Evolve in battle.", + }, }; diff --git a/data/mods/chatbats/moves.ts b/data/mods/chatbats/moves.ts index a0b49c8ed8..ba238506fb 100644 --- a/data/mods/chatbats/moves.ts +++ b/data/mods/chatbats/moves.ts @@ -1311,10 +1311,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { this.add('-fail', source, 'move: Crowverload'); return this.NOT_FAIL; } - if (source.hp <= source.maxhp / 4) { - this.add('-fail', source, 'move: Substitute', '[weak]'); - return this.NOT_FAIL; - } }, onAfterMove(source, target, move) { this.actions.useMove('substitute', source, { }); @@ -1532,16 +1528,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { return false; } }, - onTryHeal(damage, target, source, effect) { - if (effect && (effect.id === 'zpower' || (effect as Move).isZ)) return damage; - if (source && target !== source && target.hp !== target.maxhp && effect.name === "Pollen Puff") { - this.attrLastMove('[still]'); - // FIXME: Wrong error message, correct one not supported yet - this.add('cant', source, 'move: Electric Terrain', effect); - return null; - } - return false; - }, onFieldResidualOrder: 27, onFieldResidualSubOrder: 7, onFieldEnd() { @@ -1635,6 +1621,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { target: "normal", type: "Normal", contestType: "Cute", + shortDesc: "Present but better.", }, sinisterarrows: { num: -1016, @@ -1712,9 +1699,54 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { target: "normal", type: "Ghost", contestType: "Clever", + shortDesc: "Hits for 4 turns, even if user switches out.", }, mortalspin: { inherit: true, category: "Special", }, + lastbreakfast: { + num: -1020, + accuracy: 100, + basePower: 80, + category: "Physical", + name: "Last Breakfast", + pp: 15, + priority: 0, + flags: { protect: 1, mirror: 1, metronome: 1, contact: 1, bite: 1 }, + onHit(target, source, move) { + const numberBerries = 0 + 1 * Number(source.side.totalFainted); + for (let i = 0; i < numberBerries; i++) { + const possibleBerries = ['aguavberry', 'apicotberry', 'enigmaberry', 'figyberry', 'ganlonberry', 'iapapaberry', + 'keeberry', 'lansatberry', 'leppaberry', 'liechiberry', 'lumberry', 'magoberry', + 'marangaberry', 'micleberry', + 'oranberry', 'petayaberry', 'salacberry', 'sitrusberry', 'starfberry', 'wikiberry', + 'aspearberry', 'cheriberry', 'chestoberry', 'lumberry', 'pechaberry', 'rawstberry', 'persimberry']; + const chosenBerry = this.sample(possibleBerries); + const berry = this.dex.items.get(chosenBerry); + if (source.hp && berry.isBerry) { + if (this.singleEvent('Eat', berry, null, source, source, move)) { + this.runEvent('EatItem', source, source, move, berry); + } + if (berry.onEat) source.ateBerry = true; + } + } + }, + onTryMove() { + this.attrLastMove('[still]'); + }, + onPrepareHit(target, source) { + this.add('-anim', source, 'Curse', target); + this.add('-anim', source, 'Bug Bite', target); + }, + secondary: null, + target: "normal", + type: "Ghost", + contestType: "Cute", + shortDesc: "Eats X random berries, where X is fainted teammates.", + }, + superfang: { + inherit: true, + flags: { contact: 1, protect: 1, mirror: 1, metronome: 1, bite: 1 }, + }, }; diff --git a/data/mods/chatbats/pokedex.ts b/data/mods/chatbats/pokedex.ts index 05bb622cb6..6d4f878feb 100644 --- a/data/mods/chatbats/pokedex.ts +++ b/data/mods/chatbats/pokedex.ts @@ -482,10 +482,33 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable ogerponcornerstone: { inherit: true, abilities: { 0: "Solid Rock" }, - types: ["Psychic", "Normal"], }, glimmora: { inherit: true, abilities: { 0: "Corrosion" }, }, + wobbuffet: { + inherit: true, + abilities: { 0: "Jello Body" }, + }, + raticate: { + inherit: true, + abilities: { 0: "Hustle" }, + baseStats: { hp: 90, atk: 81, def: 60, spa: 50, spd: 70, spe: 97 }, + }, + raticatemega: { + num: -977, + name: "Raticate-Mega", + baseSpecies: "Raticate", + forme: "Mega", + types: ["Normal", "Ghost"], + genderRatio: { M: 0.5, F: 0.5 }, + baseStats: { hp: 90, atk: 105, def: 60, spa: 50, spd: 70, spe: 173 }, + abilities: { 0: "Nibble Nibble" }, + heightm: 0.7, + weightkg: 5, + color: "Black", + eggGroups: ["Field"], + requiredItem: "Raticite", + }, }; diff --git a/data/mods/chatbats/scripts.ts b/data/mods/chatbats/scripts.ts index aec77f7f88..207d563386 100644 --- a/data/mods/chatbats/scripts.ts +++ b/data/mods/chatbats/scripts.ts @@ -294,5 +294,11 @@ export const Scripts: ModdedBattleScriptsData = { this.modData('Learnsets', 'glimmora').learnset.icebeam = ['9L1']; this.modData('Learnsets', 'glimmora').learnset.malignantchain = ['9L1']; + + this.modData('Learnsets', 'wobbuffet').learnset.nightshade = ['9L1']; + this.modData('Learnsets', 'wobbuffet').learnset.guillotine = ['9L1']; + this.modData('Learnsets', 'wobbuffet').learnset.shedtail = ['9L1']; + + this.modData('Learnsets', 'raticate').learnset.lastbreakfast = ['9L1']; }, }; diff --git a/data/random-battles/chatbats/random-sets.json b/data/random-battles/chatbats/random-sets.json index 8bddf6d58c..615908c2c4 100644 --- a/data/random-battles/chatbats/random-sets.json +++ b/data/random-battles/chatbats/random-sets.json @@ -926,7 +926,7 @@ ] }, "swanna": { - "level": 84, + "level": 82, "sets": [ { "role": "Fast Attacker", @@ -937,7 +937,7 @@ ] }, "typhlosionmega": { - "level": 84, + "level": 82, "sets": [ { "role": "Fast Attacker", @@ -954,7 +954,7 @@ ] }, "terapagos": { - "level": 84, + "level": 82, "sets": [ { "role": "Bulky Setup", @@ -982,7 +982,7 @@ ] }, "genesectburn": { - "level": 84, + "level": 82, "sets": [ { "role": "Wallbreaker", @@ -1004,7 +1004,7 @@ ] }, "genesectdouse": { - "level": 84, + "level": 82, "sets": [ { "role": "Wallbreaker", @@ -1015,7 +1015,7 @@ ] }, "genesectshock": { - "level": 84, + "level": 80, "sets": [ { "role": "Wallbreaker", @@ -1162,5 +1162,27 @@ "teraTypes": ["Grass"] } ] + }, + "wobbuffet": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Counter", "Mirror Coat", "Shed Tail", "Encore", "Guillotine", "Night Shade"], + "abilities": ["Jello Body"], + "teraTypes": ["Dark", "Steel"] + } + ] + }, + "raticatemega": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Super Fang", "Hyper Fang", "Last Breakfast", "U-turn"], + "abilities": ["Hustle"], + "teraTypes": ["Normal"] + } + ] } } diff --git a/data/random-battles/chatbats/teams.ts b/data/random-battles/chatbats/teams.ts index 162d21c248..fa7f264372 100644 --- a/data/random-battles/chatbats/teams.ts +++ b/data/random-battles/chatbats/teams.ts @@ -236,6 +236,8 @@ export class RandomChatBatsTeams extends RandomTeams { if (species.id === 'feraligatrmega') this.incompatibleMoves(moves, movePool, 'thunderfang', 'poisonfang'); if (species.id === 'salazzle') this.incompatibleMoves(moves, movePool, 'malignantchain', 'venoshock'); if (species.id === 'glimmora') this.incompatibleMoves(moves, movePool, 'powergem', 'meteorbeam'); + if (species.id === 'wobbuffet') this.incompatibleMoves(moves, movePool, 'shedtail', 'encore'); + if (species.id === 'wobbuffet') this.incompatibleMoves(moves, movePool, 'nightshade', 'guillotine'); } override randomMoveset( @@ -724,6 +726,7 @@ export class RandomChatBatsTeams extends RandomTeams { if (species.id === 'ogerponcornerstone') return 'Cornerstone Mask'; if (species.id === 'glimmora' && moves.has('meteorbeam')) return 'Power Herb'; if (species.id === 'glimmora') return 'Air Balloon'; + if (species.id === 'wobbuffet') return 'Covert Cloak'; } override randomSet( @@ -897,7 +900,7 @@ export class RandomChatBatsTeams extends RandomTeams { let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1; while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) { const baseSpecies = this.sampleNoReplace(baseSpeciesPool); - if (hasMega && (baseSpecies === "Typhlosion" || baseSpecies === "Altaria")) continue; + if (hasMega && (baseSpecies === "Typhlosion" || baseSpecies === "Altaria" || baseSpecies === "Raticate")) continue; const currentSpeciesPool: Species[] = []; // Check if the base species has a mega forme available // let canMega = false; @@ -1008,7 +1011,7 @@ export class RandomChatBatsTeams extends RandomTeams { // if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd; // testing code - // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Feraligatr-Mega'); + // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Raticate-Mega'); let set: RandomTeamsTypes.RandomSet; From 0e435f988734c983fe7226015d76183fce2f507c Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:38:31 -0500 Subject: [PATCH 065/139] Partners in Crime: Ban Oricorio over Dancer (#11703) * Partners in Crime: Ban Oricorio over Dancer * Update config/formats.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 620681f727..439983f5f3 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -1824,9 +1824,10 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: [ 'Annihilape', 'Arceus', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Cresselia', 'Darkrai', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', - 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Reshiram', 'Smeargle', 'Solgaleo', 'Terapagos', 'Urshifu', 'Urshifu-Rapid-Strike', - 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Contrary', 'Dancer', 'Huge Power', 'Moody', 'Pure Power', 'Serene Grace', 'Shadow Tag', - 'Stench', 'Bright Powder', 'King\'s Rock', 'Razor Fang', 'Ally Switch', 'Dragon Cheer', 'Last Respects', 'Revival Blessing', 'Swagger', + 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Oricorio', 'Oricorio-Pa\'u', 'Oricorio-Pom-Pom', 'Oricorio-Sensu', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Reshiram', + 'Smeargle', 'Solgaleo', 'Terapagos', 'Urshifu', 'Urshifu-Rapid-Strike', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Contrary', 'Huge Power', + 'Moody', 'Pure Power', 'Serene Grace', 'Shadow Tag', 'Stench', 'Bright Powder', 'King\'s Rock', 'Razor Fang', 'Ally Switch', 'Dragon Cheer', 'Last Respects', + 'Revival Blessing', 'Swagger', ], onBegin() { for (const pokemon of this.getAllPokemon()) { From 3bd1a1e329da8d286644078cfc9a9638fc7ea025 Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Wed, 14 Jan 2026 22:17:58 -0500 Subject: [PATCH 066/139] Bio Mech Mons: Fix fling (#11707) --- data/mods/biomechmons/scripts.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data/mods/biomechmons/scripts.ts b/data/mods/biomechmons/scripts.ts index 285d639239..199d54b805 100644 --- a/data/mods/biomechmons/scripts.ts +++ b/data/mods/biomechmons/scripts.ts @@ -67,13 +67,12 @@ export const Scripts: ModdedBattleScriptsData = { ...(this.m.scrambled.abilities as { thing: string }[]).map(e => e.thing), ...(this.m.scrambled.items as { thing: string }[]).map(e => e.thing), ...(this.m.scrambled.moves as { thing: string }[]).map(e => e.thing), - this.ability, this.moveSlots.map(e => e.id), this.item, + this.ability, ...this.moveSlots.map(e => e.move), this.item, ].map(this.battle.toID)); let isBMMAbil = false; let isOldBMMAbil = false; if (!this.hp) return false; - if (!this.battle.dex.abilities.get(ability).exists) isBMMAbil = true; if (typeof ability === 'string') { if (this.battle.dex.abilities.get(ability).exists) { ability = this.battle.dex.abilities.get(ability); @@ -92,6 +91,7 @@ export const Scripts: ModdedBattleScriptsData = { } as Ability; } } + if (ability.name.length && !this.battle.dex.abilities.get(ability).exists) isBMMAbil = true; if (!sourceEffect && this.battle.effect) sourceEffect = this.battle.effect; let oldAbility; if (this.battle.dex.abilities.get(this.ability).exists) { @@ -251,15 +251,14 @@ export const Scripts: ModdedBattleScriptsData = { ...(this.m.scrambled.abilities as { thing: string }[]).map(e => e.thing), ...(this.m.scrambled.items as { thing: string }[]).map(e => e.thing), ...(this.m.scrambled.moves as { thing: string }[]).map(e => e.thing), - this.ability, this.moveSlots.map(e => e.id), this.item, + this.ability, ...this.moveSlots.map(e => e.move), this.item, ].map(this.battle.toID)); let isBMMItem = false; let isOldBMMItem = false; if (!this.hp || !this.isActive) return false; - if (!this.battle.dex.items.get(item).exists) isBMMItem = true; if (typeof item === 'string') { - if (this.battle.dex.items.get(item).exists) { + if (!item.length || this.battle.dex.items.get(item).exists) { item = this.battle.dex.items.get(item); } else { const itemString = item; @@ -279,6 +278,7 @@ export const Scripts: ModdedBattleScriptsData = { } as Item; } } + if (item.name.length && !this.battle.dex.items.get(item).exists) isBMMItem = true; if (allThings.has(item.id)) return false; const effectid = this.battle.effect ? this.battle.effect.id : ''; if (RESTORATIVE_BERRIES.has('leppaberry' as ID)) { From 56faffd46c84ebb416e321533a9a25116c60690b Mon Sep 17 00:00:00 2001 From: shrianshChari <30420527+shrianshChari@users.noreply.github.com> Date: Wed, 14 Jan 2026 23:34:47 -0800 Subject: [PATCH 067/139] [Gen 3] ADV 200: Give Wish to Pokemon that can breed with Pikachu (#11709) * ADV 200: Add Wish to the movesets of Pokemon that can breed with Pikachu * These files were not supposed to be here --- data/mods/gen3rs/learnsets.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/mods/gen3rs/learnsets.ts b/data/mods/gen3rs/learnsets.ts index c5ff608de7..5176921faa 100644 --- a/data/mods/gen3rs/learnsets.ts +++ b/data/mods/gen3rs/learnsets.ts @@ -4356,6 +4356,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab toxic: ["3M"], uproar: ["3E"], waterpulse: ["3M"], + wish: ["3E"], }, }, delcatty: { @@ -4813,6 +4814,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab thunderbolt: ["3M"], thunderwave: ["3L4"], toxic: ["3M"], + wish: ["3E"], }, }, minun: { @@ -4846,6 +4848,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab thunderbolt: ["3M"], thunderwave: ["3L4"], toxic: ["3M"], + wish: ["3E"], }, }, volbeat: { @@ -5462,6 +5465,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab trick: ["3E"], uproar: ["3L5"], waterpulse: ["3M"], + wish: ["3E"], }, }, trapinch: { From cc37f4c7249284f89605719bf9f458848408b581 Mon Sep 17 00:00:00 2001 From: LumarisX <65790297+LumarisX@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:40:15 -0800 Subject: [PATCH 068/139] Add Mega Darkrai as a Dark Void user (#11708) * add mega darkrai as a dark void user * remove auto formatting * Update data/moves.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- data/moves.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/moves.ts b/data/moves.ts index 75b8e29dce..50bfecdc3b 100644 --- a/data/moves.ts +++ b/data/moves.ts @@ -3480,7 +3480,7 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = { flags: { protect: 1, reflectable: 1, mirror: 1, metronome: 1, nosketch: 1 }, status: 'slp', onTry(source, target, move) { - if (source.species.name === 'Darkrai' || move.hasBounced) { + if (source.species.baseSpecies === 'Darkrai' || move.hasBounced) { return; } this.add('-fail', source, 'move: Dark Void'); From 3619ad8eefea16540b810c1c8099b053ccdce9f0 Mon Sep 17 00:00:00 2001 From: FeluciaPS Date: Sat, 17 Jan 2026 20:47:54 +0100 Subject: [PATCH 069/139] 1v1: Ban Custap Berry (#11710) https://www.smogon.com/forums/threads/one-more-time-custap-berry-suspect.3775688/post-10836343 --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 439983f5f3..85475837a5 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -308,7 +308,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Meloetta', 'Mew', 'Mewtwo', 'Mimikyu', 'Miraidon', 'Necrozma', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Cornerstone', 'Ogerpon-Hearthflame', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regidrago', 'Reshiram', 'Scream Tail', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Terapagos', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody', - 'Focus Band', 'Focus Sash', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Perish Song', + 'Custap Berry', 'Focus Band', 'Focus Sash', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Perish Song', ], }, { From ea160e10595ca822fc02cc4045911d737d645e37 Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Mon, 19 Jan 2026 03:30:59 -0500 Subject: [PATCH 070/139] LC Mix and Mega: Ban Absolite Z (#11712) * LC Mix and Mega: Ban Absolite Z https://www.smogon.com/forums/threads/sv-lc-mix-and-mega.3749640/#post-10831401 * Update config/formats.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 85475837a5..e862283773 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2764,7 +2764,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard OMs', 'Little Cup', 'Sleep Clause Mod', 'Terastal Clause'], banlist: [ 'Basculin-White-Striped', 'Dunsparce', 'Duraludon', 'Meditite', 'Rufflet', 'Scyther', 'Sneasel', 'Sneasel-Hisui', 'Stantler', 'Moody', - 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Lucarionite Z', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Zygardite', + 'Absolite Z', 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Lucarionite Z', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Zygardite', 'Baton Pass', ], restricted: [ From dd3d52b8382d73d1dd2c67730c4067df325ab790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Tue, 20 Jan 2026 21:55:40 +0000 Subject: [PATCH 071/139] GSC: NU-PU tier shifts (#11717) * GSC: PU drops * Move Hitmontop from PU to NU --- data/mods/gen2/formats-data.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/data/mods/gen2/formats-data.ts b/data/mods/gen2/formats-data.ts index 29b2258e86..535228f0e3 100644 --- a/data/mods/gen2/formats-data.ts +++ b/data/mods/gen2/formats-data.ts @@ -57,7 +57,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, raticate: { - tier: "NU", + tier: "PU", }, spearow: { tier: "LC", @@ -69,7 +69,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, arbok: { - tier: "NU", + tier: "PU", }, pichu: { tier: "LC", @@ -267,7 +267,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, farfetchd: { - tier: "NU", + tier: "PU", }, doduo: { tier: "ZU", @@ -345,10 +345,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NU", }, hitmonchan: { - tier: "PUBL", + tier: "PU", }, hitmontop: { - tier: "PU", + tier: "NU", }, lickitung: { tier: "NU", @@ -540,7 +540,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, furret: { - tier: "PUBL", + tier: "PU", }, hoothoot: { tier: "LC", @@ -591,7 +591,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, azumarill: { - tier: "NU", + tier: "PU", }, sudowoodo: { tier: "NU", @@ -645,7 +645,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, dunsparce: { - tier: "NU", + tier: "PU", }, gligar: { tier: "UU", @@ -705,7 +705,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, houndour: { - tier: "NU", + tier: "PU", }, houndoom: { tier: "UUBL", From daddd5793a52df53fb5b88d6d0dc35f93f4de1a6 Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Thu, 22 Jan 2026 14:55:51 -0500 Subject: [PATCH 072/139] Super Staff Bros: Fix Flygonite (#11718) --- data/mods/gen9ssb/items.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/gen9ssb/items.ts b/data/mods/gen9ssb/items.ts index db1bfae705..754f73a283 100644 --- a/data/mods/gen9ssb/items.ts +++ b/data/mods/gen9ssb/items.ts @@ -14,7 +14,7 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { name: "Flygonite", spritenum: 111, itemUser: ["Flygon"], - megaStone: { "Trapinch": "Flygon" }, + megaStone: { "Flygon": "Trapinch" }, onTakeItem(item, source) { return !item.megaStone?.[source.baseSpecies.baseSpecies]; }, From 973e1e0b9690763aae3ad31191f660cbf65b9573 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:43:25 -0700 Subject: [PATCH 073/139] Gen 6/7 Mix and Mega: Fix validation --- config/formats.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index e862283773..7710fbd6fe 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2900,12 +2900,10 @@ export const Formats: import('../sim/dex-formats').FormatList = [ if (!item.megaStone && !item.isPrimalOrb && item.id !== 'ultranecroziumz') continue; const species = this.dex.species.get(set.species); const ability = this.dex.abilities.get(set.ability); - if ( - ((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies)) || - (item.id === 'ultranecroziumz' && species.name.startsWith('Necrozma-')) - ) continue; - if (this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`) || - this.ruleTable.isRestricted(`ability:${ability.id}`)) { + if ((this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`) || + this.ruleTable.isRestricted(`ability:${ability.id}`)) && + !(((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies) || + (item.id === 'ultranecroziumz' && species.name.startsWith('Necrozma-'))))) { return [`${species.name} is not allowed to hold ${item.name}.`]; } if (itemTable.has(item.id)) { @@ -2958,8 +2956,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ const item = this.dex.items.get(set.item); if (!item.megaStone && !item.isPrimalOrb) continue; const species = this.dex.species.get(set.species); - if ((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies)) continue; - if (this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`)) { + if ((this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`)) && + !((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies))) { return [`${species.name} is not allowed to hold ${item.name}.`]; } if (itemTable.has(item.id)) { From 7a560fae3f77e28824308624d8717dc0426bb27f Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 23 Jan 2026 23:14:12 -0700 Subject: [PATCH 074/139] 1v1 Factory: Update set generation logic --- config/formats.ts | 3 +- .../random-battles/gen9/1v1-factory-sets.json | 3562 ++++++++--------- data/random-battles/gen9/teams.ts | 45 +- 3 files changed, 1725 insertions(+), 1885 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 7710fbd6fe..5d403ac46f 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -28,13 +28,14 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { name: "[Gen 9] OU + Solgaleo", desc: `S/V OU but with Solgaleo.`, - threads: [`• THREAD COMING SOON™`], + threads: [`• OU + Solgaleo Metagame Discussion`], mod: 'gen9', ruleset: ['[Gen 9] OU', '+Solgaleo'], }, { name: "[Gen 9] 1v1 Factory", desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`, + threads: [`• 1v1 Factory Set Discussion`], mod: 'gen9', team: 'random1v1Factory', bestOfDefault: true, diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index ccc9e65beb..50269e29b0 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -1,4 +1,752 @@ { + "Hoopa-Unbound": { + "weight": 9, + "sets": [ + { + "species": "Hoopa-Unbound", + "item": "Choice Band", + "ability": "Magician", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Zen Headbutt"], ["Drain Punch", "Fire Punch"]], + "weight": 35 + }, + { + "species": "Hoopa-Unbound", + "item": "Choice Specs", + "ability": "Magician", + "nature": "Modest", + "evs": {"def": 4, "spa": 252, "spe": 252}, + "moves": [["Psychic"], ["Dark Pulse"], ["Thunderbolt"], ["Grass Knot", "Focus Blast"]], + "weight": 25 + }, + { + "species": "Hoopa-Unbound", + "item": "Assault Vest", + "ability": "Magician", + "nature": "Adamant", + "evs": {"hp": 168, "atk": 252, "def": 68, "spe": 20}, + "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Psychic Noise"], ["Knock Off"]], + "weight": 20 + }, + { + "species": "Hoopa-Unbound", + "item": "Life Orb", + "ability": "Magician", + "nature": "Lonely", + "evs": {"hp": 240, "def": 76, "spa": 96, "spe": 96}, + "moves": [["Gunk Shot"], ["Psychic"], ["Dark Pulse"], ["Calm Mind"]], + "weight": 20 + } + ] + }, + "Primarina": { + "weight": 9, + "sets": [ + { + "species": "Primarina", + "item": "Life Orb", + "ability": "Torrent", + "nature": "Modest", + "evs": {"def": 136, "spa": 120, "spe": 252}, + "moves": [["Encore"], ["Icy Wind"], ["Moonblast"], ["Hydro Cannon"]], + "weight": 40 + }, + { + "species": "Primarina", + "item": "Weakness Policy", + "ability": "Torrent", + "nature": "Bold", + "evs": {"hp": 88, "def": 244, "spe": 176}, + "moves": [["Hydro Cannon"], ["Draining Kiss", "Moonblast"], ["Calm Mind"], ["Charm"]], + "weight": 30 + }, + { + "species": "Primarina", + "item": "Choice Specs", + "ability": "Liquid Voice", + "nature": "Modest", + "evs": {"hp": 252, "def": 160, "spa": 24, "spd": 72}, + "moves": [["Hydro Cannon"], ["Moonblast"], ["Energy Ball"], ["Uproar"]], + "weight": 30 + } + ] + }, + "Ursaluna": { + "weight": 9, + "sets": [ + { + "species": "Ursaluna", + "item": "Choice Band", + "ability": "Guts", + "nature": "Adamant", + "evs": {"hp": 184, "atk": 228, "spd": 96}, + "moves": [["Headlong Rush"], ["Giga Impact"], ["Gunk Shot"], ["Avalanche", "Ice Punch"]], + "weight": 40 + }, + { + "species": "Ursaluna", + "item": "Flame Orb", + "ability": "Guts", + "nature": "Adamant", + "evs": {"atk": 164, "spd": 92, "spe": 252}, + "moves": [["Facade"], ["Headlong Rush"], ["Swords Dance"], ["Protect"]], + "weight": 40 + }, + { + "species": "Ursaluna", + "item": "Assault Vest", + "ability": "Guts", + "nature": "Adamant", + "evs": {"hp": 184, "atk": 188, "spd": 136}, + "moves": [["Giga Impact"], ["Earthquake"], ["Avalanche", "Counter"], ["Gunk Shot"]], + "weight": 20 + } + ] + }, + "Iron Crown": { + "weight": 8, + "sets": [ + { + "species": "Iron Crown", + "item": "Weakness Policy", + "ability": "Quark Drive", + "nature": "Bold", + "evs": {"hp": 240, "def": 232, "spe": 36}, + "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock"]], + "weight": 25 + }, + { + "species": "Iron Crown", + "item": "Weakness Policy", + "ability": "Quark Drive", + "nature": "Timid", + "evs": {"hp": 252, "spd": 4, "spe": 252}, + "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock", "Psychic Noise"]], + "weight": 25 + }, + { + "species": "Iron Crown", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Modest", + "evs": {"hp": 244, "def": 16, "spa": 196, "spd": 16, "spe": 36}, + "moves": [["Calm Mind"], ["Psychic Noise"], ["Tachyon Cutter"], ["Focus Blast", "Hyper Beam"]], + "weight": 50 + } + ] + }, + "Iron Valiant": { + "weight": 8, + "sets": [ + { + "species": "Iron Valiant", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Timid", + "evs": {"hp": 252, "def": 232, "spe": 24}, + "moves": [["Moonblast"], ["Protect"], ["Encore"], ["Disable"]], + "weight": 40 + }, + { + "species": "Iron Valiant", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"hp": 252, "def": 96, "spd": 136, "spe": 24}, + "moves": [["Spirit Break"], ["Protect"], ["Encore"], ["Disable"]], + "weight": 10 + }, + { + "species": "Iron Valiant", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Spirit Break"], ["Reversal"], ["Disable"], ["Substitute"]], + "weight": 20 + }, + { + "species": "Iron Valiant", + "item": "Choice Band", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"hp": 4, "atk": 220, "spd": 32, "spe": 252}, + "moves": [["Spirit Break"], ["Close Combat"], ["Giga Impact"], ["Trick", "Ice Punch"]], + "weight": 30 + } + ] + }, + "Metagross": { + "weight": 8, + "sets": [ + { + "species": "Metagross", + "item": "Weakness Policy", + "ability": "Clear Body", + "nature": "Impish", + "evs": {"hp": 248, "atk": 100, "def": 116, "spd": 44}, + "moves": [["Heavy Slam"], ["Bullet Punch"], ["Earthquake"], ["Psychic Fangs"]], + "weight": 40 + }, + { + "species": "Metagross", + "item": "Assault Vest", + "ability": "Clear Body", + "nature": "Impish", + "evs": {"hp": 252, "atk": 108, "def": 116, "spd": 32}, + "moves": [["Heavy Slam"], ["Psychic Fangs"], ["Earthquake"], ["Bullet Punch"]], + "weight": 40 + }, + { + "species": "Metagross", + "item": "Air Balloon", + "ability": "Clear Body", + "nature": "Impish", + "evs": {"hp": 248, "atk": 28, "def": 136, "spe": 96}, + "moves": [["Iron Defense"], ["Body Press"], ["Heavy Slam"], ["Bullet Punch"]], + "weight": 20 + } + ] + }, + "Pecharunt": { + "weight": 8, + "sets": [ + { + "species": "Pecharunt", + "item": "Maranga Berry", + "ability": "Poison Puppeteer", + "nature": "Calm", + "evs": {"hp": 248, "def": 4, "spd": 220, "spe": 36}, + "moves": [["Malignant Chain"], ["Curse"], ["Recover"], ["Parting Shot"]], + "weight": 70 + }, + { + "species": "Pecharunt", + "item": "Air Balloon", + "ability": "Poison Puppeteer", + "nature": "Bold", + "evs": {"hp": 248, "def": 224, "spe": 36}, + "moves": [["Malignant Chain"], ["Curse"], ["Parting Shot"], ["Recover"]], + "weight": 30 + } + ] + }, + "Spectrier": { + "weight": 8, + "sets": [ + { + "species": "Spectrier", + "item": "Life Orb", + "ability": "Grim Neigh", + "nature": "Timid", + "evs": {"hp": 4, "def": 124, "spa": 180, "spe": 200}, + "moves": [["Hex"], ["Hyper Beam"], ["Will-O-Wisp"], ["Calm Mind"]], + "weight": 50 + }, + { + "species": "Spectrier", + "item": "Sitrus Berry", + "ability": "Grim Neigh", + "nature": "Modest", + "evs": {"hp": 196, "def": 68, "spa": 4, "spd": 20, "spe": 220}, + "moves": [["Calm Mind"], ["Will-O-Wisp"], ["Hex"], ["Draining Kiss"]], + "weight": 30 + }, + { + "species": "Spectrier", + "item": "Clear Amulet", + "ability": "Grim Neigh", + "nature": "Calm", + "evs": {"hp": 36, "spd": 252, "spe": 220}, + "moves": [["Calm Mind"], ["Pain Split"], ["Shadow Ball"], ["Taunt"]], + "weight": 20 + } + ] + }, + "Corviknight": { + "weight": 8, + "sets": [ + { + "species": "Corviknight", + "item": "Maranga Berry", + "ability": "Pressure", + "nature": "Careful", + "evs": {"hp": 248, "def": 56, "spd": 84, "spe": 120}, + "moves": [["Iron Defense"], ["Body Press"], ["Taunt"], ["Roost"]], + "weight": 60 + }, + { + "species": "Corviknight", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 200, "spd": 56, "spe": 252}, + "moves": [["Protect"], ["Substitute"], ["Roost"], ["Taunt"]], + "weight": 25 + }, + { + "species": "Corviknight", + "item": "Life Orb", + "ability": "Pressure", + "nature": "Adamant", + "evs": {"hp": 24, "atk": 228, "def": 44, "spe": 212}, + "moves": [["Bulk Up"], ["Brave Bird"], ["Iron Head"], ["Taunt"]], + "weight": 15 + } + ] + }, + "Dragapult": { + "weight": 8, + "sets": [ + { + "species": "Dragapult", + "item": "Choice Band", + "ability": "Clear Body", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Dragon Darts", "Psychic Fangs"], ["Phantom Force"], ["U-turn"]], + "weight": 40 + }, + { + "species": "Dragapult", + "item": "Choice Specs", + "ability": "Infiltrator", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Shadow Ball"], ["Draco Meteor"], ["Fire Blast"], ["Thunderbolt", "Hydro Pump"]], + "weight": 40 + }, + { + "species": "Dragapult", + "item": "Weakness Policy", + "ability": "Clear Body", + "nature": "Timid", + "evs": {"hp": 48, "def": 248, "spe": 212}, + "moves": [["Will-O-Wisp"], ["Hex"], ["Substitute"], ["Disable"]], + "weight": 20 + } + ] + }, + "Goodra-Hisui": { + "weight": 8, + "sets": [ + { + "species": "Goodra-Hisui", + "item": "Choice Band", + "ability": "Sap Sipper", + "nature": "Adamant", + "evs": {"hp": 248, "atk": 236, "def": 24}, + "moves": [["Outrage"], ["Heavy Slam"], ["Earthquake"], ["Skitter Smack"]], + "weight": 35 + }, + { + "species": "Goodra-Hisui", + "item": "Assault Vest", + "ability": "Sap Sipper", + "nature": "Sassy", + "evs": {"hp": 248, "def": 24, "spa": 60, "spd": 176}, + "moves": [["Acid Spray"], ["Draco Meteor"], ["Flash Cannon"], ["Knock Off"]], + "weight": 30 + }, + { + "species": "Goodra-Hisui", + "item": "Chople Berry", + "ability": "Sap Sipper", + "nature": "Sassy", + "evs": {"hp": 244, "atk": 32, "def": 60, "spa": 84, "spd": 88}, + "moves": [["Acid Spray"], ["Draco Meteor"], ["Heavy Slam"], ["Counter"]], + "weight": 35 + } + ] + }, + "Landorus-Therian": { + "weight": 7, + "sets": [ + { + "species": "Landorus-Therian", + "item": "Life Orb", + "ability": "Intimidate", + "nature": "Adamant", + "evs": {"hp": 8, "atk": 136, "def": 196, "spe": 168}, + "moves": [["Earthquake"], ["Swords Dance"], ["Outrage"], ["Smack Down"]], + "weight": 40 + }, + { + "species": "Landorus-Therian", + "item": "Choice Band", + "ability": "Intimidate", + "nature": "Adamant", + "evs": {"hp": 232, "atk": 32, "def": 36, "spd": 120, "spe": 88}, + "moves": [["Earthquake"], ["Outrage"], ["Rock Tomb"], ["Fly"]], + "weight": 60 + } + ] + }, + "Ninetales-Alola": { + "weight": 7, + "sets": [ + { + "species": "Ninetales-Alola", + "item": "Leftovers", + "ability": "Snow Warning", + "nature": "Timid", + "evs": {"hp": 216, "def": 40, "spe": 252}, + "moves": [["Protect"], ["Encore"], ["Disable"], ["Moonblast"]], + "weight": 80 + }, + { + "species": "Ninetales-Alola", + "item": "Life Orb", + "ability": "Snow Warning", + "nature": "Timid", + "evs": {"hp": 208, "spa": 100, "spe": 200}, + "moves": [["Calm Mind"], ["Freeze-Dry"], ["Blizzard"], ["Moonblast"]], + "weight": 20 + } + ] + }, + "Ogerpon-Wellspring": { + "weight": 7, + "sets": [ + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Jolly", + "evs": {"hp": 248, "atk": 8, "spe": 252}, + "moves": [["Spiky Shield"], ["Ivy Cudgel", "Power Whip"], ["Leech Seed"], ["Substitute"]], + "weight": 30 + }, + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Jolly", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Power Whip"], ["Ivy Cudgel"], ["Encore"], ["Trailblaze", "Rock Tomb"]], + "weight": 25 + }, + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Adamant", + "evs": {"hp": 200, "atk": 192, "spe": 116}, + "moves": [["Power Whip"], ["Ivy Cudgel"], ["Knock Off"], ["Low Kick", "Play Rough", "Encore"]], + "weight": 25 + }, + { + "species": "Ogerpon-Wellspring", + "item": "Wellspring Mask", + "ability": "Water Absorb", + "nature": "Impish", + "evs": {"hp": 252, "atk": 80, "def": 144, "spe": 32}, + "moves": [["Trailblaze"], ["Counter"], ["Encore"], ["Ivy Cudgel"]], + "weight": 20 + } + ] + }, + "Raging Bolt": { + "weight": 7, + "sets": [ + { + "species": "Raging Bolt", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Modest", + "evs": {"hp": 240, "def": 24, "spa": 240}, + "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Taunt"]], + "weight": 50 + }, + { + "species": "Raging Bolt", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Modest", + "evs": {"hp": 96, "spa": 232, "spd": 44, "spe": 136}, + "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Calm Mind", "Taunt"]], + "weight": 50 + } + ] + }, + "Urshifu": { + "weight": 7, + "sets": [ + { + "species": "Urshifu", + "item": "Life Orb", + "ability": "Unseen Fist", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Bulk Up"], ["Wicked Blow"], ["Sucker Punch"], ["Close Combat", "Low Kick"]], + "weight": 65 + }, + { + "species": "Urshifu", + "item": "Assault Vest", + "ability": "Unseen Fist", + "nature": "Adamant", + "evs": {"hp": 160, "atk": 92, "def": 16, "spd": 160, "spe": 80}, + "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-Turn"]], + "weight": 35 + } + ] + }, + "Volcarona": { + "weight": 7, + "sets": [ + { + "species": "Volcarona", + "item": "Life Orb", + "ability": "Swarm", + "nature": "Modest", + "evs": {"hp": 252, "def": 32, "spa": 12, "spd": 16, "spe": 196}, + "moves": [["Quiver Dance"], ["Bug Buzz"], ["Overheat"], ["Substitute"]], + "weight": 60 + }, + { + "species": "Volcarona", + "item": "Passho Berry", + "ability": "Swarm", + "nature": "Calm", + "evs": {"hp": 192, "spa": 76, "spd": 44, "spe": 196}, + "moves": [["Quiver Dance"], ["Overheat"], ["Bug Buzz"], ["Giga Drain"]], + "weight": 40 + } + ] + }, + "Zapdos": { + "weight": 7, + "sets": [ + { + "species": "Zapdos", + "item": "Clear Amulet", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 248, "spd": 84, "spe": 176}, + "moves": [["Hurricane"], ["Thunderbolt"], ["Eerie Impulse"], ["Roost"]], + "weight": 60 + }, + { + "species": "Zapdos", + "item": "Life Orb", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 8, "spa": 200, "spd": 48, "spe": 252}, + "moves": [["Hurricane"], ["Thunderbolt"], ["Charge"], ["Heat Wave"]], + "weight": 20 + }, + { + "species": "Zapdos", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 248, "spa": 8, "spe": 252}, + "moves": [["Protect"], ["Substitute"], ["Roost"], ["Thunderbolt"]], + "weight": 20 + } + ] + }, + "Garchomp": { + "weight": 7, + "sets": [ + { + "species": "Garchomp", + "item": "Life Orb", + "ability": "Rough Skin", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 176, "spe": 80}, + "moves": [["Earthquake"], ["Scale Shot"], ["Swords Dance"], ["Outrage"]], + "weight": 60 + }, + { + "species": "Garchomp", + "item": "Choice Band", + "ability": "Rough Skin", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Earthquake"], ["Scale Shot"], ["Fire Fang", "Iron Head"]], + "weight": 40 + } + ] + }, + "Haxorus": { + "weight": 7, + "sets": [ + { + "species": "Haxorus", + "item": "Choice Band", + "ability": "Unnerve", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Outrage"], ["Scale Shot"], ["First Impression"], ["Close Combat", "Iron Tail", "Poison Jab", "Earthquake"]], + "weight": 60 + }, + { + "species": "Haxorus", + "item": "Choice Scarf", + "ability": "Unnerve", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Outrage"], ["Close Combat"], ["Rock Slide", "Poison Jab", "Iron Tail", "Earthquake"], ["X-Scissor", "Poison Jab", "Iron Tail", "Earthquake"]], + "weight": 40 + } + ] + }, + "Iron Hands": { + "weight": 7, + "sets": [ + { + "species": "Iron Hands", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Adamant", + "evs": {"atk": 204, "spd": 220, "spe": 84}, + "moves": [["Close Combat"], ["Supercell Slam"], ["Fake Out"], ["Swords Dance", "Earthquake", "Heavy Slam"]], + "weight": 100 + } + ] + }, + "Meowscarada": { + "weight": 7, + "sets": [ + { + "species": "Meowscarada", + "item": "Choice Band", + "ability": "Protean", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Flower Trick"], ["Knock Off"], ["Triple Axel"], ["Giga Impact", "Low Kick", "Play Rough"]], + "weight": 100 + } + ] + }, + "Roaring Moon": { + "weight": 6, + "sets": [ + { + "species": "Roaring Moon", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Jolly", + "evs": {"hp": 8, "atk": 156, "spd": 160, "spe": 184}, + "moves": [["Outrage"], ["Knock Off"], ["Acrobatics", "Dragon Dance"], ["Substitute"]], + "weight": 50 + }, + { + "species": "Roaring Moon", + "item": "Choice Band", + "ability": "Protosynthesis", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Knock Off"], ["Earthquake"], ["Iron Head"]], + "weight": 50 + } + ] + }, + "Sylveon": { + "weight": 6, + "sets": [ + { + "species": "Sylveon", + "item": "Life Orb", + "ability": "Pixilate", + "nature": "Modest", + "evs": {"hp": 104, "def": 224, "spa": 180}, + "moves": [["Hyper Beam"], ["Hyper Voice"], ["Calm Mind"], ["Fake Tears", "Shadow Ball", "Psyshock"]], + "weight": 70 + }, + { + "species": "Sylveon", + "item": "Weakness Policy", + "ability": "Pixilate", + "nature": "Bold", + "evs": {"hp": 88, "def": 244, "spe": 176}, + "moves": [["Hyper Beam"], ["Draining Kiss"], ["Charm"], ["Calm Mind"]], + "ivs": {"atk": 0}, + "weight": 30 + } + ] + }, + "Urshifu-Rapid-Strike": { + "weight": 6, + "sets": [ + { + "species": "Urshifu-Rapid-Strike", + "item": "Choice Band", + "ability": "Unseen Fist", + "nature": "Adamant", + "evs": {"hp": 252, "atk": 220, "def": 32, "spd": 4}, + "moves": [["Surging Strikes"], ["Close Combat"], ["Low Kick", "Thunder Punch"], ["Iron Head", "Ice Spinner"]], + "weight": 65 + }, + { + "species": "Urshifu-Rapid-Strike", + "item": "Life Orb", + "ability": "Unseen Fist", + "nature": "Jolly", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Surging Strikes"], ["Close Combat"], ["Bulk Up"], ["Aqua Jet"]], + "weight": 35 + } + ] + }, + "Volcanion": { + "weight": 6, + "sets": [ + { + "species": "Volcanion", + "item": "Life Orb", + "ability": "Water Absorb", + "nature": "Rash", + "evs": {"hp": 136, "atk": 8, "def": 88, "spa": 44, "spe": 232}, + "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Bomb"], ["Flame Charge"]], + "weight": 40 + }, + { + "species": "Volcanion", + "item": "Assault Vest", + "ability": "Water Absorb", + "nature": "Modest", + "evs": {"hp": 244, "spa": 184, "spd": 80}, + "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Wave"], ["Earth Power", "Flame Charge", "Focus Blast"]], + "weight": 35 + }, + { + "species": "Volcanion", + "item": "Air Balloon", + "ability": "Water Absorb", + "nature": "Modest", + "evs": {"hp": 136, "def": 88, "spa": 188, "spe": 96}, + "moves": [["Substitute"], ["Steam Eruption"], ["Overheat"], ["Sludge Wave"]], + "weight": 25 + } + ] + }, + "Walking Wake": { + "weight": 6, + "sets": [ + { + "species": "Walking Wake", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"def": 4, "spa": 252, "spe": 252}, + "moves": [["Draco Meteor"], ["Hydro Pump"], ["Flamethrower"], ["Hurricane"]], + "weight": 75 + }, + { + "species": "Walking Wake", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"hp": 8, "def": 56, "spa": 192, "spe": 252}, + "moves": [["Draco Meteor"], ["Hydro Pump"], ["Hurricane"], ["Chilling Water"]], + "weight": 25 + } + ] + }, "Annihilape": { "weight": 5, "sets": [ @@ -18,7 +766,7 @@ "nature": "Careful", "evs": {"hp": 248, "def": 156, "spd": 88, "spe": 16}, "moves": [["Bulk Up"], ["Rage Fist"], ["Encore"], ["Low Sweep"]], - "weight": 25 + "weight": 35 }, { "species": "Annihilape", @@ -27,104 +775,7 @@ "nature": "Impish", "evs": {"hp": 248, "def": 244, "spe": 16}, "moves": [["Counter"], ["Bulk Up"], ["Rage Fist"], ["Close Combat"]], - "weight": 25 - } - ] - }, - "Arcanine": { - "weight": 1, - "sets": [ - { - "species": "Arcanine", - "item": "Assault Vest", - "ability": "Intimidate", - "nature": "Naughty", - "evs": {"hp": 224, "atk": 192, "spd": 36, "spe": 56}, - "moves": [["Flare Blitz"], ["Play Rough"], ["Extreme Speed"], ["Overheat"]], - "weight": 100 - } - ] - }, - "Arcanine-Hisui": { - "weight": 2, - "sets": [ - { - "species": "Arcanine-Hisui", - "item": "Choice Band", - "ability": "Rock Head", - "nature": ["Adamant", "Jolly"], - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage", "Iron Head"]], - "weight": 50 - }, - { - "species": "Arcanine-Hisui", - "item": "Choice Scarf", - "ability": "Rock Head", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage"]], - "weight": 50 - } - ] - }, - "Avalugg": { - "weight": 1, - "sets": [ - { - "species": "Avalugg", - "item": "Choice Band", - "ability": "Sturdy", - "nature": "Adamant", - "evs": {"hp": 4, "atk": 252, "def": 252}, - "moves": [["Avalanche"], ["Body Press"], ["Heavy Slam"], ["Mirror Coat", "Earthquake"]], - "weight": 50 - }, - { - "species": "Avalugg", - "item": "Sitrus Berry", - "ability": "Sturdy", - "nature": "Impish", - "evs": {"hp": 252, "atk": 4, "def": 252}, - "moves": [["Body Press"], ["Iron Defense"], ["Recover"], ["Icicle Spear"]], - "weight": 50 - } - ] - }, - "Avalugg-Hisui": { - "weight": 2, - "sets": [ - { - "species": "Avalugg-Hisui", - "item": "Choice Band", - "ability": "Sturdy", - "nature": "Adamant", - "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Avalanche"], ["Heavy Slam"], ["Rock Blast", "Stone Edge"], ["Earthquake", "Mirror Coat", "Icicle Spear"]], - "weight": 100 - } - ] - }, - "Azumarill": { - "weight": 3, - "sets": [ - { - "species": "Azumarill", - "item": "Life Orb", - "ability": "Huge Power", - "nature": "Adamant", - "evs": {"hp": 148, "atk": 232, "spd": 84, "spe": 44}, - "moves": [["Play Rough"], ["Liquidation"], ["Trailblaze"], ["Encore"]], - "weight": 50 - }, - { - "species": "Azumarill", - "item": "Leftovers", - "ability": "Sap Sipper", - "nature": "Bold", - "evs": {"hp": 252, "def": 192, "spd": 64}, - "moves": [["Charm"], ["Rest"], ["Amnesia"], ["Chilling Water"]], - "weight": 50 + "weight": 15 } ] }, @@ -142,114 +793,6 @@ } ] }, - "Baxcalibur": { - "weight": 2, - "sets": [ - { - "species": "Baxcalibur", - "item": "Choice Band", - "ability": "Thermal Exchange", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Outrage"], ["Icicle Crash", "Icicle Spear"], ["Earthquake"], ["Ice Shard", "Scale Shot", "Iron Head"]], - "weight": 100 - } - ] - }, - "Bellibolt": { - "weight": 2, - "sets": [ - { - "species": "Bellibolt", - "item": "Custap Berry", - "ability": "Electromorphosis", - "nature": "Quiet", - "evs": {"hp": 252, "def": 24, "spa": 200, "spd": 32}, - "moves": [["Soak"], ["Thunder"], ["Parabolic Charge"], ["Endure"]], - "weight": 50 - }, - { - "species": "Bellibolt", - "item": "Life Orb", - "ability": "Electromorphosis", - "nature": "Quiet", - "evs": {"hp": 240, "def": 80, "spa": 136, "spd": 52}, - "moves": [["Thunder"], ["Parabolic Charge"], ["Sucker Punch"], ["Soak"]], - "weight": 50 - } - ] - }, - "Blastoise": { - "weight": 1, - "sets": [ - { - "species": "Blastoise", - "item": "Life Orb", - "ability": "Torrent", - "nature": "Bold", - "evs": {"hp": 132, "def": 136, "spa": 128, "spe": 112}, - "moves": [["Shell Smash"], ["Hydro Cannon"], ["Ice Beam"], ["Substitute"]], - "weight": 100 - } - ] - }, - "Blaziken": { - "weight": 1, - "sets": [ - { - "species": "Blaziken", - "item": "Liechi Berry", - "ability": "Speed Boost", - "nature": "Adamant", - "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Endure"], ["Flare Blitz"], ["Reversal"], ["Swords Dance"]], - "weight": 100 - } - ] - }, - "Carbink": { - "weight": 1, - "sets": [ - { - "species": "Carbink", - "item": "Shell Bell", - "ability": "Sturdy", - "nature": "Quirky", - "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 0, "spd": 0, "spe": 0}, - "level": 1, - "moves": [["Endeavor"], ["Sand Tomb"], ["Sandstorm"], ["Trick Room", "Protect", "Moonblast"]], - "weight": 100 - } - ] - }, - "Ceruledge": { - "weight": 1, - "sets": [ - { - "species": "Ceruledge", - "item": "Weakness Policy", - "ability": "Weak Armor", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Endure"], ["Flare Blitz"], ["Close Combat"], ["Poltergeist"]], - "weight": 100 - } - ] - }, - "Chansey": { - "weight": 1, - "sets": [ - { - "species": "Chansey", - "item": "Eviolite", - "ability": "Natural Cure", - "nature": "Bold", - "evs": {"hp": 252, "def": 252, "spd": 4}, - "moves": [["Seismic Toss"], ["Charm", "Defense Curl"], ["Soft-Boiled"], ["Thunder Wave"]], - "weight": 100 - } - ] - }, "Chien-Pao": { "weight": 5, "sets": [ @@ -264,55 +807,18 @@ } ] }, - "Clodsire": { - "weight": 1, - "sets": [ - { - "species": "Clodsire", - "item": "Kee Berry", - "ability": "Unaware", - "nature": "Relaxed", - "evs": {"hp": 252, "def": 252, "spd": 4}, - "moves": [["Curse"], ["Amnesia"], ["Toxic"], ["Recover"]], - "weight": 100 - } - ] - }, - "Corviknight": { - "weight": 8, - "sets": [ - { - "species": "Corviknight", - "item": "Maranga Berry", - "ability": "Pressure", - "nature": "Careful", - "evs": {"hp": 248, "def": 56, "spd": 84, "spe": 120}, - "moves": [["Iron Defense"], ["Body Press"], ["Taunt"], ["Roost"]], - "weight": 40 - }, - { - "species": "Corviknight", - "item": "Leftovers", - "ability": "Pressure", - "nature": "Timid", - "evs": {"hp": 200, "spd": 56, "spe": 252}, - "moves": [["Protect"], ["Substitute"], ["Roost"], ["Taunt"]], - "weight": 40 - }, - { - "species": "Corviknight", - "item": "Life Orb", - "ability": "Pressure", - "nature": "Adamant", - "evs": {"hp": 24, "atk": 228, "def": 44, "spe": 212}, - "moves": [["Bulk Up"], ["Brave Bird"], ["Iron Head"], ["Taunt"]], - "weight": 20 - } - ] - }, "Cresselia": { "weight": 5, "sets": [ + { + "species": "Cresselia", + "item": "Clear Amulet", + "ability": "Levitate", + "nature": "Bold", + "evs": {"hp": 252, "def": 44, "spd": 72, "spe": 140}, + "moves": [["Calm Mind"], ["Moonlight"], ["Stored Power"], ["Reflect"]], + "weight": 50 + }, { "species": "Cresselia", "item": "Choice Scarf", @@ -321,15 +827,245 @@ "evs": {"hp": 240, "def": 64, "spa": 56, "spd": 36, "spe": 112}, "moves": [["Psychic"], ["Ice Beam", "Moonblast"], ["Trick"], ["Moonlight"]], "weight": 50 + } + ] + }, + "Donphan": { + "weight": 5, + "sets": [ + { + "species": "Donphan", + "item": "Choice Band", + "ability": "Sturdy", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Earthquake"], ["Gunk Shot"], ["Head Smash"], ["Play Rough", "Ice Shard"]], + "weight": 80 }, { - "species": "Cresselia", - "item": "Clear Amulet", - "ability": "Levitate", - "nature": "Bold", - "evs": {"hp": 252, "def": 44, "spd": 72, "spe": 140}, - "moves": [["Calm Mind"], ["Moonlight"], ["Stored Power"], ["Future Sight", "Reflect"]], + "species": "Donphan", + "item": "Expert Belt", + "ability": "Sturdy", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Earthquake"], ["Gunk Shot"], ["Trailblaze"], ["Encore"]], + "weight": 20 + } + ] + }, + "Entei": { + "weight": 5, + "sets": [ + { + "species": "Entei", + "item": "Assault Vest", + "ability": "Inner Focus", + "nature": "Adamant", + "evs": {"hp": 240, "atk": 112, "def": 132, "spd": 24}, + "moves": [["Sacred Fire"], ["Eruption"], ["Flame Charge"], ["Extreme Speed"]], "weight": 50 + }, + { + "species": "Entei", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Jolly", + "evs": {"hp": 128, "def": 116, "spd": 12, "spe": 252}, + "moves": [["Sacred Fire"], ["Substitute"], ["Protect"], ["Flame Charge"]], + "weight": 50 + } + ] + }, + "Great Tusk": { + "weight": 5, + "sets": [ + { + "species": "Great Tusk", + "item": "Choice Band", + "ability": "Protosynthesis", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Earthquake", "Headlong Rush"], ["Close Combat"], ["Supercell Slam"], ["Ice Spinner", "Heavy Slam", "Megahorn"]], + "weight": 40 + }, + { + "species": "Great Tusk", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Adamant", + "evs": {"hp": 24, "atk": 224, "def": 56, "spe": 204}, + "moves": [["Bulk Up"], ["Headlong Rush"], ["Close Combat"], ["Ice Spinner", "Knock Off"]], + "weight": 30 + }, + { + "species": "Great Tusk", + "item": "Choice Scarf", + "ability": "Protosynthesis", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Earthquake"], ["Close Combat"], ["Head Smash"], ["Ice Spinner", "Knock Off", "Megahorn", "Heavy Slam"]], + "weight": 30 + } + ] + }, + "Manaphy": { + "weight": 5, + "sets": [ + { + "species": "Manaphy", + "item": "Life Orb", + "ability": "Hydration", + "nature": "Timid", + "evs": {"hp": 60, "def": 68, "spa": 128, "spe": 252}, + "moves": [["Tail Glow"], ["Surf"], ["Alluring Voice"], ["Energy Ball"]], + "weight": 50 + }, + { + "species": "Manaphy", + "item": "Clear Amulet", + "ability": "Hydration", + "nature": "Timid", + "evs": {"hp": 172, "def": 84, "spe": 252}, + "moves": [["Take Heart"], ["Acid Armor"], ["Rest"], ["Scald"]], + "weight": 25 + }, + { + "species": "Manaphy", + "item": ["Sitrus Berry", "Chesto Berry"], + "ability": "Hydration", + "nature": "Timid", + "evs": {"hp": 252, "def": 4, "spe": 252}, + "moves": [["Scald"], ["Acid Armor"], ["Take Heart"], ["Rest"]], + "weight": 25 + } + ] + }, + "Moltres-Galar": { + "weight": 5, + "sets": [ + { + "species": "Moltres-Galar", + "item": "Life Orb", + "ability": "Berserk", + "nature": "Modest", + "evs": {"atk": 4, "def": 232, "spa": 96, "spe": 176}, + "moves": [["Fiery Wrath"], ["Hurricane"], ["Taunt", "Sucker Punch"], ["Nasty Plot"]], + "weight": 50 + }, + { + "species": "Moltres-Galar", + "item": "Weakness Policy", + "ability": "Berserk", + "nature": "Modest", + "evs": {"hp": 240, "def": 216, "spa": 36, "spd": 16}, + "moves": [["Fiery Wrath"], ["Hurricane"], ["Sucker Punch"], ["Air Slash", "Nasty Plot", "Taunt"]], + "weight": 50 + } + ] + }, + "Registeel": { + "weight": 4, + "sets": [ + { + "species": "Registeel", + "item": "Leftovers", + "ability": "Clear Body", + "nature": "Timid", + "evs": {"hp": 252, "def": 4, "spe": 252}, + "moves": [["Iron Defense"], ["Amnesia"], ["Rest"], ["Body Press"]], + "weight": 100 + } + ] + }, + "Skeledirge": { + "weight": 4, + "sets": [ + { + "species": "Skeledirge", + "item": "Weakness Policy", + "ability": "Unaware", + "nature": "Bold", + "evs": {"hp": 248, "def": 100, "spa": 124, "spd": 36}, + "moves": [["Shadow Ball"], ["Blast Burn"], ["Torch Song"], ["Encore"]], + "weight": 50 + }, + { + "species": "Skeledirge", + "item": "Air Balloon", + "ability": "Unaware", + "nature": "Bold", + "evs": {"hp": 248, "def": 252, "spe": 8}, + "moves": [["Will-O-Wisp"], ["Torch Song"], ["Encore"], ["Slack Off", "Blast Burn"]], + "weight": 50 + } + ] + }, + "Sneasler": { + "weight": 4, + "sets": [ + { + "species": "Sneasler", + "item": "Normal Gem", + "ability": "Unburden", + "nature": "Adamant", + "evs": {"hp": 160, "atk": 252, "def": 44, "spd": 4, "spe": 48}, + "moves": [["Fake Out"], ["Gunk Shot"], ["Close Combat"], ["Feint"]], + "weight": 50 + }, + { + "species": "Sneasler", + "item": "Liechi Berry", + "ability": "Unburden", + "nature": ["Adamant", "Jolly"], + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Endure"], ["Gunk Shot"], ["Reversal"], ["Taunt", "Substitute"]], + "weight": 50 + } + ] + }, + "Zarude": { + "weight": 4, + "sets": [ + { + "species": "Zarude", + "item": "Weakness Policy", + "ability": "Leaf Guard", + "nature": "Jolly", + "evs": {"hp": 128, "atk": 144, "spd": 4, "spe": 232}, + "moves": [["Power Whip"], ["Knock Off"], ["Encore"], ["Bulk Up"]], + "weight": 50 + }, + { + "species": "Zarude", + "item": "Choice Band", + "ability": "Leaf Guard", + "nature": "Adamant", + "evs": {"hp": 120, "atk": 68, "spd": 76, "spe": 244}, + "moves": [["Knock Off"], ["Power Whip"], ["Rock Slide"], ["Bullet Seed", "Low Kick"]], + "weight": 50 + } + ] + }, + "Azumarill": { + "weight": 3, + "sets": [ + { + "species": "Azumarill", + "item": "Life Orb", + "ability": "Huge Power", + "nature": "Adamant", + "evs": {"hp": 148, "atk": 232, "spd": 84, "spe": 44}, + "moves": [["Play Rough"], ["Liquidation"], ["Trailblaze"], ["Encore"]], + "weight": 65 + }, + { + "species": "Azumarill", + "item": "Leftovers", + "ability": "Sap Sipper", + "nature": "Bold", + "evs": {"hp": 252, "def": 192, "spd": 64}, + "moves": [["Charm"], ["Rest"], ["Amnesia"], ["Chilling Water"]], + "weight": 35 } ] }, @@ -376,7 +1112,7 @@ { "species": "Dondozo", "item": "Choice Band", - "ability": ["Unaware", "Water Veil"], + "ability": "Unaware / Water Veil", "nature": "Impish", "evs": {"hp": 120, "atk": 188, "def": 16, "spd": 184}, "moves": [["Wave Crash"], ["Earthquake"], ["Avalanche"], ["Heavy Slam", "Outrage"]], @@ -384,84 +1120,6 @@ } ] }, - "Donphan": { - "weight": 5, - "sets": [ - { - "species": "Donphan", - "item": "Choice Band", - "ability": "Sturdy", - "nature": "Adamant", - "evs": {"hp": 8, "atk": 252, "spd": 248}, - "moves": [["Earthquake"], ["Gunk Shot"], ["Head Smash"], ["Play Rough", "Ice Shard"]], - "weight": 50 - }, - { - "species": "Donphan", - "item": "Expert Belt", - "ability": "Sturdy", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Earthquake"], ["Gunk Shot"], ["Trailblaze"], ["Encore"]], - "weight": 50 - } - ] - }, - "Dragapult": { - "weight": 8, - "sets": [ - { - "species": "Dragapult", - "item": "Choice Band", - "ability": "Clear Body", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Outrage"], ["Dragon Darts", "Psychic Fangs"], ["Phantom Force"], ["U-turn"]], - "weight": 40 - }, - { - "species": "Dragapult", - "item": "Choice Specs", - "ability": "Infiltrator", - "nature": "Modest", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Shadow Ball"], ["Draco Meteor"], ["Fire Blast"], ["Thunderbolt", "Hydro Pump"]], - "weight": 40 - }, - { - "species": "Dragapult", - "item": "Weakness Policy", - "ability": "Clear Body", - "nature": "Timid", - "evs": {"hp": 48, "def": 248, "spe": 212}, - "moves": [["Will-O-Wisp"], ["Hex"], ["Substitute"], ["Disable"]], - "weight": 20 - } - ] - }, - "Entei": { - "weight": 5, - "sets": [ - { - "species": "Entei", - "item": "Assault Vest", - "ability": "Inner Focus", - "nature": "Adamant", - "evs": {"hp": 240, "atk": 112, "def": 132, "spd": 24}, - "moves": [["Sacred Fire"], ["Eruption"], ["Flame Charge"], ["Extreme Speed"]], - "weight": 50 - }, - { - "species": "Entei", - "item": "Leftovers", - "ability": "Pressure", - "nature": "Jolly", - "evs": {"hp": 128, "def": 116, "spd": 12, "spe": 252}, - "moves": [["Sacred Fire"], ["Substitute"], ["Protect"], ["Flame Charge"]], - "weight": 50 - } - ] - }, "Espathra": { "weight": 3, "sets": [ @@ -476,417 +1134,6 @@ } ] }, - "Fezandipiti": { - "weight": 2, - "sets": [ - { - "species": "Fezandipiti", - "item": "Life Orb", - "ability": "Technician", - "nature": "Adamant", - "evs": {"hp": 88, "atk": 220, "spd": 136, "spe": 64}, - "moves": [["Gunk Shot"], ["Play Rough"], ["Dual Wingbeat"], ["Swords Dance"]], - "weight": 60 - }, - { - "species": "Fezandipiti", - "item": "Air Balloon", - "ability": "Toxic Chain", - "nature": "Calm", - "evs": {"hp": 252, "def": 124, "spd": 80, "spe": 52}, - "moves": [["Charm"], ["Moonblast"], ["Icy Wind"], ["Roost"]], - "weight": 40 - } - ] - }, - "Florges": { - "weight": 2, - "sets": [ - { - "species": "Florges", - "item": ["Clear Amulet", "Leftovers"], - "ability": "Flower Veil", - "nature": "Bold", - "evs": {"hp": 108, "def": 252, "spe": 148}, - "moves": [["Calm Mind"], ["Synthesis"], ["Moonblast"], ["Psychic Noise"]], - "weight": 50 - }, - { - "species": "Florges", - "item": "Choice Scarf", - "ability": "Flower Veil", - "nature": "Timid", - "evs": {"hp": 88, "def": 232, "spe": 188}, - "moves": [["Moonblast"], ["Trick"], ["Synthesis"], ["Calm Mind"]], - "weight": 50 - } - ] - }, - "Forretress": { - "weight": 1, - "sets": [ - { - "species": "Forretress", - "item": "Leftovers", - "ability": "Sturdy", - "nature": "Impish", - "evs": {"hp": 248, "def": 252, "spd": 8}, - "moves": [["Iron Defense"], ["Body Press"], ["Rest"], ["Counter"]], - "weight": 100 - } - ] - }, - "Gallade": { - "weight": 1, - "sets": [ - { - "species": "Gallade", - "item": "Choice Band", - "ability": "Sharpness", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Sacred Sword"], ["Psycho Cut"], ["Leaf Blade"], ["Triple Axel"]], - "weight": 100 - } - ] - }, - "Garchomp": { - "weight": 8, - "sets": [ - { - "species": "Garchomp", - "item": "Life Orb", - "ability": "Rough Skin", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 176, "spe": 80}, - "moves": [["Earthquake"], ["Scale Shot"], ["Swords Dance"], ["Outrage"]], - "weight": 50 - }, - { - "species": "Garchomp", - "item": "Choice Band", - "ability": "Rough Skin", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Outrage"], ["Earthquake"], ["Scale Shot"], ["Fire Fang", "Iron Head"]], - "weight": 50 - } - ] - }, - "Glastrier": { - "weight": 1, - "sets": [ - { - "species": "Glastrier", - "item": "Choice Band", - "ability": "Chilling Neigh", - "nature": "Adamant", - "evs": {"hp": 252, "atk": 252, "spd": 4}, - "moves": [["Avalanche"], ["Close Combat"], ["Heavy Slam"], ["High Horsepower", "Crunch"]], - "weight": 100 - } - ] - }, - "Goodra-Hisui": { - "weight": 8, - "sets": [ - { - "species": "Goodra-Hisui", - "item": "Custap Berry", - "ability": "Sap Sipper", - "nature": "Sassy", - "evs": {"hp": 248, "def": 24, "spa": 148, "spd": 88}, - "moves": [["Draco Meteor"], ["Sludge Wave", "Flash Cannon"], ["Acid Spray"], ["Endure"]], - "weight": 25 - }, - { - "species": "Goodra-Hisui", - "item": "Choice Band", - "ability": "Sap Sipper", - "nature": "Adamant", - "evs": {"hp": 248, "atk": 236, "def": 24}, - "moves": [["Outrage"], ["Heavy Slam"], ["Earthquake"], ["Skitter Smack"]], - "weight": 25 - }, - { - "species": "Goodra-Hisui", - "item": "Assault Vest", - "ability": "Sap Sipper", - "nature": "Sassy", - "evs": {"hp": 248, "def": 24, "spa": 60, "spd": 176}, - "moves": [["Acid Spray"], ["Draco Meteor"], ["Flash Cannon"], ["Knock Off"]], - "weight": 25 - }, - { - "species": "Goodra-Hisui", - "item": "Chople Berry", - "ability": "Sap Sipper", - "nature": "Sassy", - "evs": {"hp": 244, "atk": 32, "def": 60, "spa": 84, "spd": 88}, - "moves": [["Acid Spray"], ["Draco Meteor"], ["Heavy Slam"], ["Counter"]], - "weight": 25 - } - ] - }, - "Grafaiai": { - "weight": 1, - "sets": [ - { - "species": "Grafaiai", - "item": "Lagging Tail", - "ability": "Prankster", - "nature": "Sassy", - "evs": {"hp": 248, "def": 96, "spd": 164}, - "ivs": {"spe": 0}, - "moves": [["Poison Jab"], ["Dig"], ["Copycat"], ["Encore"]], - "weight": 100 - } - ] - }, - "Great Tusk": { - "weight": 5, - "sets": [ - { - "species": "Great Tusk", - "item": "Choice Band", - "ability": "Protosynthesis", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Earthquake", "Headlong Rush"], ["Close Combat"], ["Supercell Slam"], ["Ice Spinner", "Heavy Slam", "Megahorn"]], - "weight": 40 - }, - { - "species": "Great Tusk", - "item": "Booster Energy", - "ability": "Protosynthesis", - "nature": "Adamant", - "evs": {"hp": 24, "atk": 224, "def": 56, "spe": 204}, - "moves": [["Bulk Up"], ["Headlong Rush"], ["Close Combat"], ["Ice Spinner", "Knock Off"]], - "weight": 30 - }, - { - "species": "Great Tusk", - "item": "Choice Scarf", - "ability": "Protosynthesis", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Earthquake"], ["Close Combat"], ["Head Smash"], ["Ice Spinner", "Knock Off", "Megahorn", "Heavy Slam"]], - "weight": 30 - } - ] - }, - "Greninja": { - "weight": 2, - "sets": [ - { - "species": "Greninja", - "item": "Choice Specs", - "ability": "Protean", - "nature": "Timid", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Ice Beam"], ["Hydro Cannon"], ["Sludge Wave"], ["Dark Pulse", "Grass Knot"]], - "weight": 40 - }, - { - "species": "Greninja", - "item": "Petaya Berry", - "ability": "Torrent", - "nature": "Modest", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "ivs": {"hp": 30}, - "moves": [["Taunt"], ["Hydro Cannon"], ["Dark Pulse"], ["Substitute"]], - "weight": 30 - }, - { - "species": "Greninja", - "item": "Life Orb", - "ability": "Protean", - "nature": "Hasty", - "evs": {"atk": 252, "spa": 8, "spd": 64, "spe": 184}, - "moves": [["Gunk Shot"], ["Hydro Cannon"], ["U-turn"], ["Shadow Sneak"]], - "weight": 30 - } - ] - }, - "Haxorus": { - "weight": 7, - "sets": [ - { - "species": "Haxorus", - "item": "Choice Band", - "ability": "Unnerve", - "nature": "Adamant", - "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Outrage"], ["Scale Shot"], ["First Impression"], ["Close Combat", "Iron Tail", "Poison Jab", "Earthquake"]], - "weight": 50 - }, - { - "species": "Haxorus", - "item": "Choice Scarf", - "ability": "Unnerve", - "nature": "Adamant", - "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Outrage"], ["Close Combat"], ["Poison Jab", "Iron Tail"], ["Rock Slide", "Earthquake"]], - "weight": 50 - } - ] - }, - "Heatran": { - "weight": 1, - "sets": [ - { - "species": "Heatran", - "item": "Air Balloon", - "ability": "Flame Body", - "nature": "Modest", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Overheat"], ["Flash Cannon"], ["Substitute", "Endure", "Earth Power"], ["Metal Sound"]], - "weight": 100 - } - ] - }, - "Hoopa-Unbound": { - "weight": 10, - "sets": [ - { - "species": "Hoopa-Unbound", - "item": "Choice Band", - "ability": "Magician", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Zen Headbutt"], ["Drain Punch", "Fire Punch"]], - "weight": 20 - }, - { - "species": "Hoopa-Unbound", - "item": "Choice Specs", - "ability": "Magician", - "nature": "Modest", - "evs": {"def": 4, "spa": 252, "spe": 252}, - "moves": [["Psychic"], ["Dark Pulse"], ["Thunderbolt"], ["Grass Knot", "Focus Blast"]], - "weight": 20 - }, - { - "species": "Hoopa-Unbound", - "item": "Assault Vest", - "ability": "Magician", - "nature": "Adamant", - "evs": {"hp": 168, "atk": 252, "def": 68, "spe": 20}, - "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Psychic Noise"], ["Knock Off"]], - "weight": 20 - }, - { - "species": "Hoopa-Unbound", - "item": "Custap Berry", - "ability": "Magician", - "nature": "Naughty", - "evs": {"hp": 132, "atk": 220, "def": 140, "spe": 16}, - "moves": [["Psychic"], ["Hyperspace Fury"], ["Gunk Shot"], ["Endure"]], - "weight": 20 - }, - { - "species": "Hoopa-Unbound", - "item": "Life Orb", - "ability": "Magician", - "nature": "Lonely", - "evs": {"hp": 240, "def": 76, "spa": 96, "spe": 96}, - "moves": [["Gunk Shot"], ["Psychic"], ["Dark Pulse"], ["Calm Mind"]], - "weight": 20 - } - ] - }, - "Iron Boulder": { - "weight": 1, - "sets": [ - { - "species": "Iron Boulder", - "item": "Choice Band", - "ability": "Quark Drive", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Mighty Cleave"], ["Zen Headbutt"], ["Sacred Sword"], ["Megahorn"]], - "weight": 100 - } - ] - }, - "Iron Bundle": { - "weight": 1, - "sets": [ - { - "species": "Iron Bundle", - "item": "Booster Energy", - "ability": "Quark Drive", - "nature": "Modest", - "evs": {"hp": 28, "spa": 116, "spd": 216, "spe": 148}, - "moves": [["Thief"], ["Hydro Pump"], ["Freeze-Dry"], ["Encore"]], - "weight": 50 - }, - { - "species": "Iron Bundle", - "item": "Choice Specs", - "ability": "Quark Drive", - "nature": "Timid", - "evs": {"hp": 44, "def": 152, "spa": 144, "spe": 168}, - "moves": [["Ice Beam"], ["Freeze-Dry"], ["Hydro Pump"], ["Chilling Water"]], - "weight": 50 - } - ] - }, - "Iron Crown": { - "weight": 9, - "sets": [ - { - "species": "Iron Crown", - "item": "Weakness Policy", - "ability": "Quark Drive", - "nature": "Bold", - "evs": {"hp": 240, "def": 232, "spe": 36}, - "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock"]], - "weight": 25 - }, - { - "species": "Iron Crown", - "item": "Weakness Policy", - "ability": "Quark Drive", - "nature": "Timid", - "evs": {"hp": 252, "spd": 4, "spe": 252}, - "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock", "Psychic Noise"]], - "weight": 25 - }, - { - "species": "Iron Crown", - "item": "Booster Energy", - "ability": "Quark Drive", - "nature": "Modest", - "evs": {"hp": 244, "def": 16, "spa": 196, "spd": 16, "spe": 36}, - "moves": [["Calm Mind"], ["Psychic Noise"], ["Tachyon Cutter"], ["Focus Blast", "Hyper Beam"]], - "weight": 50 - } - ] - }, - "Iron Hands": { - "weight": 7, - "sets": [ - { - "species": "Iron Hands", - "item": "Booster Energy", - "ability": "Quark Drive", - "nature": "Adamant", - "evs": {"atk": 204, "spd": 220, "spe": 84}, - "moves": [["Close Combat"], ["Supercell Slam"], ["Fake Out"], ["Swords Dance", "Earthquake", "Heavy Slam"]], - "weight": 75 - }, - { - "species": "Iron Hands", - "item": "Custap Berry", - "ability": "Quark Drive", - "nature": "Adamant", - "evs": {"hp": 32, "atk": 252, "def": 44, "spd": 96, "spe": 84}, - "moves": [["Supercell Slam"], ["Reversal"], ["Endure"], ["Heavy Slam", "Swords Dance"]], - "weight": 25 - } - ] - }, "Iron Moth": { "weight": 3, "sets": [ @@ -896,85 +1143,7 @@ "ability": "Quark Drive", "nature": "Timid", "evs": {"hp": 4, "spa": 252, "spe": 252}, - "moves": [["Overheat"], ["Sludge Wave"], ["Bug Buzz", "Dazzling Gleam", "Hurricane"], ["Protect", "Endure"]], - "weight": 100 - } - ] - }, - "Iron Treads": { - "weight": 2, - "sets": [ - { - "species": "Iron Treads", - "item": "Choice Band", - "ability": "Quark Drive", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Heavy Slam"], ["Earthquake"], ["Megahorn"], ["Ice Spinner"]], - "weight": 70 - }, - { - "species": "Iron Treads", - "item": "Booster Energy", - "ability": "Quark Drive", - "nature": "Jolly", - "evs": {"hp": 252, "atk": 116, "def": 60, "spe": 80}, - "moves": [["Iron Defense"], ["Body Press"], ["Earthquake"], ["Heavy Slam"]], - "weight": 30 - } - ] - }, - "Iron Valiant": { - "weight": 9, - "sets": [ - { - "species": "Iron Valiant", - "item": "Booster Energy", - "ability": "Quark Drive", - "nature": "Timid", - "evs": {"hp": 252, "def": 232, "spe": 24}, - "moves": [["Moonblast"], ["Protect"], ["Encore"], ["Disable"]], - "weight": 25 - }, - { - "species": "Iron Valiant", - "item": "Booster Energy", - "ability": "Quark Drive", - "nature": "Jolly", - "evs": {"hp": 252, "def": 96, "spd": 136, "spe": 24}, - "moves": [["Spirit Break"], ["Protect"], ["Encore"], ["Disable"]], - "weight": 25 - }, - { - "species": "Iron Valiant", - "item": "Booster Energy", - "ability": "Quark Drive", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Spirit Break"], ["Reversal"], ["Disable"], ["Substitute"]], - "weight": 25 - }, - { - "species": "Iron Valiant", - "item": "Choice Band", - "ability": "Quark Drive", - "nature": "Jolly", - "evs": {"hp": 4, "atk": 220, "spd": 32, "spe": 252}, - "moves": [["Spirit Break"], ["Close Combat"], ["Giga Impact"], ["Trick", "Ice Punch"]], - "weight": 25 - } - ] - }, - "Klefki": { - "weight": 1, - "sets": [ - { - "species": "Klefki", - "item": "Leftovers", - "ability": "Prankster", - "nature": "Bold", - "evs": {"hp": 200, "def": 128, "spa": 24, "spd": 156}, - "moves": [["Draining Kiss"], ["Iron Defense"], ["Calm Mind"], ["Stored Power"]], + "moves": [["Overheat"], ["Sludge Wave"], ["Bug Buzz"], ["Dazzling Gleam", "Hurricane"]], "weight": 100 } ] @@ -1011,314 +1180,6 @@ } ] }, - "Landorus": { - "weight": 2, - "sets": [ - { - "species": "Landorus", - "item": "Life Orb", - "ability": "Sheer Force", - "nature": "Timid", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Earth Power"], ["Sludge Wave"], ["Focus Blast", "Taunt"], ["Smack Down", "Rock Slide"]], - "weight": 100 - } - ] - }, - "Landorus-Therian": { - "weight": 8, - "sets": [ - { - "species": "Landorus-Therian", - "item": "Life Orb", - "ability": "Intimidate", - "nature": "Adamant", - "evs": {"hp": 8, "atk": 136, "def": 196, "spe": 168}, - "moves": [["Earthquake"], ["Swords Dance"], ["Outrage"], ["Smack Down"]], - "weight": 50 - }, - { - "species": "Landorus-Therian", - "item": "Choice Band", - "ability": "Intimidate", - "nature": "Adamant", - "evs": {"hp": 232, "atk": 32, "def": 36, "spd": 120, "spe": 88}, - "moves": [["Earthquake"], ["Outrage"], ["Rock Tomb"], ["Fly"]], - "weight": 50 - } - ] - }, - "Latias": { - "weight": 1, - "sets": [ - { - "species": "Latias", - "item": "Weakness Policy", - "ability": "Levitate", - "nature": "Timid", - "evs": {"hp": 252, "spd": 4, "spe": 252}, - "moves": [["Reflect"], ["Calm Mind"], ["Stored Power"], ["Draco Meteor"]], - "weight": 100 - } - ] - }, - "Magnezone": { - "weight": 1, - "sets": [ - { - "species": "Magnezone", - "item": "Custap Berry", - "ability": "Sturdy", - "nature": "Modest", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Endure"], ["Thunderbolt"], ["Metal Sound"], ["Flash Cannon"]], - "weight": 50 - }, - { - "species": "Magnezone", - "item": "Choice Specs", - "ability": "Sturdy", - "nature": "Modest", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Hyper Beam"], ["Thunderbolt"], ["Flash Cannon"], ["Mirror Coat"]], - "weight": 50 - } - ] - }, - "Manaphy": { - "weight": 5, - "sets": [ - { - "species": "Manaphy", - "item": "Life Orb", - "ability": "Hydration", - "nature": "Timid", - "evs": {"hp": 60, "def": 68, "spa": 128, "spe": 252}, - "moves": [["Tail Glow"], ["Surf"], ["Alluring Voice"], ["Energy Ball"]], - "weight": 50 - }, - { - "species": "Manaphy", - "item": "Clear Amulet", - "ability": "Hydration", - "nature": "Timid", - "evs": {"hp": 172, "def": 84, "spe": 252}, - "moves": [["Take Heart"], ["Acid Armor"], ["Rest"], ["Scald"]], - "weight": 25 - }, - { - "species": "Manaphy", - "item": ["Sitrus Berry", "Chesto Berry"], - "ability": "Hydration", - "nature": "Timid", - "evs": {"hp": 252, "def": 4, "spe": 252}, - "moves": [["Scald"], ["Acid Armor"], ["Take Heart"], ["Rest"]], - "weight": 25 - } - ] - }, - "Maushold-Four": { - "weight": 1, - "sets": [ - { - "species": "Maushold-Four", - "item": "Wide Lens", - "ability": "Technician", - "nature": "Jolly", - "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Population Bomb"], ["Feint"], ["Encore"], ["Tickle", "Tidy Up"]], - "weight": 100 - } - ] - }, - "Meowscarada": { - "weight": 7, - "sets": [ - { - "species": "Meowscarada", - "item": "Choice Band", - "ability": "Protean", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Flower Trick"], ["Knock Off"], ["Triple Axel"], ["Giga Impact", "Low Kick", "Play Rough"]], - "weight": 100 - } - ] - }, - "Metagross": { - "weight": 9, - "sets": [ - { - "species": "Metagross", - "item": "Weakness Policy", - "ability": "Clear Body", - "nature": "Impish", - "evs": {"hp": 248, "atk": 100, "def": 116, "spd": 44}, - "moves": [["Heavy Slam"], ["Bullet Punch"], ["Earthquake"], ["Psychic Fangs"]], - "weight": 40 - }, - { - "species": "Metagross", - "item": "Assault Vest", - "ability": "Clear Body", - "nature": "Impish", - "evs": {"hp": 252, "atk": 108, "def": 116, "spd": 32}, - "moves": [["Heavy Slam"], ["Psychic Fangs"], ["Earthquake"], ["Bullet Punch"]], - "weight": 40 - }, - { - "species": "Metagross", - "item": "Air Balloon", - "ability": "Clear Body", - "nature": "Impish", - "evs": {"hp": 248, "atk": 28, "def": 136, "spe": 96}, - "moves": [["Iron Defense"], ["Body Press"], ["Heavy Slam"], ["Bullet Punch"]], - "weight": 20 - } - ] - }, - "Moltres-Galar": { - "weight": 5, - "sets": [ - { - "species": "Moltres-Galar", - "item": "Custap Berry", - "ability": "Berserk", - "nature": "Modest", - "evs": {"hp": 248, "def": 148, "spa": 104, "spd": 8}, - "moves": [["Hurricane"], ["Fiery Wrath"], ["Endure"], ["Nasty Plot"]], - "weight": 40 - }, - { - "species": "Moltres-Galar", - "item": "Life Orb", - "ability": "Berserk", - "nature": "Modest", - "evs": {"atk": 4, "def": 232, "spa": 96, "spe": 176}, - "moves": [["Fiery Wrath"], ["Hurricane"], ["Taunt", "Sucker Punch"], ["Nasty Plot"]], - "weight": 30 - }, - { - "species": "Moltres-Galar", - "item": "Weakness Policy", - "ability": "Berserk", - "nature": "Modest", - "evs": {"hp": 240, "def": 216, "spa": 36, "spd": 16}, - "moves": [["Fiery Wrath"], ["Hurricane"], ["Sucker Punch"], ["Air Slash", "Nasty Plot", "Taunt"]], - "weight": 30 - } - ] - }, - "Ninetales-Alola": { - "weight": 8, - "sets": [ - { - "species": "Ninetales-Alola", - "item": "Leftovers", - "ability": "Snow Warning", - "nature": "Timid", - "evs": {"hp": 216, "def": 40, "spe": 252}, - "moves": [["Protect"], ["Encore"], ["Disable"], ["Moonblast"]], - "weight": 80 - }, - { - "species": "Ninetales-Alola", - "item": "Life Orb", - "ability": "Snow Warning", - "nature": "Timid", - "evs": {"hp": 208, "spa": 100, "spe": 200}, - "moves": [["Calm Mind"], ["Freeze-Dry"], ["Blizzard"], ["Moonblast"]], - "weight": 20 - } - ] - }, - "Ogerpon-Wellspring": { - "weight": 8, - "sets": [ - { - "species": "Ogerpon-Wellspring", - "item": "Wellspring Mask", - "ability": "Water Absorb", - "nature": "Jolly", - "evs": {"hp": 248, "atk": 8, "spe": 252}, - "moves": [["Spiky Shield"], ["Ivy Cudgel", "Power Whip"], ["Leech Seed"], ["Substitute"]], - "weight": 40 - }, - { - "species": "Ogerpon-Wellspring", - "item": "Wellspring Mask", - "ability": "Water Absorb", - "nature": "Jolly", - "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Power Whip"], ["Ivy Cudgel"], ["Encore"], ["Trailblaze", "Rock Tomb"]], - "weight": 20 - }, - { - "species": "Ogerpon-Wellspring", - "item": "Wellspring Mask", - "ability": "Water Absorb", - "nature": "Adamant", - "evs": {"hp": 200, "atk": 192, "spe": 116}, - "moves": [["Power Whip"], ["Ivy Cudgel"], ["Knock Off"], ["Low Kick", "Play Rough", "Encore"]], - "weight": 20 - }, - { - "species": "Ogerpon-Wellspring", - "item": "Wellspring Mask", - "ability": "Water Absorb", - "nature": "Impish", - "evs": {"hp": 252, "atk": 80, "def": 144, "spe": 32}, - "moves": [["Trailblaze"], ["Counter"], ["Encore"], ["Ivy Cudgel"]], - "weight": 20 - } - ] - }, - "Okidogi": { - "weight": 1, - "sets": [ - { - "species": "Okidogi", - "item": "Choice Band", - "ability": "Toxic Chain", - "nature": "Adamant", - "evs": {"hp": 216, "atk": 164, "spd": 28, "spe": 100}, - "moves": [["Gunk Shot"], ["Low Kick"], ["Knock Off"], ["Outrage"]], - "weight": 50 - }, - { - "species": "Okidogi", - "item": "Assault Vest", - "ability": "Toxic Chain", - "nature": "Adamant", - "evs": {"hp": 104, "atk": 92, "spd": 96, "spe": 216}, - "moves": [["Gunk Shot"], ["Close Combat"], ["Poison Jab"], ["Counter"]], - "weight": 50 - } - ] - }, - "Pecharunt": { - "weight": 9, - "sets": [ - { - "species": "Pecharunt", - "item": "Maranga Berry", - "ability": "Poison Puppeteer", - "nature": "Calm", - "evs": {"hp": 248, "def": 4, "spd": 220, "spe": 36}, - "moves": [["Malignant Chain"], ["Curse"], ["Recover"], ["Parting Shot"]], - "weight": 50 - }, - { - "species": "Pecharunt", - "item": "Air Balloon", - "ability": "Poison Puppeteer", - "nature": "Bold", - "evs": {"hp": 248, "def": 224, "spe": 36}, - "moves": [["Malignant Chain"], ["Curse"], ["Parting Shot"], ["Recover"]], - "weight": 50 - } - ] - }, "Porygon-Z": { "weight": 3, "sets": [ @@ -1329,7 +1190,7 @@ "nature": "Modest", "evs": {"hp": 132, "def": 16, "spa": 160, "spd": 12, "spe": 188}, "moves": [["Hyper Beam"], ["Uproar"], ["Dark Pulse"], ["Thunderbolt"]], - "weight": 40 + "weight": 50 }, { "species": "Porygon-Z", @@ -1338,131 +1199,7 @@ "nature": ["Timid", "Modest"], "evs": {"hp": 12, "spa": 208, "spd": 36, "spe": 252}, "moves": [["Hyper Beam"], ["Ice Beam"], ["Dark Pulse"], ["Trick"]], - "weight": 40 - }, - { - "species": "Porygon-Z", - "item": "Custap Berry", - "ability": "Adaptability", - "nature": "Modest", - "evs": {"hp": 240, "spa": 252, "spe": 16}, - "moves": [["Nasty Plot"], ["Uproar"], ["Hyper Beam"], ["Endure"]], - "weight": 20 - } - ] - }, - "Porygon2": { - "weight": 1, - "sets": [ - { - "species": "Porygon2", - "item": "Eviolite", - "ability": "Analytic", - "nature": "Bold", - "evs": {"hp": 136, "def": 244, "spa": 128}, - "moves": [["Hyper Beam"], ["Ice Beam"], ["Eerie Impulse"], ["Recover"]], - "weight": 100 - } - ] - }, - "Primarina": { - "weight": 10, - "sets": [ - { - "species": "Primarina", - "item": "Life Orb", - "ability": "Torrent", - "nature": "Modest", - "evs": {"def": 136, "spa": 120, "spe": 252}, - "moves": [["Encore"], ["Icy Wind"], ["Moonblast"], ["Hydro Cannon"]], - "weight": 25 - }, - { - "species": "Primarina", - "item": "Weakness Policy", - "ability": "Torrent", - "nature": "Bold", - "evs": {"hp": 88, "def": 244, "spe": 176}, - "moves": [["Hydro Cannon"], ["Draining Kiss", "Moonblast"], ["Calm Mind"], ["Charm", "Reflect"]], - "weight": 25 - }, - { - "species": "Primarina", - "item": "Custap Berry", - "ability": "Torrent", - "nature": "Modest", - "evs": {"hp": 144, "def": 216, "spa": 148}, - "moves": [["Hydro Cannon"], ["Moonblast"], ["Endure"], ["Encore", "Calm Mind"]], - "weight": 25 - }, - { - "species": "Primarina", - "item": "Choice Specs", - "ability": "Liquid Voice", - "nature": "Modest", - "evs": {"hp": 252, "def": 160, "spa": 24, "spd": 72}, - "moves": [["Hydro Cannon"], ["Moonblast"], ["Energy Ball"], ["Uproar"]], - "weight": 25 - } - ] - }, - "Raging Bolt": { - "weight": 8, - "sets": [ - { - "species": "Raging Bolt", - "item": "Booster Energy", - "ability": "Protosynthesis", - "nature": "Modest", - "evs": {"hp": 240, "def": 24, "spa": 240}, - "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Taunt"]], "weight": 50 - }, - { - "species": "Raging Bolt", - "item": "Booster Energy", - "ability": "Protosynthesis", - "nature": "Modest", - "evs": {"hp": 96, "spa": 232, "spd": 44, "spe": 136}, - "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Calm Mind", "Taunt"]], - "weight": 50 - } - ] - }, - "Registeel": { - "weight": 5, - "sets": [ - { - "species": "Registeel", - "item": "Leftovers", - "ability": "Clear Body", - "nature": "Timid", - "evs": {"hp": 252, "def": 4, "spe": 252}, - "moves": [["Iron Defense"], ["Amnesia"], ["Rest"], ["Body Press"]], - "weight": 100 - } - ] - }, - "Rhyperior": { - "weight": 2, - "sets": [ - { - "species": "Rhyperior", - "item": "Custap Berry", - "ability": "Solid Rock", - "nature": "Adamant", - "evs": {"hp": 72, "atk": 252, "def": 184}, - "moves": [["Earthquake"], ["Rock Wrecker"], ["Endure"], ["Swords Dance"]], - "weight": 60 - }, - { - "species": "Rhyperior", - "item": "Choice Band", - "ability": "Solid Rock", - "nature": "Adamant", - "evs": {"hp": 248, "atk": 252, "def": 8}, - "moves": [["Earthquake"], ["Rock Wrecker"], ["Rock Blast"], ["Avalanche"]], - "weight": 40 } ] }, @@ -1498,49 +1235,457 @@ } ] }, - "Roaring Moon": { - "weight": 7, + "Scizor": { + "weight": 3, "sets": [ { - "species": "Roaring Moon", - "item": "Booster Energy", - "ability": "Protosynthesis", - "nature": "Jolly", - "evs": {"hp": 8, "atk": 156, "spd": 160, "spe": 184}, - "moves": [["Outrage"], ["Knock Off"], ["Acrobatics", "Dragon Dance"], ["Substitute"]], + "species": "Scizor", + "item": "Choice Band", + "ability": "Technician", + "nature": "Adamant", + "evs": {"hp": 228, "atk": 252, "spd": 28}, + "moves": [["Bullet Punch"], ["Bug Bite"], ["Close Combat", "Dual Wingbeat"], ["Knock Off"]], "weight": 50 }, { - "species": "Roaring Moon", - "item": "Choice Band", - "ability": "Protosynthesis", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Outrage"], ["Knock Off"], ["Earthquake"], ["Iron Head"]], + "species": "Scizor", + "item": "Life Orb", + "ability": "Technician", + "nature": "Adamant", + "evs": {"hp": 228, "atk": 60, "def": 136, "spd": 84}, + "moves": [["Bullet Punch"], ["Swords Dance"], ["Dual Wingbeat"], ["Close Combat"]], "weight": 50 } ] }, - "Sableye": { - "weight": 1, + "Serperior": { + "weight": 3, "sets": [ { - "species": "Sableye", - "item": "Choice Scarf", - "ability": "Prankster", - "nature": "Impish", - "evs": {"hp": 252, "def": 252, "spd": 4}, - "moves": [["Trick"], ["Disable"], ["Recover"], ["Fling"]], + "species": "Serperior", + "item": "Leftovers", + "ability": "Contrary", + "nature": "Timid", + "evs": {"hp": 252, "spa": 4, "spe": 252}, + "moves": [["Protect"], ["Substitute"], ["Leech Seed"], ["Leaf Storm"]], + "weight": 100 + } + ] + }, + "Arcanine-Hisui": { + "weight": 3, + "sets": [ + { + "species": "Arcanine-Hisui", + "item": "Choice Band", + "ability": "Rock Head", + "nature": ["Adamant", "Jolly"], + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage", "Iron Head"]], "weight": 50 }, { - "species": "Sableye", + "species": "Arcanine-Hisui", + "item": "Choice Scarf", + "ability": "Rock Head", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage"]], + "weight": 50 + } + ] + }, + "Bellibolt": { + "weight": 3, + "sets": [ + { + "species": "Bellibolt", + "item": "Life Orb", + "ability": "Electromorphosis", + "nature": "Quiet", + "evs": {"hp": 240, "def": 80, "spa": 136, "spd": 52}, + "moves": [["Thunder"], ["Parabolic Charge"], ["Sucker Punch"], ["Soak"]], + "weight": 100 + } + ] + }, + "Florges": { + "weight": 3, + "sets": [ + { + "species": "Florges", + "item": ["Clear Amulet", "Leftovers"], + "ability": "Flower Veil", + "nature": "Bold", + "evs": {"hp": 108, "def": 252, "spe": 148}, + "moves": [["Calm Mind"], ["Synthesis"], ["Moonblast"], ["Charm"]], + "weight": 50 + }, + { + "species": "Florges", + "item": "Choice Scarf", + "ability": "Flower Veil", + "nature": "Timid", + "evs": {"hp": 88, "def": 232, "spe": 188}, + "moves": [["Moonblast"], ["Trick"], ["Synthesis"], ["Calm Mind"]], + "weight": 50 + } + ] + }, + "Landorus": { + "weight": 3, + "sets": [ + { + "species": "Landorus", + "item": "Life Orb", + "ability": "Sheer Force", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Earth Power"], ["Sludge Wave"], ["Focus Blast", "Taunt"], ["Smack Down", "Rock Slide"]], + "weight": 100 + } + ] + }, + "Rhyperior": { + "weight": 3, + "sets": [ + { + "species": "Rhyperior", + "item": "Choice Band", + "ability": "Solid Rock", + "nature": "Adamant", + "evs": {"hp": 248, "atk": 252, "def": 8}, + "moves": [["Earthquake"], ["Rock Wrecker"], ["Rock Blast"], ["Avalanche"]], + "weight": 100 + } + ] + }, + "Ursaluna-Bloodmoon": { + "weight": 3, + "sets": [ + { + "species": "Ursaluna-Bloodmoon", + "item": "Chople Berry", + "ability": "Mind's Eye", + "nature": "Modest", + "evs": {"hp": 252, "def": 156, "spa": 100}, + "moves": [["Blood Moon"], ["Earth Power"], ["Counter"], ["Vacuum Wave"]], + "weight": 50 + }, + { + "species": "Ursaluna-Bloodmoon", + "item": "Choice Specs", + "ability": "Mind's Eye", + "nature": "Modest", + "evs": {"hp": 252, "def": 52, "spa": 112, "spd": 92}, + "moves": [["Hyper Beam"], ["Snarl", "Vacuum Wave"], ["Earth Power"], ["Uproar"]], + "weight": 50 + } + ] + }, + "Whimsicott": { + "weight": 3, + "sets": [ + { + "species": "Whimsicott", + "item": ["Babiri Berry", "Mental Herb"], + "ability": "Prankster", + "nature": "Bold", + "evs": {"hp": 248, "def": 232, "spd": 28}, + "moves": [["Leech Seed"], ["Substitute"], ["Protect"], ["Taunt"]], + "weight": 100 + } + ] + }, + "Baxcalibur": { + "weight": 2, + "sets": [ + { + "species": "Baxcalibur", + "item": "Choice Band", + "ability": "Thermal Exchange", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Outrage"], ["Icicle Crash", "Icicle Spear"], ["Earthquake"], ["Ice Shard", "Scale Shot", "Iron Head"]], + "weight": 100 + } + ] + }, + "Fezandipiti": { + "weight": 2, + "sets": [ + { + "species": "Fezandipiti", + "item": "Life Orb", + "ability": "Technician", + "nature": "Adamant", + "evs": {"hp": 88, "atk": 220, "spd": 136, "spe": 64}, + "moves": [["Gunk Shot"], ["Play Rough"], ["Dual Wingbeat"], ["Swords Dance"]], + "weight": 60 + }, + { + "species": "Fezandipiti", + "item": "Air Balloon", + "ability": "Toxic Chain", + "nature": "Calm", + "evs": {"hp": 252, "def": 124, "spd": 80, "spe": 52}, + "moves": [["Charm"], ["Moonblast"], ["Icy Wind"], ["Roost"]], + "weight": 40 + } + ] + }, + "Greninja": { + "weight": 2, + "sets": [ + { + "species": "Greninja", + "item": "Choice Specs", + "ability": "Protean", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Ice Beam"], ["Hydro Cannon"], ["Sludge Wave"], ["Dark Pulse", "Grass Knot"]], + "weight": 60 + }, + { + "species": "Greninja", + "item": "Life Orb", + "ability": "Protean", + "nature": "Hasty", + "evs": {"atk": 252, "spa": 8, "spd": 64, "spe": 184}, + "moves": [["Gunk Shot"], ["Hydro Cannon"], ["U-turn"], ["Shadow Sneak"]], + "weight": 40 + } + ] + }, + "Iron Treads": { + "weight": 2, + "sets": [ + { + "species": "Iron Treads", + "item": "Choice Band", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Heavy Slam"], ["Earthquake"], ["Megahorn"], ["Ice Spinner"]], + "weight": 70 + }, + { + "species": "Iron Treads", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"hp": 252, "atk": 116, "def": 60, "spe": 80}, + "moves": [["Iron Defense"], ["Body Press"], ["Earthquake"], ["Heavy Slam"]], + "weight": 30 + } + ] + }, + "Ting-Lu": { + "weight": 2, + "sets": [ + { + "species": "Ting-Lu", + "item": "Weakness Policy", + "ability": "Vessel of Ruin", + "nature": "Impish", + "evs": {"hp": 80, "atk": 176, "def": 4, "spd": 204, "spe": 44}, + "moves": [["Taunt", "Ruination"], ["Heavy Slam"], ["Earthquake"], ["Payback"]], + "weight": 100 + } + ] + }, + "Avalugg-Hisui": { + "weight": 2, + "sets": [ + { + "species": "Avalugg-Hisui", + "item": "Choice Band", + "ability": "Sturdy", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Avalanche"], ["Heavy Slam"], ["Rock Blast", "Stone Edge"], ["Earthquake", "Mirror Coat", "Icicle Spear"]], + "weight": 100 + } + ] + }, + "Zapdos-Galar": { + "weight": 2, + "sets": [ + { + "species": "Zapdos-Galar", + "item": "Assault Vest", + "ability": "Defiant", + "nature": "Adamant", + "evs": {"hp": 144, "atk": 68, "def": 4, "spd": 56, "spe": 236}, + "moves": [["Thunderous Kick"], ["Close Combat"], ["Brave Bird"], ["Knock Off"]], + "weight": 100 + } + ] + }, + "Tinkaton": { + "weight": 2, + "sets": [ + { + "species": "Tinkaton", + "item": "Life Orb", + "ability": "Mold Breaker", + "nature": "Adamant", + "evs": {"hp": 112, "atk": 232, "def": 16, "spd": 4, "spe": 144}, + "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]], + "weight": 50 + }, + { + "species": "Tinkaton", + "item": "Air Balloon", + "ability": "Mold Breaker", + "nature": "Adamant", + "evs": {"hp": 156, "atk": 220, "spd": 68, "spe": 64}, + "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]], + "weight": 50 + } + ] + }, + "Heatran": { + "weight": 2, + "sets": [ + { + "species": "Heatran", + "item": "Air Balloon", + "ability": "Flash Fire", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Overheat"], ["Flash Cannon"], ["Substitute", "Earth Power"], ["Metal Sound"]], + "weight": 100 + } + ] + }, + "Iron Bundle": { + "weight": 2, + "sets": [ + { + "species": "Iron Bundle", + "item": "Booster Energy", + "ability": "Quark Drive", + "nature": "Modest", + "evs": {"hp": 28, "spa": 116, "spd": 216, "spe": 148}, + "moves": [["Thief"], ["Hydro Pump"], ["Freeze-Dry"], ["Encore"]], + "weight": 50 + }, + { + "species": "Iron Bundle", + "item": "Choice Specs", + "ability": "Quark Drive", + "nature": "Timid", + "evs": {"hp": 44, "def": 152, "spa": 144, "spe": 168}, + "moves": [["Ice Beam"], ["Freeze-Dry"], ["Hydro Pump"], ["Chilling Water"]], + "weight": 50 + } + ] + }, + "Sandy Shocks": { + "weight": 1, + "sets": [ + { + "species": "Sandy Shocks", + "item": "Booster Energy", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Metal Sound"]], + "weight": 50 + }, + { + "species": "Sandy Shocks", + "item": "Choice Specs", + "ability": "Protosynthesis", + "nature": "Timid", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Hyper Beam"]], + "weight": 50 + } + ] + }, + "Ceruledge": { + "weight": 1, + "sets": [ + { + "species": "Ceruledge", + "item": "Weakness Policy", + "ability": "Weak Armor", + "nature": "Adamant", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Endure"], ["Flare Blitz"], ["Close Combat"], ["Poltergeist"]], + "weight": 100 + } + ] + }, + "Klefki": { + "weight": 1, + "sets": [ + { + "species": "Klefki", "item": "Leftovers", "ability": "Prankster", "nature": "Bold", - "evs": {"hp": 252, "def": 252, "spd": 4}, - "moves": [["Protect"], ["Encore"], ["Disable"], ["Recover"]], - "weight": 50 + "evs": {"hp": 200, "def": 128, "spa": 24, "spd": 156}, + "moves": [["Draining Kiss"], ["Iron Defense"], ["Calm Mind"], ["Stored Power"]], + "weight": 100 + } + ] + }, + "Blastoise": { + "weight": 1, + "sets": [ + { + "species": "Blastoise", + "item": "Life Orb", + "ability": "Torrent", + "nature": "Bold", + "evs": {"hp": 132, "def": 136, "spa": 128, "spe": 112}, + "moves": [["Shell Smash"], ["Hydro Cannon"], ["Ice Beam"], ["Substitute"]], + "weight": 100 + } + ] + }, + "Maushold": { + "weight": 1, + "sets": [ + { + "species": "Maushold-Four", + "item": "Wide Lens", + "ability": "Technician", + "nature": "Jolly", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Population Bomb"], ["Encore"], ["Tidy Up"], ["Tickle"]], + "weight": 100 + } + ] + }, + "Blaziken": { + "weight": 1, + "sets": [ + { + "species": "Blaziken", + "item": "Liechi Berry", + "ability": "Speed Boost", + "nature": "Adamant", + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Endure"], ["Flare Blitz"], ["Reversal"], ["Swords Dance"]], + "weight": 100 + } + ] + }, + "Tauros-Paldea-Blaze": { + "weight": 1, + "sets": [ + { + "species": "Tauros-Paldea-Blaze", + "item": "Weakness Policy", + "ability": "Intimidate", + "nature": "Adamant", + "evs": {"hp": 168, "atk": 76, "def": 32, "spe": 232}, + "moves": [["Close Combat"], ["Flare Blitz"], ["Bulk Up"], ["Will-O-Wisp"]], + "weight": 100 } ] }, @@ -1567,305 +1712,20 @@ } ] }, - "Salazzle": { + "Torterra": { "weight": 1, "sets": [ { - "species": "Salazzle", - "item": "Leftovers", - "ability": "Oblivious", - "nature": "Timid", - "evs": {"hp": 136, "spd": 120, "spe": 252}, - "moves": [["Protect"], ["Encore"], ["Disable"], ["Flamethrower"]], - "weight": 100 - } - ] - }, - "Sandy Shocks": { - "weight": 1, - "sets": [ - { - "species": "Sandy Shocks", - "item": "Booster Energy", - "ability": "Protosynthesis", - "nature": "Timid", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Protect", "Metal Sound"]], - "weight": 50 - }, - { - "species": "Sandy Shocks", - "item": "Choice Specs", - "ability": "Protosynthesis", - "nature": "Timid", - "evs": {"spa": 252, "spd": 4, "spe": 252}, - "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Hyper Beam"]], - "weight": 50 - } - ] - }, - "Scizor": { - "weight": 3, - "sets": [ - { - "species": "Scizor", - "item": "Choice Band", - "ability": "Technician", - "nature": "Adamant", - "evs": {"hp": 228, "atk": 252, "spd": 28}, - "moves": [["Bullet Punch"], ["Bug Bite"], ["Close Combat", "Dual Wingbeat"], ["Knock Off"]], - "weight": 50 - }, - { - "species": "Scizor", + "species": "Torterra", "item": "Life Orb", - "ability": "Technician", + "ability": "Overgrow", "nature": "Adamant", - "evs": {"hp": 228, "atk": 60, "def": 136, "spd": 84}, - "moves": [["Bullet Punch"], ["Swords Dance"], ["Dual Wingbeat"], ["Close Combat"]], - "weight": 50 - } - ] - }, - "Serperior": { - "weight": 2, - "sets": [ - { - "species": "Serperior", - "item": "Leftovers", - "ability": "Contrary", - "nature": "Timid", - "evs": {"hp": 252, "spa": 4, "spe": 252}, - "moves": [["Protect"], ["Substitute"], ["Leech Seed"], ["Leaf Storm"]], + "evs": {"hp": 152, "atk": 16, "spd": 132, "spe": 208}, + "moves": [["Shell Smash"], ["Wood Hammer"], ["Substitute"], ["Headlong Rush"]], "weight": 100 } ] }, - "Sinistcha": { - "weight": 1, - "sets": [ - { - "species": "Sinistcha", - "item": "Clear Amulet", - "ability": "Heatproof", - "nature": "Timid", - "evs": {"hp": 252, "def": 80, "spe": 176}, - "moves": [["Iron Defense"], ["Calm Mind"], ["Strength Sap"], ["Shadow Ball"]], - "weight": 100 - } - ] - }, - "Skeledirge": { - "weight": 5, - "sets": [ - { - "species": "Skeledirge", - "item": "Custap Berry", - "ability": "Blaze", - "nature": "Modest", - "evs": {"hp": 248, "def": 64, "spa": 160, "spd": 36}, - "moves": [["Torch Song"], ["Endure"], ["Blast Burn"], ["Encore"]], - "weight": 40 - }, - { - "species": "Skeledirge", - "item": "Weakness Policy", - "ability": "Unaware", - "nature": "Bold", - "evs": {"hp": 248, "def": 100, "spa": 124, "spd": 36}, - "moves": [["Shadow Ball"], ["Blast Burn"], ["Torch Song"], ["Encore"]], - "weight": 40 - }, - { - "species": "Skeledirge", - "item": "Air Balloon", - "ability": "Unaware", - "nature": "Bold", - "evs": {"hp": 248, "def": 252, "spe": 8}, - "moves": [["Will-O-Wisp"], ["Torch Song"], ["Encore"], ["Slack Off", "Blast Burn"]], - "weight": 20 - } - ] - }, - "Slaking": { - "weight": 1, - "sets": [ - { - "species": "Slaking", - "item": "Choice Band", - "ability": "Truant", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Giga Impact"], ["Earthquake"], ["Ice Punch"], ["Low Kick", "Heavy Slam"]], - "weight": 100 - } - ] - }, - "Sneasler": { - "weight": 5, - "sets": [ - { - "species": "Sneasler", - "item": "Normal Gem", - "ability": "Unburden", - "nature": "Adamant", - "evs": {"hp": 160, "atk": 252, "def": 44, "spd": 4, "spe": 48}, - "moves": [["Fake Out"], ["Gunk Shot"], ["Close Combat"], ["Feint"]], - "weight": 50 - }, - { - "species": "Sneasler", - "item": "Liechi Berry", - "ability": "Unburden", - "nature": ["Adamant", "Jolly"], - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Endure"], ["Gunk Shot"], ["Reversal"], ["Taunt", "Substitute"]], - "weight": 50 - } - ] - }, "Spectrier": { - "weight": 9, - "sets": [ - { - "species": "Spectrier", - "item": "Life Orb", - "ability": "Grim Neigh", - "nature": "Timid", - "evs": {"hp": 4, "def": 124, "spa": 180, "spe": 200}, - "moves": [["Hex"], ["Hyper Beam"], ["Will-O-Wisp"], ["Calm Mind"]], - "weight": 50 - }, - { - "species": "Spectrier", - "item": "Sitrus Berry", - "ability": "Grim Neigh", - "nature": "Modest", - "evs": {"hp": 196, "def": 68, "spa": 4, "spd": 20, "spe": 220}, - "moves": [["Calm Mind"], ["Will-O-Wisp"], ["Hex"], ["Taunt", "Draining Kiss", "Disable"]], - "weight": 30 - }, - { - "species": "Spectrier", - "item": "Clear Amulet", - "ability": "Grim Neigh", - "nature": "Calm", - "evs": {"hp": 36, "spd": 252, "spe": 220}, - "moves": [["Calm Mind"], ["Pain Split"], ["Shadow Ball"], ["Taunt"]], - "weight": 20 - } - ] - }, - "Suicune": { - "weight": 1, - "sets": [ - { - "species": "Suicune", - "item": "Leftovers", - "ability": "Pressure", - "nature": "Timid", - "evs": {"hp": 240, "def": 8, "spd": 8, "spe": 252}, - "moves": [["Calm Mind"], ["Chilling Water"], ["Substitute"], ["Protect"]], - "weight": 100 - } - ] - }, - "Sylveon": { - "weight": 7, - "sets": [ - { - "species": "Sylveon", - "item": "Life Orb", - "ability": "Pixilate", - "nature": "Modest", - "evs": {"hp": 104, "def": 224, "spa": 180}, - "moves": [["Hyper Beam"], ["Hyper Voice"], ["Calm Mind"], ["Quick Attack", "Fake Tears", "Shadow Ball", "Psyshock"]], - "weight": 40 - }, - { - "species": "Sylveon", - "item": "Custap Berry", - "ability": "Pixilate", - "nature": "Modest", - "evs": {"hp": 96, "def": 164, "spa": 248}, - "moves": [["Hyper Beam"], ["Hyper Voice"], ["Fake Tears"], ["Endure"]], - "weight": 40 - }, - { - "species": "Sylveon", - "item": "Weakness Policy", - "ability": "Pixilate", - "nature": "Bold", - "evs": {"hp": 88, "def": 244, "spe": 176}, - "moves": [["Calm Mind"], ["Hyper Beam"], ["Draining Kiss"], ["Charm"]], - "weight": 20 - } - ] - }, - "Talonflame": { - "weight": 1, - "sets": [ - { - "species": "Talonflame", - "item": "Choice Band", - "ability": "Gale Wings", - "nature": "Adamant", - "evs": {"hp": 8, "atk": 184, "def": 72, "spe": 244}, - "moves": [["Brave Bird"], ["Flare Blitz"], ["U-turn"], ["Steel Wing"]], - "weight": 100 - } - ] - }, - "Tauros-Paldea-Blaze": { - "weight": 1, - "sets": [ - { - "species": "Tauros-Paldea-Blaze", - "item": "Weakness Policy", - "ability": "Intimidate", - "nature": "Adamant", - "evs": {"hp": 168, "atk": 76, "def": 32, "spe": 232}, - "moves": [["Close Combat"], ["Flare Blitz"], ["Bulk Up"], ["Will-O-Wisp"]], - "weight": 100 - } - ] - }, - "Ting-Lu": { - "weight": 2, - "sets": [ - { - "species": "Ting-Lu", - "item": "Weakness Policy", - "ability": "Vessel of Ruin", - "nature": "Impish", - "evs": {"hp": 80, "atk": 176, "def": 4, "spd": 204, "spe": 44}, - "moves": [["Taunt", "Ruination"], ["Heavy Slam"], ["Earthquake"], ["Payback"]], - "weight": 100 - } - ] - }, - "Tinkaton": { - "weight": 1, - "sets": [ - { - "species": "Tinkaton", - "item": "Life Orb", - "ability": "Mold Breaker", - "nature": "Adamant", - "evs": {"hp": 112, "atk": 232, "def": 16, "spd": 4, "spe": 144}, - "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]], - "weight": 50 - }, - { - "species": "Tinkaton", - "item": "Air Balloon", - "ability": "Mold Breaker", - "nature": "Adamant", - "evs": {"hp": 156, "atk": 220, "spd": 68, "spe": 64}, - "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]], - "weight": 50 - } - ] - }, "Torkoal": { "weight": 1, "sets": [ @@ -1880,16 +1740,175 @@ } ] }, - "Torterra": { + "Suicune": { "weight": 1, "sets": [ { - "species": "Torterra", - "item": "Life Orb", - "ability": "Overgrow", + "species": "Suicune", + "item": "Leftovers", + "ability": "Pressure", + "nature": "Timid", + "evs": {"hp": 240, "def": 8, "spd": 8, "spe": 252}, + "moves": [["Calm Mind"], ["Chilling Water"], ["Substitute"], ["Protect"]], + "weight": 100 + } + ] + }, + "Iron Boulder": { + "weight": 1, + "sets": [ + { + "species": "Iron Boulder", + "item": "Choice Band", + "ability": "Quark Drive", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Mighty Cleave"], ["Zen Headbutt"], ["Sacred Sword"], ["Megahorn"]], + "weight": 100 + } + ] + }, + "Talonflame": { + "weight": 1, + "sets": [ + { + "species": "Talonflame", + "item": "Choice Band", + "ability": "Gale Wings", "nature": "Adamant", - "evs": {"hp": 152, "atk": 16, "spd": 132, "spe": 208}, - "moves": [["Shell Smash"], ["Wood Hammer"], ["Substitute"], ["Headlong Rush"]], + "evs": {"atk": 252, "def": 4, "spe": 252}, + "moves": [["Brave Bird"], ["Flare Blitz"], ["U-turn"], ["Fly", "Dual Wingbeat"]], + "weight": 100 + } + ] + }, + "Okidogi": { + "weight": 1, + "sets": [ + { + "species": "Okidogi", + "item": "Choice Band", + "ability": "Toxic Chain", + "nature": "Adamant", + "evs": {"hp": 216, "atk": 164, "spd": 28, "spe": 100}, + "moves": [["Gunk Shot"], ["Low Kick"], ["Knock Off"], ["Outrage"]], + "weight": 50 + }, + { + "species": "Okidogi", + "item": "Assault Vest", + "ability": "Toxic Chain", + "nature": "Adamant", + "evs": {"hp": 104, "atk": 92, "spd": 96, "spe": 216}, + "moves": [["Gunk Shot"], ["Close Combat"], ["Poison Jab"], ["Counter"]], + "weight": 50 + } + ] + }, + "Slaking": { + "weight": 1, + "sets": [ + { + "species": "Slaking", + "item": "Choice Band", + "ability": "Truant", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Giga Impact"], ["Earthquake"], ["Ice Punch"], ["Low Kick", "Heavy Slam"]], + "weight": 100 + } + ] + }, + "Clodsire": { + "weight": 1, + "sets": [ + { + "species": "Clodsire", + "item": "Kee Berry", + "ability": "Unaware", + "nature": "Relaxed", + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Counter"], ["Amnesia"], ["Toxic"], ["Recover"]], + "weight": 100 + } + ] + }, + "Salazzle": { + "weight": 1, + "sets": [ + { + "species": "Salazzle", + "item": "Leftovers", + "ability": "Oblivious", + "nature": "Timid", + "evs": {"hp": 136, "spd": 120, "spe": 252}, + "moves": [["Protect"], ["Encore"], ["Disable"], ["Flamethrower"]], + "weight": 100 + } + ] + }, + "Sableye": { + "weight": 1, + "sets": [ + { + "species": "Sableye", + "item": "Choice Scarf", + "ability": "Prankster", + "nature": "Impish", + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Trick"], ["Disable"], ["Recover"], ["Fling"]], + "weight": 50 + }, + { + "species": "Sableye", + "item": "Leftovers", + "ability": "Prankster", + "nature": "Bold", + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Protect"], ["Encore"], ["Disable"], ["Night Shade"]], + "weight": 50 + } + ] + }, + "Grafaiai": { + "weight": 1, + "sets": [ + { + "species": "Grafaiai", + "item": "Lagging Tail", + "ability": "Prankster", + "nature": "Sassy", + "evs": {"hp": 248, "def": 96, "spd": 164}, + "moves": [["Dig"], ["Copycat"], ["Encore"], ["Poison Jab"]], + "ivs": {"spe": 0}, + "weight": 100 + } + ] + }, + "Latias": { + "weight": 1, + "sets": [ + { + "species": "Latias", + "item": "Weakness Policy", + "ability": "Levitate", + "nature": "Timid", + "evs": {"hp": 252, "spd": 4, "spe": 252}, + "moves": [["Reflect"], ["Calm Mind"], ["Stored Power"], ["Draco Meteor"]], + "weight": 100 + } + ] + }, + "Glastrier": { + "weight": 1, + "sets": [ + { + "species": "Glastrier", + "item": "Choice Band", + "ability": "Chilling Neigh", + "nature": "Adamant", + "evs": {"hp": 252, "atk": 252, "spd": 4}, + "moves": [["Avalanche"], ["Close Combat"], ["Heavy Slam"], ["High Horsepower", "Crunch"]], "weight": 100 } ] @@ -1908,315 +1927,138 @@ } ] }, - "Ursaluna": { - "weight": 10, - "sets": [ - { - "species": "Ursaluna", - "item": "Choice Band", - "ability": "Guts", - "nature": "Adamant", - "evs": {"hp": 184, "atk": 228, "spd": 96}, - "moves": [["Headlong Rush"], ["Giga Impact"], ["Gunk Shot"], ["Avalanche", "Ice Punch"]], - "weight": 25 - }, - { - "species": "Ursaluna", - "item": "Flame Orb", - "ability": "Guts", - "nature": "Adamant", - "evs": {"atk": 164, "spd": 92, "spe": 252}, - "moves": [["Facade"], ["Headlong Rush"], ["Swords Dance"], ["Protect"]], - "weight": 25 - }, - { - "species": "Ursaluna", - "item": "Custap Berry", - "ability": "Guts", - "nature": "Adamant", - "evs": {"hp": 184, "atk": 216, "spd": 108}, - "moves": [["Endure"], ["Headlong Rush"], ["Giga Impact"], ["Gunk Shot", "Swords Dance"]], - "weight": 25 - }, - { - "species": "Ursaluna", - "item": "Assault Vest", - "ability": "Guts", - "nature": "Adamant", - "evs": {"hp": 184, "atk": 188, "spd": 136}, - "moves": [["Giga Impact"], ["Earthquake"], ["Avalanche", "Counter"], ["Gunk Shot"]], - "weight": 25 - } - ] - }, - "Ursaluna-Bloodmoon": { - "weight": 2, - "sets": [ - { - "species": "Ursaluna-Bloodmoon", - "item": "Chople Berry", - "ability": "Mind's Eye", - "nature": "Modest", - "evs": {"hp": 252, "def": 156, "spa": 100}, - "moves": [["Blood Moon"], ["Earth Power"], ["Counter"], ["Vacuum Wave"]], - "weight": 50 - }, - { - "species": "Ursaluna-Bloodmoon", - "item": "Choice Specs", - "ability": "Mind's Eye", - "nature": "Modest", - "evs": {"hp": 252, "def": 52, "spa": 112, "spd": 92}, - "moves": [["Hyper Beam"], ["Snarl", "Vacuum Wave"], ["Earth Power"], ["Uproar"]], - "weight": 50 - } - ] - }, - "Urshifu": { - "weight": 8, - "sets": [ - { - "species": "Urshifu", - "item": "Life Orb", - "ability": "Unseen Fist", - "nature": "Jolly", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Bulk Up"], ["Wicked Blow"], ["Sucker Punch"], ["Close Combat", "Low Kick"]], - "weight": 40 - }, - { - "species": "Urshifu", - "item": "Custap Berry", - "ability": "Unseen Fist", - "nature": "Adamant", - "evs": {"hp": 128, "atk": 224, "spd": 156}, - "moves": [["Wicked Blow"], ["Reversal"], ["Endure"], ["Bulk Up", "Sucker Punch"]], - "weight": 40 - }, - { - "species": "Urshifu", - "item": "Assault Vest", - "ability": "Unseen Fist", - "nature": "Adamant", - "evs": {"hp": 160, "atk": 92, "def": 16, "spd": 160, "spe": 80}, - "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-turn"]], - "weight": 20 - } - ] - }, - "Urshifu-Rapid-Strike": { - "weight": 7, - "sets": [ - { - "species": "Urshifu-Rapid-Strike", - "item": "Choice Band", - "ability": "Unseen Fist", - "nature": "Adamant", - "evs": {"hp": 252, "atk": 220, "def": 32, "spd": 4}, - "moves": [["Surging Strikes"], ["Close Combat"], ["Low Kick", "Thunder Punch"], ["Iron Head", "Ice Spinner"]], - "weight": 30 - }, - { - "species": "Urshifu-Rapid-Strike", - "item": "Custap Berry", - "ability": "Unseen Fist", - "nature": "Adamant", - "evs": {"hp": 4, "atk": 208, "spd": 120, "spe": 176}, - "moves": [["Surging Strikes"], ["Reversal"], ["Bulk Up"], ["Endure"]], - "weight": 40 - }, - { - "species": "Urshifu-Rapid-Strike", - "item": "Life Orb", - "ability": "Unseen Fist", - "nature": "Jolly", - "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Surging Strikes"], ["Close Combat"], ["Bulk Up"], ["Aqua Jet"]], - "weight": 30 - } - ] - }, - "Venusaur": { + "Carbink": { "weight": 1, "sets": [ { - "species": "Venusaur", - "item": "Custap Berry", - "ability": "Overgrow", - "nature": "Modest", - "evs": {"def": 208, "spa": 204, "spe": 96}, - "moves": [["Frenzy Plant"], ["Sludge Bomb"], ["Endure"], ["Acid Spray"]], + "species": "Carbink", + "item": "Shell Bell", + "ability": "Sturdy", + "nature": "Quirky", + "evs": {}, + "moves": [["Endeavor"], ["Sand Tomb"], ["Sandstorm"], ["Trick Room", "Protect", "Moonblast"]], "weight": 100 } ] }, - "Volcanion": { - "weight": 7, + "Chansey": { + "weight": 1, "sets": [ { - "species": "Volcanion", - "item": "Life Orb", - "ability": "Water Absorb", - "nature": "Rash", - "evs": {"hp": 136, "atk": 8, "def": 88, "spa": 44, "spe": 232}, - "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Bomb"], ["Flame Charge"]], - "weight": 50 - }, - { - "species": "Volcanion", - "item": "Assault Vest", - "ability": "Water Absorb", - "nature": "Modest", - "evs": {"hp": 244, "spa": 184, "spd": 80}, - "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Wave"], ["Earth Power", "Flame Charge", "Focus Blast"]], - "weight": 25 - }, - { - "species": "Volcanion", - "item": "Air Balloon", - "ability": "Water Absorb", - "nature": "Modest", - "evs": {"hp": 136, "def": 88, "spa": 188, "spe": 96}, - "moves": [["Substitute"], ["Steam Eruption"], ["Overheat"], ["Sludge Wave"]], - "weight": 25 - } - ] - }, - "Volcarona": { - "weight": 8, - "sets": [ - { - "species": "Volcarona", - "item": "Life Orb", - "ability": "Swarm", - "nature": "Modest", - "evs": {"hp": 252, "def": 32, "spa": 12, "spd": 16, "spe": 196}, - "moves": [["Quiver Dance"], ["Bug Buzz"], ["Overheat"], ["Substitute"]], - "weight": 50 - }, - { - "species": "Volcarona", - "item": "Passho Berry", - "ability": "Swarm", - "nature": "Calm", - "evs": {"hp": 192, "spa": 76, "spd": 44, "spe": 196}, - "moves": [["Quiver Dance"], ["Overheat"], ["Bug Buzz"], ["Giga Drain"]], - "weight": 50 - } - ] - }, - "Walking Wake": { - "weight": 7, - "sets": [ - { - "species": "Walking Wake", - "item": "Booster Energy", - "ability": "Protosynthesis", - "nature": "Timid", - "evs": {"def": 4, "spa": 252, "spe": 252}, - "moves": [["Draco Meteor"], ["Hydro Pump"], ["Flamethrower", "Hurricane"], ["Aqua Jet"]], - "weight": 75 - }, - { - "species": "Walking Wake", - "item": "Booster Energy", - "ability": "Protosynthesis", - "nature": "Timid", - "evs": {"hp": 8, "def": 56, "spa": 192, "spe": 252}, - "moves": [["Draco Meteor"], ["Hydro Pump"], ["Hurricane"], ["Chilling Water"]], - "weight": 25 - } - ] - }, - "Whimsicott": { - "weight": 2, - "sets": [ - { - "species": "Whimsicott", - "item": ["Babiri Berry", "Mental Herb"], - "ability": "Prankster", + "species": "Chansey", + "item": "Eviolite", + "ability": "Natural Cure", "nature": "Bold", - "evs": {"hp": 248, "def": 232, "spd": 28}, - "moves": [["Leech Seed"], ["Substitute"], ["Protect"], ["Taunt"]], + "evs": {"hp": 252, "def": 252, "spd": 4}, + "moves": [["Seismic Toss"], ["Charm", "Defense Curl"], ["Soft-Boiled"], ["Thunder Wave"]], "weight": 100 } ] }, - "Zapdos": { - "weight": 8, + "Forretress": { + "weight": 1, "sets": [ { - "species": "Zapdos", - "item": "Clear Amulet", - "ability": "Pressure", - "nature": "Timid", - "evs": {"hp": 248, "spd": 84, "spe": 176}, - "moves": [["Hurricane"], ["Thunderbolt"], ["Eerie Impulse"], ["Roost"]], - "weight": 50 - }, - { - "species": "Zapdos", - "item": "Life Orb", - "ability": "Pressure", - "nature": "Timid", - "evs": {"hp": 8, "spa": 200, "spd": 48, "spe": 252}, - "moves": [["Hurricane"], ["Thunderbolt"], ["Charge"], ["Heat Wave"]], - "weight": 25 - }, - { - "species": "Zapdos", + "species": "Forretress", "item": "Leftovers", - "ability": "Pressure", - "nature": "Timid", - "evs": {"hp": 248, "spa": 8, "spe": 252}, - "moves": [["Protect"], ["Substitute"], ["Roost"], ["Thunderbolt"]], - "weight": 25 + "ability": "Sturdy", + "nature": "Impish", + "evs": {"hp": 248, "def": 252, "spd": 8}, + "moves": [["Iron Defense"], ["Body Press"], ["Rest"], ["Counter"]], + "weight": 100 } ] }, - "Zapdos-Galar": { - "weight": 2, + "Arcanine": { + "weight": 1, "sets": [ { - "species": "Zapdos-Galar", - "item": "Custap Berry", - "ability": "Defiant", - "nature": "Adamant", - "evs": {"atk": 252, "spd": 4, "spe": 252}, - "moves": [["Reversal"], ["Brave Bird"], ["Endure"], ["Knock Off", "Bulk Up", "Thunderous Kick"]], - "weight": 50 - }, - { - "species": "Zapdos-Galar", + "species": "Arcanine", "item": "Assault Vest", - "ability": "Defiant", + "ability": "Intimidate", + "nature": "Naughty", + "evs": {"hp": 224, "atk": 192, "spd": 36, "spe": 56}, + "moves": [["Flare Blitz"], ["Play Rough"], ["Extreme Speed"], ["Overheat"]], + "weight": 100 + } + ] + }, + "Porygon2": { + "weight": 1, + "sets": [ + { + "species": "Porygon2", + "item": "Eviolite", + "ability": "Analytic", + "nature": "Bold", + "evs": {"hp": 136, "def": 244, "spa": 128}, + "moves": [["Hyper Beam"], ["Ice Beam"], ["Eerie Impulse"], ["Recover"]], + "weight": 100 + } + ] + }, + "Avalugg": { + "weight": 1, + "sets": [ + { + "species": "Avalugg", + "item": "Choice Band", + "ability": "Sturdy", "nature": "Adamant", - "evs": {"hp": 144, "atk": 68, "def": 4, "spd": 56, "spe": 236}, - "moves": [["Thunderous Kick"], ["Close Combat"], ["Brave Bird"], ["Knock Off"]], + "evs": {"hp": 4, "atk": 252, "def": 252}, + "moves": [["Avalanche"], ["Body Press"], ["Heavy Slam"], ["Mirror Coat", "Earthquake"]], + "weight": 50 + }, + { + "species": "Avalugg", + "item": "Sitrus Berry", + "ability": "Sturdy", + "nature": "Impish", + "evs": {"hp": 252, "atk": 4, "def": 252}, + "moves": [["Body Press"], ["Iron Defense"], ["Recover"], ["Icicle Spear"]], "weight": 50 } ] }, - "Zarude": { - "weight": 5, + "Magnezone": { + "weight": 1, "sets": [ { - "species": "Zarude", - "item": "Weakness Policy", - "ability": "Leaf Guard", - "nature": "Jolly", - "evs": {"hp": 128, "atk": 144, "spd": 4, "spe": 232}, - "moves": [["Power Whip"], ["Knock Off"], ["Encore"], ["Bulk Up"]], - "weight": 50 - }, + "species": "Magnezone", + "item": "Choice Specs", + "ability": "Sturdy", + "nature": "Modest", + "evs": {"spa": 252, "spd": 4, "spe": 252}, + "moves": [["Hyper Beam"], ["Thunderbolt"], ["Flash Cannon"], ["Mirror Coat"]], + "weight": 100 + } + ] + }, + "Gallade": { + "weight": 1, + "sets": [ { - "species": "Zarude", + "species": "Gallade", "item": "Choice Band", - "ability": "Leaf Guard", - "nature": "Adamant", - "evs": {"hp": 120, "atk": 68, "spd": 76, "spe": 244}, - "moves": [["Knock Off"], ["Power Whip"], ["Low Kick", "Rock Slide"], ["Bullet Seed"]], - "weight": 50 + "ability": "Sharpness", + "nature": "Jolly", + "evs": {"atk": 252, "spd": 4, "spe": 252}, + "moves": [["Sacred Sword"], ["Psycho Cut"], ["Leaf Blade"], ["Triple Axel"]], + "weight": 100 + } + ] + }, + "Sinistcha": { + "weight": 1, + "sets": [ + { + "species": "Sinistcha", + "item": "Clear Amulet", + "ability": "Heatproof", + "nature": "Timid", + "evs": {"hp": 252, "def": 80, "spe": 176}, + "moves": [["Iron Defense"], ["Calm Mind"], ["Strength Sap"], ["Shadow Ball"]], + "weight": 100 } ] } diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index 4eaaa10da4..8d21a57e89 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -3020,7 +3020,6 @@ export class RandomTeams { ): RandomTeamsTypes.RandomFactorySet | null { const setList = this.random1v1FactorySets[species.name].sets; - const itemsLimited = ['choicespecs', 'choiceband', 'choicescarf']; const movesLimited: { [k: string]: string } = {}; const abilitiesLimited: { [k: string]: string } = {}; @@ -3039,7 +3038,8 @@ export class RandomTeams { if (!Array.isArray(ogItem)) ogItem = [ogItem]; for (const itemString of ogItem) { const itemId = toID(itemString); - if (itemsLimited.includes(itemId) && teamData.has[itemId]) continue; + if (teamData.has[itemId]) continue; + teamData.has[itemId] = 1; allowedItems.push(itemString); } if (!allowedItems.length) continue; @@ -3130,14 +3130,6 @@ export class RandomTeams { weaknesses: {}, resistances: {}, }; - const resistanceAbilities: { [k: string]: string[] } = { - dryskin: ['Water'], waterabsorb: ['Water'], stormdrain: ['Water'], - flashfire: ['Fire'], heatproof: ['Fire'], waterbubble: ['Fire'], wellbakedbody: ['Fire'], - lightningrod: ['Electric'], motordrive: ['Electric'], voltabsorb: ['Electric'], - sapsipper: ['Grass'], - thickfat: ['Ice', 'Fire'], - eartheater: ['Ground'], levitate: ['Ground'], - }; const movesLimited: { [k: string]: string } = {}; const abilitiesLimited: { [k: string]: string } = {}; const limitFactor = Math.ceil(this.maxTeamSize / 3); @@ -3185,7 +3177,7 @@ export class RandomTeams { for (const typeName of this.dex.types.names()) { // it's weak to the type if (this.dex.getEffectiveness(typeName, species) > 0 && this.dex.getImmunity(typeName, types)) { - if (teamData.weaknesses[typeName] >= 2 * limitFactor) { + if (teamData.weaknesses[typeName] >= limitFactor) { skip = true; break; } @@ -3196,6 +3188,22 @@ export class RandomTeams { const set = this.random1v1FactorySet(species, teamData); if (!set) continue; + teamData.has[toID(set.item)] = 1; + + const atkEVs = set.evs['atk']; + const spaEVs = set.evs['spa']; + const physMoveCount = set.moves.map(x => this.dex.moves.get(x).category).filter(x => x === 'Physical').length; + const specMoveCount = set.moves.map(x => this.dex.moves.get(x).category).filter(x => x === 'Special').length; + const atkBoostingMoves = set.moves.map(x => this.dex.moves.get(x)) + .filter(x => (x.target === 'self' && x.boosts?.atk) || (x.id === 'curse' && !species.types.includes('Ghost'))).length; + const spaBoostingMoves = set.moves.map(x => this.dex.moves.get(x)) + .filter(x => (x.target === 'self' && x.boosts?.spa) || x.id === 'takeheart').length; + if (teamData.has['physical'] && (atkEVs || physMoveCount >= 2 || atkBoostingMoves)) continue; + if (teamData.has['special'] && (spaEVs || specMoveCount >= 2 || spaBoostingMoves)) continue; + if (!teamData.has['physical']) teamData.has['physical'] = 0; + if (!teamData.has['special']) teamData.has['special'] = 0; + if (atkEVs || physMoveCount >= 2 || atkBoostingMoves) teamData.has['physical']++; + if (spaEVs || specMoveCount >= 2 || spaBoostingMoves) teamData.has['special']++; // Limit 1 of any type combination let typeCombo = types.slice().sort().join(); @@ -3240,16 +3248,7 @@ export class RandomTeams { for (const typeName of this.dex.types.names()) { const typeMod = this.dex.getEffectiveness(typeName, types); - // Track resistances because we will require it for triple weaknesses - if ( - typeMod < 0 || - resistanceAbilities[ability.id]?.includes(typeName) || - !this.dex.getImmunity(typeName, types) - ) { - // We don't care about the number of resistances, so just set to 1 - teamData.resistances[typeName] = 1; - // Track weaknesses - } else if (typeMod > 0) { + if (typeMod > 0) { teamData.weaknesses[typeName] = (teamData.weaknesses[typeName] || 0) + 1; } } @@ -3259,9 +3258,7 @@ export class RandomTeams { // Quality control we cannot afford for monotype if (!teamData.forceResult && !this.forceMonotype) { for (const type in teamData.weaknesses) { - // We reject if our team is triple weak to any type without having a resist - if (teamData.resistances[type]) continue; - if (teamData.weaknesses[type] >= 2 * limitFactor) return this.random1v1FactoryTeam(side, ++depth); + if (teamData.weaknesses[type] >= limitFactor) return this.random1v1FactoryTeam(side, ++depth); } } return pokemon; From feed5acb9c0e2475d0793248cfd5186194599d5e Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 23 Jan 2026 23:28:25 -0700 Subject: [PATCH 075/139] Fix build --- data/random-battles/gen9/1v1-factory-sets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index 50269e29b0..b7a1dc72db 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -1112,7 +1112,7 @@ { "species": "Dondozo", "item": "Choice Band", - "ability": "Unaware / Water Veil", + "ability": ["Unaware", "Water Veil"], "nature": "Impish", "evs": {"hp": 120, "atk": 188, "def": 16, "spd": 184}, "moves": [["Wave Crash"], ["Earthquake"], ["Avalanche"], ["Heavy Slam", "Outrage"]], From cd653397db550592c5b6ca169ff9db5076b4fff7 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 23 Jan 2026 23:47:30 -0700 Subject: [PATCH 076/139] Fix typo --- data/random-battles/gen9/1v1-factory-sets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index b7a1dc72db..553a283f75 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -488,7 +488,7 @@ "ability": "Unseen Fist", "nature": "Adamant", "evs": {"hp": 160, "atk": 92, "def": 16, "spd": 160, "spe": 80}, - "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-Turn"]], + "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-turn"]], "weight": 35 } ] From b99ff0165a6231f17e8b78c2a78d1998375de664 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 23 Jan 2026 23:57:12 -0700 Subject: [PATCH 077/139] 1v1 Factory: Fix Haxorus's moves --- data/random-battles/gen9/1v1-factory-sets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index 553a283f75..1589a51872 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -589,7 +589,7 @@ "ability": "Unnerve", "nature": "Adamant", "evs": {"atk": 252, "def": 4, "spe": 252}, - "moves": [["Outrage"], ["Close Combat"], ["Rock Slide", "Poison Jab", "Iron Tail", "Earthquake"], ["X-Scissor", "Poison Jab", "Iron Tail", "Earthquake"]], + "moves": [["Outrage"], ["Close Combat"], ["Rock Slide", "X-Scissor"], ["Poison Jab", "Iron Tail", "Earthquake"]], "weight": 40 } ] From 712867050c7188b18f58d54ebdd73ebd9ce389b5 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sat, 24 Jan 2026 16:25:18 -0700 Subject: [PATCH 078/139] 1v1 Factory: Fix Carbink's level --- data/random-battles/gen9/1v1-factory-sets.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json index 1589a51872..301d468169 100644 --- a/data/random-battles/gen9/1v1-factory-sets.json +++ b/data/random-battles/gen9/1v1-factory-sets.json @@ -1935,6 +1935,7 @@ "item": "Shell Bell", "ability": "Sturdy", "nature": "Quirky", + "level": 1, "evs": {}, "moves": [["Endeavor"], ["Sand Tomb"], ["Sandstorm"], ["Trick Room", "Protect", "Moonblast"]], "weight": 100 From b0dc94f1968967ae75873d46e376fa23936e6fb7 Mon Sep 17 00:00:00 2001 From: Slayer95 Date: Sun, 25 Jan 2026 07:58:21 -0500 Subject: [PATCH 079/139] Further update tests after startup refactor (#11521) - Adds config.lazysockets to prevent listening to the network - Fixes modlog tests --- config/config-example.js | 9 ++++ server/friends.ts | 4 +- server/index.ts | 4 +- test/main.js | 6 ++- test/server/chat-plugins/friends.js | 2 +- test/server/modlog.js | 79 ++++++++++++++--------------- 6 files changed, 59 insertions(+), 45 deletions(-) diff --git a/config/config-example.js b/config/config-example.js index 58059876c2..8289fe3b6c 100644 --- a/config/config-example.js +++ b/config/config-example.js @@ -25,6 +25,15 @@ exports.bindaddress = '0.0.0.0'; */ exports.wsdeflate = null; +/** + * lazysockets - disables eager initialization of network services + * Turn this on if you'd prefer to manually connect Showdown to the network, + * or you intend to run it offline. + * + * @type {boolean} + */ +exports.lazysockets = false; + /* // example: exports.wsdeflate = { diff --git a/server/friends.ts b/server/friends.ts index 5a76237267..30bc8a88fd 100644 --- a/server/friends.ts +++ b/server/friends.ts @@ -167,7 +167,7 @@ export class FriendsDatabase { } private async query(input: DatabaseRequest) { const process = PM.acquire(); - if (!process || !Config.usesqlite) { + if (!process || !Config.usesqlite || !Config.usesqlitefriends) { return null; } const result = await process.query(input); @@ -431,7 +431,7 @@ export const PM = new ProcessManager.QueryProcessManager { diff --git a/test/main.js b/test/main.js index 946a9dcf7c..5c2495e002 100644 --- a/test/main.js +++ b/test/main.js @@ -29,12 +29,16 @@ config.crashguard = false; config.watchconfig = false; // Don't try to write to file system config.nofswriting = true; -// allow renaming without a token +// Don't try to listen to the network +config.lazysockets = true; +// Allow renaming without a token config.noguestsecurity = true; // Test a normal ladder config.fakeladder = false; // Don't log monitor messages to the console (necessary so that chat monitor tests don't clog up stdout) config.loglevel = 3; +// If sqlite is enabled at all, run tests in server/modlog +config.usesqlitemodlog = true; require('./../dist/lib/process-manager').ProcessManager.disabled = true; diff --git a/test/server/chat-plugins/friends.js b/test/server/chat-plugins/friends.js index 7eb04b449e..25aec02464 100644 --- a/test/server/chat-plugins/friends.js +++ b/test/server/chat-plugins/friends.js @@ -8,7 +8,7 @@ const assert = require('../../assert'); describe.skip("Friends lists", () => { const { FriendsDatabase } = require('../../../dist/server/friends'); - const test = (Config.usesqlite ? it : it.skip); + const test = (Config.usesqlite && Config.usesqlitefriends ? it : it.skip); test("Should properly setup database", () => { assert.doesNotThrow(() => FriendsDatabase.setupDatabase(':memory:')); }); diff --git a/test/server/modlog.js b/test/server/modlog.js index eb5b751a40..a4ab3835ce 100644 --- a/test/server/modlog.js +++ b/test/server/modlog.js @@ -5,12 +5,8 @@ 'use strict'; -const ModlogConstructor = Config.usesqlite ? (require('../../dist/server/modlog')).Modlog : null; -const modlog = ModlogConstructor ? new ModlogConstructor(':memory:', {}) : null; const assert = require('assert').strict; -Config.usesqlitemodlog = true; - const DATASET_A = [ { action: 'ROOMBAN', userid: 'sometroll', ip: '127.0.0.1', loggedBy: 'annika', note: 'FIRST ENTRY', time: 1 }, { action: 'LOCK', userid: 'sometroll', ip: '127.0.0.1', loggedBy: 'annika', note: 'ENTRY 2', time: 2 }, @@ -38,23 +34,26 @@ async function lastLine(database, roomid) { return database.get(prepared, [roomid]); } -(Config.usesqlite ? describe : describe.skip)('Modlog', () => { +(Config.usesqlite && Config.usesqlitemodlog ? describe : describe.skip)('Modlog', () => { before(async () => { - if (modlog.readyPromise) await modlog.readyPromise; + if (Rooms.Modlog.readyPromise) { + await Rooms.Modlog.readyPromise; + } + if (!Rooms.Modlog.databaseReady) throw new Error(`Failed to ready up modlog database`); }); describe('Modlog#prepareSQLSearch', () => { it('should respect the maxLines parameter', async () => { - const query = modlog.prepareSQLSearch(['lobby'], 1337, false, { note: [], user: [], ip: [], action: [], actionTaker: [] }); + const query = Rooms.Modlog.prepareSQLSearch(['lobby'], 1337, false, { note: [], user: [], ip: [], action: [], actionTaker: [] }); assert(query.queryText.endsWith('LIMIT ?')); assert(query.args.includes(1337)); - const noMaxLines = modlog.prepareSQLSearch(['lobby'], 0, false, { note: [], user: [], ip: [], action: [], actionTaker: [] }); + const noMaxLines = Rooms.Modlog.prepareSQLSearch(['lobby'], 0, false, { note: [], user: [], ip: [], action: [], actionTaker: [] }); assert(!noMaxLines.queryText.includes('LIMIT')); }); it('should attempt to respect onlyPunishments', async () => { - const query = modlog.prepareSQLSearch(['lobby'], 0, true, { note: [], user: [], ip: [], action: [], actionTaker: [] }); + const query = Rooms.Modlog.prepareSQLSearch(['lobby'], 0, true, { note: [], user: [], ip: [], action: [], actionTaker: [] }); assert(query.queryText.includes('action IN (')); assert(query.args.includes('WEEKLOCK')); }); @@ -62,20 +61,20 @@ async function lastLine(database, roomid) { describe('Modlog#getSharedID', () => { it('should detect shared modlogs', () => { - assert(modlog.getSharedID('battle-gen8randombattle-42')); - assert(modlog.getSharedID('groupchat-annika-shitposting')); - assert(modlog.getSharedID('help-mePleaseIAmTrappedInAUnitTestFactory')); + assert(Rooms.Modlog.getSharedID('battle-gen8randombattle-42')); + assert(Rooms.Modlog.getSharedID('groupchat-annika-shitposting')); + assert(Rooms.Modlog.getSharedID('help-mePleaseIAmTrappedInAUnitTestFactory')); - assert(!modlog.getSharedID('1v1')); - assert(!modlog.getSharedID('development')); + assert(!Rooms.Modlog.getSharedID('1v1')); + assert(!Rooms.Modlog.getSharedID('development')); }); }); describe('Modlog#write', () => { it('should write messages serially to the modlog', async () => { - await modlog.write('development', { note: 'This message is logged first', action: 'UNITTEST' }); - await modlog.write('development', { note: 'This message is logged second', action: 'UNITTEST' }); - const lines = await modlog.database.all(await modlog.database.prepare( + await Rooms.Modlog.write('development', { note: 'This message is logged first', action: 'UNITTEST' }); + await Rooms.Modlog.write('development', { note: 'This message is logged second', action: 'UNITTEST' }); + const lines = await Rooms.Modlog.database.all(await Rooms.Modlog.database.prepare( // Order by modlog_id since the writes most likely happen at the same second `SELECT * FROM modlog WHERE roomid = 'development' ORDER BY modlog_id DESC LIMIT 2` )); @@ -85,8 +84,8 @@ async function lastLine(database, roomid) { }); it('should use overrideID if specified', async () => { - await modlog.write('battle-gen8randombattle-1337', { note: "I'm testing overrideID", action: 'UNITTEST' }, 'heyadora'); - const line = await lastLine(modlog.database, 'battle-gen8randombattle-1337'); + await Rooms.Modlog.write('battle-gen8randombattle-1337', { note: "I'm testing overrideID", action: 'UNITTEST' }, 'heyadora'); + const line = await lastLine(Rooms.Modlog.database, 'battle-gen8randombattle-1337'); assert.equal(line.note, "I'm testing overrideID"); assert.equal(line.visual_roomid, 'heyadora'); }); @@ -96,17 +95,17 @@ async function lastLine(database, roomid) { it('should rename modlogs', async () => { const entry = { note: 'This is in a modlog that will be renamed!', action: 'UNITTEST' }; - await modlog.write('oldroom', entry); - await modlog.rename('oldroom', 'newroom'); - const line = await lastLine(modlog.database, 'newroom'); + await Rooms.Modlog.write('oldroom', entry); + await Rooms.Modlog.rename('oldroom', 'newroom'); + const line = await lastLine(Rooms.Modlog.database, 'newroom'); assert.equal(entry.action, line.action); assert.equal(entry.note, line.note); const newEntry = { note: 'This modlog has been renamed!', action: 'UNITTEST' }; - await modlog.write('newroom', newEntry); + await Rooms.Modlog.write('newroom', newEntry); - const newLine = await lastLine(modlog.database, 'newroom'); + const newLine = await lastLine(Rooms.Modlog.database, 'newroom'); assert.equal(newEntry.action, newLine.action); assert.equal(newEntry.note, newLine.note); @@ -116,23 +115,23 @@ async function lastLine(database, roomid) { describe('Modlog#search', () => { before(async () => { for (const entry of DATASET_A) { - await modlog.write('readingtest', entry); + await Rooms.Modlog.write('readingtest', entry); } for (const entry of DATASET_B) { - await modlog.write('readingtest2', entry); + await Rooms.Modlog.write('readingtest2', entry); } }); it('should be capable of reading the entire modlog file', async () => { - const results = await modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 10000); + const results = await Rooms.Modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 10000); assert.equal(results.results.length, DATASET_B.length); }); it('user searches should be case-insensitive', async () => { - const notExactUpper = await modlog.search('readingtest', { user: [{ search: 'sOmETRoll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] }); - const notExactLower = await modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] }); - const exactUpper = await modlog.search('readingtest', { user: [{ search: 'sOMEtroLL', isExact: true }], note: [], ip: [], action: [], actionTaker: [] }); - const exactLower = await modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: true }], note: [], ip: [], action: [], actionTaker: [] }); + const notExactUpper = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sOmETRoll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] }); + const notExactLower = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] }); + const exactUpper = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sOMEtroLL', isExact: true }], note: [], ip: [], action: [], actionTaker: [] }); + const exactLower = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: true }], note: [], ip: [], action: [], actionTaker: [] }); assert.deepEqual(notExactUpper.results, notExactLower.results); assert.deepEqual(exactUpper.results, exactLower.results); @@ -141,17 +140,17 @@ async function lastLine(database, roomid) { // isExact is currently set up to search for the entire note equalling the search // this could be redesigned, but is what we currently test for. it('note searches should respect isExact', async () => { - const notExact = await modlog.search('readingtest', { note: [{ search: 'has man', isExact: false }], user: [], ip: [], action: [], actionTaker: [] }); - const exact = await modlog.search('readingtest', { note: [{ search: 'has man', isExact: true }], user: [], ip: [], action: [], actionTaker: [] }); + const notExact = await Rooms.Modlog.search('readingtest', { note: [{ search: 'has man', isExact: false }], user: [], ip: [], action: [], actionTaker: [] }); + const exact = await Rooms.Modlog.search('readingtest', { note: [{ search: 'has man', isExact: true }], user: [], ip: [], action: [], actionTaker: [] }); assert.equal(exact.results.length, 0); assert(notExact.results.length); }); it('should be LIFO (last-in, first-out)', async () => { - await modlog.write('lifotest', { note: 'firstwrite', action: 'UNITTEST', timestamp: 1 }); - await modlog.write('lifotest', { note: 'secondwrite', action: 'UNITTEST', timestamp: 2 }); - const search = await modlog.search('lifotest'); + await Rooms.Modlog.write('lifotest', { note: 'firstwrite', action: 'UNITTEST', timestamp: 1 }); + await Rooms.Modlog.write('lifotest', { note: 'secondwrite', action: 'UNITTEST', timestamp: 2 }); + const search = await Rooms.Modlog.search('lifotest'); // secondwrite was last in, so it should be first out (results[0]) assert.notEqual(search.results[0].note, 'firstwrite'); @@ -163,8 +162,8 @@ async function lastLine(database, roomid) { }); it('should support limiting the number of responses', async () => { - const unlimited = await modlog.search('readingtest'); - const limited = await modlog.search('readingtest', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 5); + const unlimited = await Rooms.Modlog.search('readingtest'); + const limited = await Rooms.Modlog.search('readingtest', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 5); assert.equal(limited.results.length, 5); assert(unlimited.results.length > limited.results.length); @@ -180,8 +179,8 @@ async function lastLine(database, roomid) { }); it('should support filtering out non-punishment-related logs', async () => { - const all = (await modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, false)).results; - const onlyPunishments = (await modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, true)).results; + const all = (await Rooms.Modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, false)).results; + const onlyPunishments = (await Rooms.Modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, true)).results; assert(all.length > onlyPunishments.length); assert.equal( From 2b02955fdc424e1ef4b146d50007075459af08b1 Mon Sep 17 00:00:00 2001 From: TurboRx <187360786+TurboRx@users.noreply.github.com> Date: Sun, 25 Jan 2026 19:03:29 +0530 Subject: [PATCH 080/139] Make /rank command output horizontally scrollable (#11586) --- server/chat-commands/core.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/server/chat-commands/core.ts b/server/chat-commands/core.ts index 439cb4d898..2247792bd1 100644 --- a/server/chat-commands/core.ts +++ b/server/chat-commands/core.ts @@ -675,9 +675,9 @@ export const commands: Chat.ChatCommands = { if (!target) target = user.name; const values = await Ladders.visualizeAll(target); - let buffer = `
    `; - buffer += Utils.html``; - + let buffer = `
    `; + buffer += Utils.html`
    User: ${target}
    `; + buffer += `
    User: ${target}
    `; const ratings = values.join(``); if (!ratings) { buffer += ``; @@ -685,8 +685,7 @@ export const commands: Chat.ChatCommands = { buffer += ``; buffer += ratings; } - buffer += `
    ${this.tr`This user has not played any ladder games yet.`}
    ${this.tr`Format`}Elo${this.tr`W`}${this.tr`L`}${this.tr`Total`}
    `; - + buffer += ``; this.sendReply(`|raw|${buffer}`); }, rankhelp: [ From 550a9ad2a9efa302040360a428c73bf6f2fa2c02 Mon Sep 17 00:00:00 2001 From: TurboRx <187360786+TurboRx@users.noreply.github.com> Date: Sun, 25 Jan 2026 19:41:14 +0530 Subject: [PATCH 081/139] Fix visualize function Set case callback arguments (#11525) --- lib/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils.ts b/lib/utils.ts index d96407d622..54f1a972a0 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -122,7 +122,7 @@ export function visualize(value: any, depth = 0): string { return `${constructor} (${value.size}) { ${mapped.join(', ')} }`; case 'Set': if (depth > 2) return `Set`; - return `${constructor} (${value.size}) { ${[...value].map(v => visualize(v), depth + 1).join(', ')} }`; + return `${constructor} (${value.size}) { ${[...value].map(v => visualize(v, depth + 1)).join(', ')} }`; } if (value.toString) { From faa549e02fe7fa7b4dd8157686997f01c51de570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 25 Jan 2026 17:26:02 +0000 Subject: [PATCH 082/139] Gens 3-4: Truant, Sleep and Freeze should block Pursuit activation (#11680) --- data/mods/gen2/moves.ts | 11 +++ data/mods/gen4/moves.ts | 15 +++- test/sim/moves/pursuit.js | 139 ++++++++++++++++++++++++++++++++------ 3 files changed, 142 insertions(+), 23 deletions(-) diff --git a/data/mods/gen2/moves.ts b/data/mods/gen2/moves.ts index 1aadb96470..c6ad3efc10 100644 --- a/data/mods/gen2/moves.ts +++ b/data/mods/gen2/moves.ts @@ -573,6 +573,17 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, pursuit: { inherit: true, + beforeTurnCallback(pokemon) { + for (const side of this.sides) { + if (side.hasAlly(pokemon)) continue; + side.addSideCondition('pursuit', pokemon); + const data = side.getSideConditionData('pursuit'); + if (!data.sources) { + data.sources = []; + } + data.sources.push(pokemon); + } + }, onModifyMove() {}, condition: { duration: 1, diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index d6ad9cf3c5..0fc809ba8d 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -1332,6 +1332,19 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, pursuit: { inherit: true, + beforeTurnCallback(pokemon) { + if (['frz', 'slp'].includes(pokemon.status) || (pokemon.hasAbility('truant') && + (pokemon.volatiles['truant'] || pokemon.truantTurn))) return; + for (const side of this.sides) { + if (side.hasAlly(pokemon)) continue; + side.addSideCondition('pursuit', pokemon); + const data = side.getSideConditionData('pursuit'); + if (!data.sources) { + data.sources = []; + } + data.sources.push(pokemon); + } + }, condition: { duration: 1, onBeforeSwitchOut(pokemon) { @@ -1354,7 +1367,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { } } } - this.actions.runMove('pursuit', source, source.getLocOf(pokemon)); + this.actions.useMove('pursuit', source, { target: pokemon }); } }, }, diff --git a/test/sim/moves/pursuit.js b/test/sim/moves/pursuit.js index 504a0a548c..f66de5b62d 100644 --- a/test/sim/moves/pursuit.js +++ b/test/sim/moves/pursuit.js @@ -35,28 +35,6 @@ describe(`Pursuit`, () => { assert.bounded(damage, [256, 304], 'Actual damage: ' + damage); }); - it(`should continue the switch in Gen 3`, () => { - battle = common.gen(3).createBattle([[ - { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, - ], [ - { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, - { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, - ]]); - battle.makeChoices('move Pursuit', 'switch 2'); - assert(battle.p2.active[0].hp); - }); - - it(`should continue the switch in Gen 4`, () => { - battle = common.gen(4).createBattle([[ - { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, - ], [ - { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, - { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, - ]]); - battle.makeChoices('move Pursuit', 'switch 2'); - assert(battle.p2.active[0].hp); - }); - it(`should not repeat`, () => { battle = common.createBattle([[ { species: "Beedrill", ability: 'swarm', item: 'beedrillite', moves: ['pursuit'] }, @@ -146,4 +124,121 @@ describe(`Pursuit`, () => { battle.makeChoices('move pursuit 1, move sleeptalk', 'auto'); assert.false.fullHP(gengar); }); + + it(`should be able to be paralyzed to prevent activation`, () => { + battle = common.createBattle({ forceRandomChance: true }, [[ + { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, + ], [ + { species: "Jolteon", moves: ['thunderwave'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + const jolteon = battle.p2.pokemon[0]; + battle.makeChoices('move sleeptalk', 'move thunderwave'); + assert.equal(battle.p1.active[0].status, 'par'); + battle.makeChoices('move pursuit', 'switch 2'); + assert.fullHP(jolteon); + }); + + describe(`[Gen 4]`, () => { + it(`should continue the switch`, () => { + battle = common.gen(4).createBattle([[ + { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, + ], [ + { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, + { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + + it(`should not activate if the user is asleep at the beginning of the turn`, () => { + battle = common.gen(4).createBattle([[ + { species: "Tyranitar", moves: ['pursuit'] }, + ], [ + { species: "Breloom", moves: ['spore'] }, + { species: "Breloom", moves: ['sleeptalk'] }, + ]]); + battle.makeChoices('move pursuit', 'move spore'); + assert.equal(battle.p1.active[0].status, 'slp'); + while (battle.p1.active[0].status === 'slp') { + battle.makeChoices('move pursuit', 'switch 2'); + } + // Tyranitar woke up and used Pursuit + const activeBreloom = battle.p2.active[0]; + assert.bounded(activeBreloom.maxhp - activeBreloom.hp, [33, 40]); + assert.fullHP(battle.p2.pokemon[1].hp); + }); + + it(`should be able to be paralyzed to prevent activation`, () => { + battle = common.gen(4).createBattle({ forceRandomChance: true }, [[ + { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, + ], [ + { species: "Jolteon", moves: ['thunderwave'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + const jolteon = battle.p2.pokemon[0]; + battle.makeChoices('move sleeptalk', 'move thunderwave'); + assert.equal(battle.p1.active[0].status, 'par'); + battle.makeChoices('move pursuit', 'switch 2'); + assert.false.fullHP(jolteon); + }); + }); + + describe(`[Gen 3]`, () => { + it(`should continue the switch`, () => { + battle = common.gen(3).createBattle([[ + { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, + ], [ + { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, + { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + }); + + describe(`[Gen 2]`, () => { + it(`should continue the switch`, () => { + battle = common.gen(2).createBattle([[ + { species: "Tyranitar", moves: ['pursuit'] }, + ], [ + { species: "Alakazam", moves: ['psyshock'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + + it(`should try to activate even if the user is asleep at the beginning of the turn`, () => { + battle = common.gen(2).createBattle([[ + { species: "Paras", moves: ['pursuit'], evs: { spa: 252 } }, + ], [ + { species: "Parasect", moves: ['spore'], evs: { hp: 252, spd: 252 } }, + { species: "Parasect", moves: ['sleeptalk'], evs: { hp: 252, spd: 252 } }, + ]]); + battle.makeChoices('move pursuit', 'move spore'); + assert.equal(battle.p1.active[0].status, 'slp'); + while (battle.p1.active[0].status === 'slp') { + battle.makeChoices('move pursuit', 'switch 2'); + } + // Paras woke up and used Pursuit + assert.fullHP(battle.p2.active[0].hp); + const inactiveParasect = battle.p2.pokemon[1]; + assert.bounded(inactiveParasect.maxhp - inactiveParasect.hp, [42, 50]); + }); + + it(`should be able to be paralyzed to prevent activation`, () => { + battle = common.gen(2).createBattle({ forceRandomChance: true }, [[ + { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, + ], [ + { species: "Jolteon", moves: ['thunderwave'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + const jolteon = battle.p2.pokemon[0]; + battle.makeChoices('move sleeptalk', 'move thunderwave'); + assert.equal(battle.p1.active[0].status, 'par'); + battle.makeChoices('move pursuit', 'switch 2'); + assert.fullHP(jolteon); + }); + }); }); From fc70a34fd3fee57e6eebb366ee96638a426ea83d Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 25 Jan 2026 14:26:32 -0700 Subject: [PATCH 083/139] ORAS Mix and Mega: Restrict Deoxys-Speed --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 5d403ac46f..b84a461ac2 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2948,7 +2948,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: ['Shadow Tag', 'Baton Pass', 'Electrify'], restricted: [ 'Beedrillite', 'Gengarite', 'Kangaskhanite', 'Mawilite', 'Medichamite', - 'Arceus', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Dialga', 'Dragonite', 'Genesect', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', + 'Arceus', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dragonite', 'Genesect', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shaymin-Sky', 'Slaking', 'Xerneas', 'Yveltal', 'Zekrom', ], onValidateTeam(team) { From 117cb69c891fb7f116160e1ae0e88b417b407d76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:24:43 +0000 Subject: [PATCH 084/139] Expand Arceus EV Limit to all level 100 events (#11724) --- config/formats.ts | 2 +- data/learnsets.ts | 4 ++-- data/rulesets.ts | 29 ----------------------------- sim/team-validator.ts | 19 +++++++++++++++++++ test/sim/team-validator/events.js | 17 +++++++++++++++++ 5 files changed, 39 insertions(+), 32 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index b84a461ac2..8cd93fb731 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -5020,7 +5020,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ name: "[Gen 4] Anything Goes", mod: 'gen4', searchShow: false, - ruleset: ['Obtainable', 'Arceus EV Limit', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'], + ruleset: ['Obtainable', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'], }, { name: "[Gen 4] 1v1", diff --git a/data/learnsets.ts b/data/learnsets.ts index 10b8e0fba3..5ae0ca4a50 100644 --- a/data/learnsets.ts +++ b/data/learnsets.ts @@ -53586,7 +53586,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { {generation: 6, level: 1, moves: ["tailglow", "bubble", "watersport", "heartswap"], pokeball: "cherishball"}, {generation: 6, level: 100, moves: ["tailglow", "bubble", "watersport"], pokeball: "cherishball"}, {generation: 7, level: 15, moves: ["tailglow", "waterpulse", "aquaring", "heartswap"], pokeball: "cherishball"}, - {generation: 8, moves: ['tailglow', 'watergun'], pokeball: 'pokeball', source: "gen8bdsp"}, + {generation: 8, level: 1, moves: ['tailglow', 'watergun'], pokeball: 'pokeball', source: "gen8bdsp"}, {generation: 8, level: 50, moves: ["waterpulse", "zenheadbutt", "moonblast", "bubble"], source: "gen8legends"}, {generation: 9, level: 50, shiny: true, nature: "Calm", ivs: {hp: 31, atk: 20, def: 31, spa: 20, spd: 31, spe: 20}, moves: ["bubblebeam", "acidarmor", "whirlpool", "waterpulse"], pokeball: "cherishball"}, ], @@ -89288,7 +89288,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { waterpulse: ["9M"], }, eventData: [ - {generation: 9, moves: ["bodyslam", "amnesia", "icespinner", "doubleedge"]}, + {generation: 9, level: 50, moves: ["bodyslam", "amnesia", "icespinner", "doubleedge"]}, ], }, frigibax: { diff --git a/data/rulesets.ts b/data/rulesets.ts index d3d6f68b63..8472973ebd 100644 --- a/data/rulesets.ts +++ b/data/rulesets.ts @@ -1606,35 +1606,6 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { this.add('rule', 'Terastal Clause: You cannot Terastallize'); }, }, - arceusevlimit: { - effectType: 'ValidatorRule', - name: 'Arceus EV Limit', - desc: "Restricts Arceus to a maximum of 100 EVs in any one stat, and only multiples of 10", - onValidateSet(set) { - const species = this.dex.species.get(set.species); - if (species.num === 493 && set.evs) { - let stat: StatID; - for (stat in set.evs) { - const ev = set.evs[stat]; - if (ev > 100) { - return [ - "Arceus can't have more than 100 EVs in any stat, because Arceus is only obtainable from level 100 events.", - "Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which are capped at 100 EVs.", - ]; - } - if (!( - ev % 10 === 0 || - (ev % 10 === 8 && ev % 4 === 0) - )) { - return [ - "Arceus can only have EVs that are multiples of 10, because Arceus is only obtainable from level 100 events.", - "Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which boost in multiples of 10.", - ]; - } - } - } - }, - }, inversemod: { effectType: 'Rule', name: 'Inverse Mod', diff --git a/sim/team-validator.ts b/sim/team-validator.ts index e109837780..91eea6d65c 100644 --- a/sim/team-validator.ts +++ b/sim/team-validator.ts @@ -2093,6 +2093,25 @@ export class TeamValidator { if (fastReturn) return true; problems.push(`${name} must be at least level ${eventData.level}${etc}.`); } + if ((dex.gen === 3 || dex.gen === 4) && eventData.level === 100 && set.evs) { + let statName: StatID; + for (statName in set.evs) { + const ev = set.evs[statName]; + if (ev > 100) { + problems.push( + `${name} can't have more than 100 EVs in any stat, because it is only obtainable from level 100 events. Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which are capped at 100 EVs.`, + ); + } + if (!( + ev % 10 === 0 || + (ev % 10 === 8 && ev % 4 === 0) + )) { + problems.push( + `${name} can only have EVs that are multiples of 10, because it is only obtainable from level 100 events. Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which boost in multiples of 10.`, + ); + } + } + } if ((eventData.shiny === true && !set.shiny) || (!eventData.shiny && set.shiny)) { if (fastReturn) return true; const shinyReq = eventData.shiny ? ` be shiny` : ` not be shiny`; diff --git a/test/sim/team-validator/events.js b/test/sim/team-validator/events.js index 3c093f0d8b..3132ca4a67 100644 --- a/test/sim/team-validator/events.js +++ b/test/sim/team-validator/events.js @@ -164,4 +164,21 @@ describe('Team Validator', () => { ]; assert.legalTeam(team, 'gen5ou'); }); + + it(`should force Gen 4 Arceus to have max 100 EVs in any one stat and only multiples of 10`, () => { + let team = [ + { species: 'arceus', ability: 'multitype', moves: ['judgment'], evs: { hp: 110 } }, + ]; + assert.false.legalTeam(team, 'gen4anythinggoes'); + + team = [ + { species: 'arceus', ability: 'multitype', moves: ['judgment'], evs: { hp: 99 } }, + ]; + assert.false.legalTeam(team, 'gen4anythinggoes'); + + team = [ + { species: 'arceus', ability: 'multitype', moves: ['judgment'], evs: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 10 } }, + ]; + assert.legalTeam(team, 'gen4anythinggoes'); + }); }); From 42ceec9a6be55487c760eb0d14ec33f47807c6f2 Mon Sep 17 00:00:00 2001 From: missshowdown Date: Mon, 26 Jan 2026 11:23:31 -0800 Subject: [PATCH 085/139] GSC: Move Ariados and Charmeleon to ZUBL (#11721) https://www.smogon.com/forums/threads/zu-old-gens-hub-ariados-and-charmeleon-banned-from-gsc-zu-405.3646944/post-10829741 The two were banned from GSC ZU on January 10th, 2026 --- data/mods/gen2/formats-data.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/mods/gen2/formats-data.ts b/data/mods/gen2/formats-data.ts index 535228f0e3..c0618e54e9 100644 --- a/data/mods/gen2/formats-data.ts +++ b/data/mods/gen2/formats-data.ts @@ -12,7 +12,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, charmeleon: { - tier: "ZU", + tier: "ZUBL", }, charizard: { tier: "UUBL", @@ -558,7 +558,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, ariados: { - tier: "ZU", + tier: "ZUBL", }, chinchou: { tier: "NU", From 12bb66810e36f80d36cefd14d8ef5162506d351d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Mon, 26 Jan 2026 19:23:48 +0000 Subject: [PATCH 086/139] GSC PU: Ban Baton Pass (#11722) --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 8cd93fb731..8a12052977 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -5306,7 +5306,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen2', searchShow: false, ruleset: ['[Gen 2] NU'], - banlist: ['NU', 'PUBL', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web'], + banlist: ['NU', 'PUBL', 'Baton Pass'], unbanlist: ['Swagger'], }, { From 2180a5c998b9c930863c5734ab7500bbd301952a Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:38:29 -0700 Subject: [PATCH 087/139] =?UTF-8?q?Revert=20"Gens=203-4:=20Truant,=20Sleep?= =?UTF-8?q?=20and=20Freeze=20should=20block=20Pursuit=20activation=20(#?= =?UTF-8?q?=E2=80=A6"=20(#11733)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit faa549e02fe7fa7b4dd8157686997f01c51de570. --- data/mods/gen2/moves.ts | 11 --- data/mods/gen4/moves.ts | 15 +--- test/sim/moves/pursuit.js | 139 ++++++-------------------------------- 3 files changed, 23 insertions(+), 142 deletions(-) diff --git a/data/mods/gen2/moves.ts b/data/mods/gen2/moves.ts index c6ad3efc10..1aadb96470 100644 --- a/data/mods/gen2/moves.ts +++ b/data/mods/gen2/moves.ts @@ -573,17 +573,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, pursuit: { inherit: true, - beforeTurnCallback(pokemon) { - for (const side of this.sides) { - if (side.hasAlly(pokemon)) continue; - side.addSideCondition('pursuit', pokemon); - const data = side.getSideConditionData('pursuit'); - if (!data.sources) { - data.sources = []; - } - data.sources.push(pokemon); - } - }, onModifyMove() {}, condition: { duration: 1, diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index 0fc809ba8d..d6ad9cf3c5 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -1332,19 +1332,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, pursuit: { inherit: true, - beforeTurnCallback(pokemon) { - if (['frz', 'slp'].includes(pokemon.status) || (pokemon.hasAbility('truant') && - (pokemon.volatiles['truant'] || pokemon.truantTurn))) return; - for (const side of this.sides) { - if (side.hasAlly(pokemon)) continue; - side.addSideCondition('pursuit', pokemon); - const data = side.getSideConditionData('pursuit'); - if (!data.sources) { - data.sources = []; - } - data.sources.push(pokemon); - } - }, condition: { duration: 1, onBeforeSwitchOut(pokemon) { @@ -1367,7 +1354,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { } } } - this.actions.useMove('pursuit', source, { target: pokemon }); + this.actions.runMove('pursuit', source, source.getLocOf(pokemon)); } }, }, diff --git a/test/sim/moves/pursuit.js b/test/sim/moves/pursuit.js index f66de5b62d..504a0a548c 100644 --- a/test/sim/moves/pursuit.js +++ b/test/sim/moves/pursuit.js @@ -35,6 +35,28 @@ describe(`Pursuit`, () => { assert.bounded(damage, [256, 304], 'Actual damage: ' + damage); }); + it(`should continue the switch in Gen 3`, () => { + battle = common.gen(3).createBattle([[ + { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, + ], [ + { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, + { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + + it(`should continue the switch in Gen 4`, () => { + battle = common.gen(4).createBattle([[ + { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, + ], [ + { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, + { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + it(`should not repeat`, () => { battle = common.createBattle([[ { species: "Beedrill", ability: 'swarm', item: 'beedrillite', moves: ['pursuit'] }, @@ -124,121 +146,4 @@ describe(`Pursuit`, () => { battle.makeChoices('move pursuit 1, move sleeptalk', 'auto'); assert.false.fullHP(gengar); }); - - it(`should be able to be paralyzed to prevent activation`, () => { - battle = common.createBattle({ forceRandomChance: true }, [[ - { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, - ], [ - { species: "Jolteon", moves: ['thunderwave'] }, - { species: "Clefable", moves: ['calmmind'] }, - ]]); - const jolteon = battle.p2.pokemon[0]; - battle.makeChoices('move sleeptalk', 'move thunderwave'); - assert.equal(battle.p1.active[0].status, 'par'); - battle.makeChoices('move pursuit', 'switch 2'); - assert.fullHP(jolteon); - }); - - describe(`[Gen 4]`, () => { - it(`should continue the switch`, () => { - battle = common.gen(4).createBattle([[ - { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, - ], [ - { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, - { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, - ]]); - battle.makeChoices('move Pursuit', 'switch 2'); - assert(battle.p2.active[0].hp); - }); - - it(`should not activate if the user is asleep at the beginning of the turn`, () => { - battle = common.gen(4).createBattle([[ - { species: "Tyranitar", moves: ['pursuit'] }, - ], [ - { species: "Breloom", moves: ['spore'] }, - { species: "Breloom", moves: ['sleeptalk'] }, - ]]); - battle.makeChoices('move pursuit', 'move spore'); - assert.equal(battle.p1.active[0].status, 'slp'); - while (battle.p1.active[0].status === 'slp') { - battle.makeChoices('move pursuit', 'switch 2'); - } - // Tyranitar woke up and used Pursuit - const activeBreloom = battle.p2.active[0]; - assert.bounded(activeBreloom.maxhp - activeBreloom.hp, [33, 40]); - assert.fullHP(battle.p2.pokemon[1].hp); - }); - - it(`should be able to be paralyzed to prevent activation`, () => { - battle = common.gen(4).createBattle({ forceRandomChance: true }, [[ - { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, - ], [ - { species: "Jolteon", moves: ['thunderwave'] }, - { species: "Clefable", moves: ['calmmind'] }, - ]]); - const jolteon = battle.p2.pokemon[0]; - battle.makeChoices('move sleeptalk', 'move thunderwave'); - assert.equal(battle.p1.active[0].status, 'par'); - battle.makeChoices('move pursuit', 'switch 2'); - assert.false.fullHP(jolteon); - }); - }); - - describe(`[Gen 3]`, () => { - it(`should continue the switch`, () => { - battle = common.gen(3).createBattle([[ - { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, - ], [ - { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, - { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, - ]]); - battle.makeChoices('move Pursuit', 'switch 2'); - assert(battle.p2.active[0].hp); - }); - }); - - describe(`[Gen 2]`, () => { - it(`should continue the switch`, () => { - battle = common.gen(2).createBattle([[ - { species: "Tyranitar", moves: ['pursuit'] }, - ], [ - { species: "Alakazam", moves: ['psyshock'] }, - { species: "Clefable", moves: ['calmmind'] }, - ]]); - battle.makeChoices('move Pursuit', 'switch 2'); - assert(battle.p2.active[0].hp); - }); - - it(`should try to activate even if the user is asleep at the beginning of the turn`, () => { - battle = common.gen(2).createBattle([[ - { species: "Paras", moves: ['pursuit'], evs: { spa: 252 } }, - ], [ - { species: "Parasect", moves: ['spore'], evs: { hp: 252, spd: 252 } }, - { species: "Parasect", moves: ['sleeptalk'], evs: { hp: 252, spd: 252 } }, - ]]); - battle.makeChoices('move pursuit', 'move spore'); - assert.equal(battle.p1.active[0].status, 'slp'); - while (battle.p1.active[0].status === 'slp') { - battle.makeChoices('move pursuit', 'switch 2'); - } - // Paras woke up and used Pursuit - assert.fullHP(battle.p2.active[0].hp); - const inactiveParasect = battle.p2.pokemon[1]; - assert.bounded(inactiveParasect.maxhp - inactiveParasect.hp, [42, 50]); - }); - - it(`should be able to be paralyzed to prevent activation`, () => { - battle = common.gen(2).createBattle({ forceRandomChance: true }, [[ - { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, - ], [ - { species: "Jolteon", moves: ['thunderwave'] }, - { species: "Clefable", moves: ['calmmind'] }, - ]]); - const jolteon = battle.p2.pokemon[0]; - battle.makeChoices('move sleeptalk', 'move thunderwave'); - assert.equal(battle.p1.active[0].status, 'par'); - battle.makeChoices('move pursuit', 'switch 2'); - assert.fullHP(jolteon); - }); - }); }); From 4cb7ecf998b2d47f1db4cfe9748b8214de44be05 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Feb 2026 11:44:53 -0700 Subject: [PATCH 088/139] Add February 2026 spotlight ladders --- config/formats.ts | 973 +++++++++++++++++++++++----------------------- data/aliases.ts | 8 +- 2 files changed, 485 insertions(+), 496 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 8a12052977..1467900717 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -19,29 +19,6 @@ The column value will be ignored for repeat sections. export const Formats: import('../sim/dex-formats').FormatList = [ - // Likeshop Spotlight - /////////////////////////////////////////////////////////////////// - - { - section: "Likeshop Spotlight", - }, - { - name: "[Gen 9] OU + Solgaleo", - desc: `S/V OU but with Solgaleo.`, - threads: [`• OU + Solgaleo Metagame Discussion`], - mod: 'gen9', - ruleset: ['[Gen 9] OU', '+Solgaleo'], - }, - { - name: "[Gen 9] 1v1 Factory", - desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`, - threads: [`• 1v1 Factory Set Discussion`], - mod: 'gen9', - team: 'random1v1Factory', - bestOfDefault: true, - ruleset: ['[Gen 9] 1v1'], - }, - // S/V Singles /////////////////////////////////////////////////////////////////// @@ -333,21 +310,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen9', ruleset: ['Standard AG'], }, - { - name: "[Gen 9] Ubers UU", - mod: 'gen9', - searchShow: false, - ruleset: ['[Gen 9] Ubers'], - banlist: [ - // Ubers OU - 'Arceus-Normal', 'Arceus-Fairy', 'Arceus-Ghost', 'Arceus-Ground', 'Arceus-Water', 'Calyrex-Ice', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto', - 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina-Origin', 'Glimmora', 'Gliscor', 'Grimmsnarl', 'Groudon', 'Hatterene', 'Ho-Oh', 'Kingambit', 'Koraidon', - 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Ribombee', 'Skeledirge', 'Terapagos', 'Ting-Lu', 'Zacian-Crowned', - // Ubers UUBL + Lunala, Arceus-Ghost, Arceus-Water - 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Giratina', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', - 'Zekrom', - ], - }, { name: "[Gen 9] ZU", mod: 'gen9', @@ -377,9 +339,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, ruleset: ['[Gen 9] LC'], banlist: [ - 'Chinchou', 'Diglett-Alola', 'Drifloon', 'Elekid', 'Foongus', 'Glimmet', 'Gothita', 'Greavard', 'Grookey', 'Growlithe-Hisui', 'Koffing', 'Mareanie', - 'Mienfoo', 'Mudbray', 'Pawniard', 'Salandit', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', - 'Trapinch', 'Vullaby', 'Wingull', 'Zorua-Hisui', + 'Chinchou', 'Diglett-Alola', 'Drifloon', 'Elekid', 'Foongus', 'Glimmet', 'Gothita', 'Grookey', 'Growlithe-Hisui', 'Koffing', 'Mareanie', 'Mienfoo', 'Mudbray', + 'Pawniard', 'Salandit', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', 'Trapinch', 'Vullaby', 'Wingull', + 'Zorua-Hisui', // LC UUBL 'Deerling', 'Minccino', ], @@ -504,272 +466,241 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard Draft'], }, - // OM of the Month + // Ladder Spotlight /////////////////////////////////////////////////////////////////// { - section: "OM of the Month", + section: "Ladder Spotlight", column: 2, }, { - name: "[Gen 9] Tier Shift", - desc: `Pokémon below OU get their stats, excluding HP, boosted. UU/RUBL get +15, RU/NUBL get +20, NU/PUBL get +25, and PU or lower get +30.`, + name: "[Gen 9] BSS Factory (Bo3)", + desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`, mod: 'gen9', - // searchShow: false, - ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Terastal Clause', 'Evasion Clause', 'Tier Shift Mod'], - banlist: [ - 'Arceus', 'Calyrex-Shadow', 'Koraidon', 'Kyogre', 'Medicham', 'Miraidon', 'Necrozma-Dusk-Mane', 'Zacian-Crowned', 'Drizzle', 'Moody', 'Arena Trap', 'Shadow Tag', - 'Baton Pass', 'Last Respects', 'Shed Tail', 'Heat Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', - ], - unbanlist: ['Arceus-Bug', 'Arceus-Grass', 'Arceus-Ice'], + team: 'randomBSSFactory', + ruleset: ['Flat Rules', 'VGC Timer', 'Best of = 3'], }, { - name: "[Gen 9] Bio Mech Mons", - desc: `Items, abilities, and moves a Pokémon has access to can be put in any item/move/ability slot.`, - mod: 'biomechmons', - // searchShow: false, - ruleset: ['Standard OMs', 'Sleep Moves Clause'], + name: "[Gen 9] Flipped", + desc: `All Pokémon have their base stats flipped. For example, Sylveon's HP and Speed stats, Attack and Special Defense stats, and Defense and Special Attack stats swap.`, + mod: 'gen9', + ruleset: ['Standard OMs', 'Sleep Clause Mod', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], banlist: [ - 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chien-Pao', 'Chi-Yu', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', - 'Espathra', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', - 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin', - 'Rayquaza', 'Regieleki', 'Regigigas', 'Reshiram', 'Roaring Moon', 'Slaking', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Terapagos', 'Ursaluna-Bloodmoon', 'Urshifu', - 'Urshifu-Rapid-Strike', 'Volcarona', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', - 'Choice Band', 'Choice Specs', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', + 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', + 'Dialga', 'Dialga-Origin', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Lugia', 'Lunala', + 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', + 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', + 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', ], - validateSet(set, teamHas) { - const dex = this.dex; - let species = dex.species.get(set.species); - let requiredItems: string[] = []; - let requiredMove = ''; - let requiredAbility = ''; - if (species.requiredItems) requiredItems = species.requiredItems; - if (species.requiredMove) requiredMove = species.requiredMove; - if (species.requiredAbility) requiredAbility = species.requiredAbility; - if (species.battleOnly) species = dex.species.get(species.battleOnly as string); - - const effectFunctions = [dex.abilities, dex.items, dex.moves]; - if ( - !effectFunctions.some(f => f.get(set.ability).exists) && - !(set.item && effectFunctions.some(f => f.get(set.item).exists)) && - !set.moves.every(move => effectFunctions.some(f => f.get(move).exists)) - ) { - return this.validateSet(set, teamHas); - } - const allThings = [set.ability, set.item, ...set.moves].filter(e => e.length); - for (const thing of allThings) { - if (!dex.moves.get(thing).exists && !dex.abilities.get(thing).exists && !dex.items.get(thing).exists) { - return [`${thing} does not exist.`]; + }, + { + name: "[Gen 9] The Loser's Game", + desc: `The first player to lose all of their Pokémon wins.`, + mod: 'gen9', + // searchShow: false, + ruleset: ['Standard OMs', 'Sleep Clause Mod', '!OHKO Clause', 'Picked Team Size = 6', 'Adjust Level = 100'], + banlist: ['Infiltrator', 'Choice Scarf', 'Explosion', 'Final Gambit', 'Healing Wish', 'Lunar Dance', 'Magic Room', 'Memento', 'Misty Explosion', 'Self-Destruct'], + onValidateTeam(team) { + const familyTable = new Set(); + for (const set of team) { + let species = this.dex.species.get(set.species); + while (species.prevo) { + species = this.dex.species.get(species.prevo); } - } - if ( - allThings.some(y => effectFunctions.some(x => x.get(y).isNonstandard && - !this.ruleTable.has(`+pokemontag:${this.toID(x.get(y).isNonstandard)}`))) - ) { - return this.validateSet(set, teamHas); - } - const moves = allThings.map(e => this.dex.moves.get(e)).filter(thing => thing.id !== 'metronome' && thing.exists); - for (const m of moves) { - if (this.ruleTable.isBanned(`move:${m.id}`)) return [`${set.species}'s move ${m.name} is banned.`]; - } - - const abilities = allThings.map(e => this.dex.abilities.get(e)).filter(thing => thing.exists); - for (const a of abilities) { - if (this.ruleTable.isBanned(`ability:${a.id}`)) return [`${set.species}'s ability ${a.name} is banned.`]; - } - - const items = allThings.map(e => this.dex.items.get(e)).filter(thing => thing.exists); - for (const i of items) { - if (this.ruleTable.isBanned(`item:${i.id}`)) return [`${set.species}'s item ${i.name} is banned.`]; - } - - const setHas: { [k: string]: true } = {}; - for (const thing of [...moves, ...items, ...abilities]) { - if (setHas[thing.id]) return [`${set.species} has multiple copies of ${thing.name}.`]; - setHas[thing.id] = true; - } - const normalAbility = set.ability; - if (!abilities.length) { - set.ability = 'noability'; - } else { - set.ability = abilities[0].id; - } - if (abilities.some(abil => !Object.values(species.abilities).map(this.toID).includes(abil.id)) && - this.ruleTable.has('obtainableabilities') - ) { - if (set.ability !== 'noability') return [`${set.species} has illegal abilities.`]; - } - if (requiredAbility && !abilities.map(a => a.id).includes(this.toID(requiredAbility))) { - return [`${set.species} requires ${requiredAbility} on its set.`]; - } - if (!moves.length) { - return [`${set.species} requires at least one move.`]; - } - if (set.moves.length > this.ruleTable.maxMoveCount) { - return [`${set.name} has ${set.moves.length} moves, which is more than the limit of ${this.ruleTable.maxMoveCount}.`]; - } - const normalMoves = set.moves; - set.moves = [moves[0].id]; - if (moves.some(move => this.checkCanLearn(move, species)) && this.ruleTable.has('obtainablemoves')) { - return [`${set.species} has illegal moves.`]; - } - if (requiredMove && !moves.map(m => m.id).includes(this.toID(requiredMove))) { - return [`${set.species} requires ${requiredMove} on its set.`]; - } - if (!items.length && requiredItems.length) { - return [`${set.species} requires ${requiredItems.join(', ')} on its set.`]; - } - const normalItem = set.item; - if (items.length) { - set.item = (items.find(i => i.forcedForme || i.itemUser) || items[0]).id; - } else { - set.item = ''; - } - if (!this.ruleTable.has('+ability:noability')) { - this.ruleTable.set('+ability:noability', ''); - } - for (const curMove of moves) { - set.moves = [curMove.id]; - if (requiredMove && moves.map(m => m.id).includes(curMove.id) && - curMove.id !== this.toID(requiredMove)) { - set.moves.push(requiredMove); + if (familyTable.has(species.id)) { + return [ + `You are limited to one Pokémon from each family by the Family Clause.`, + `(You have more than one evolution of ${species.name}.)`, + ]; } - let problems = this.validateSet(set, teamHas); - if (problems) problems = problems.filter(p => !p.endsWith('needs to have an ability.')); - if (problems?.length) return problems; + familyTable.add(species.id); } - set.ability = normalAbility; - set.item = normalItem; - set.moves = normalMoves; - return null; }, - onBeforeSwitchIn(pokemon) { - let ngas = false; - for (const poke of this.getAllActive()) { - if (this.toID(poke.ability) === ('neutralizinggas' as ID)) { - ngas = true; - break; + battle: { + tiebreak() { + if (this.ended) return false; + + this.inputLog.push(`>tiebreak`); + this.add('message', "Time's up! Going to tiebreaker..."); + const notFainted = this.sides.map(side => ( + side.pokemon.filter(pokemon => !pokemon.fainted).length + )); + this.add('-message', this.sides.map((side, i) => ( + `${side.name}: ${notFainted[i]} Pokemon left` + )).join('; ')); + const maxNotFainted = Math.max(...notFainted); + let tiedSides = this.sides.filter((side, i) => notFainted[i] === maxNotFainted); + if (tiedSides.length <= 1) { + return this.win(tiedSides[1]); } - } - if (pokemon.hasItem('abilityshield') || - pokemon.m.scrambled.items.some((e: { thing: string }) => this.toID(e.thing) === 'abilityshield')) { - ngas = false; - } - for (const ability of pokemon.m.scrambled.abilities) { - if (this.field.getPseudoWeather('magicroom') && ability.inSlot === 'Item') continue; - const effect = 'ability:' + this.toID(ability.thing); - pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon }); - pokemon.volatiles[effect].inSlot = ability.inSlot; - } - for (const item of pokemon.m.scrambled.items) { - if (ngas && item.inSlot === 'Ability') continue; - const effect = 'item:' + this.toID(item.thing); - pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon }); - pokemon.volatiles[effect].inSlot = item.inSlot; - } - if (ngas) { - if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { - const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); - const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); - if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1); + + const hpPercentage = tiedSides.map(side => ( + side.pokemon.map(pokemon => pokemon.hp / pokemon.maxhp).reduce((a, b) => a + b) * 100 / 6 + )); + this.add('-message', tiedSides.map((side, i) => ( + `${side.name}: ${Math.round(hpPercentage[i])}% total HP left` + )).join('; ')); + const maxPercentage = Math.max(...hpPercentage); + tiedSides = tiedSides.filter((side, i) => hpPercentage[i] === maxPercentage); + if (tiedSides.length <= 1) { + return this.win(tiedSides[1]); } - } - if (this.field.getPseudoWeather('magicroom')) { - if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { - const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); - const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); - if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1); + + const hpTotal = tiedSides.map(side => ( + side.pokemon.map(pokemon => pokemon.hp).reduce((a, b) => a + b) + )); + this.add('-message', tiedSides.map((side, i) => ( + `${side.name}: ${Math.round(hpTotal[i])} total HP left` + )).join('; ')); + const maxTotal = Math.max(...hpTotal); + tiedSides = tiedSides.filter((side, i) => hpTotal[i] === maxTotal); + if (tiedSides.length <= 1) { + return this.win(tiedSides[1]); } + return this.tie(); + }, + checkWin(faintData) { + const team1PokemonLeft = this.sides[0].pokemonLeft; + const team2PokemonLeft = this.sides[1].pokemonLeft; + if (!team1PokemonLeft && !team2PokemonLeft) { + this.win(faintData?.target.side || null); + return true; + } + for (const side of this.sides) { + if (!side.pokemonLeft) { + this.win(side); + return true; + } + } + }, + }, + }, + { + name: "[Gen 9] STABmons Mix and Mega", + desc: `Mega evolve any Pokémon with any mega stone, or transform them with Genesect Drives, Primal orbs, Origin orbs, Rusted items, Ogerpon Masks, Arceus Plates, and Silvally Memories with no limit. Pokémon can use any move of their typing, in addition to the moves they can normally learn. Mega and Primal boosts based on form changes from gen 7.`, + mod: 'mixandmega', + ruleset: ['Standard OMs', 'STABmons Move Legality', 'Evasion Items Clause', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Terastal Clause'], + banlist: [ + 'Arceus', 'Calyrex-Shadow', 'Enamorus-Incarnate', 'Koraidon', 'Kyogre', 'Miraidon', 'Komala', 'Moody', 'Shadow Tag', + 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite Z', 'Malamarite', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Red Orb', 'Zygardite', + 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Shed Tail', + ], + restricted: [ + 'Basculegion-M', 'Calyrex-Ice', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dragapult', 'Eternatus', 'Flutter Mane', 'Gengar', 'Giratina', 'Gouging Fire', + 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Manaphy', 'Meloetta', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', + 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Slaking', 'Sneasler', 'Solgaleo', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Walking Wake', + 'Zacian', 'Zekrom', 'Zoroark-Hisui', 'Acupressure', 'Astral Barrage', 'Belly Drum', 'Blood Moon', 'Boomburst', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw', + 'Dragon Energy', 'Electro Shot', 'Extreme Speed', 'Fillet Away', 'Gigaton Hammer', 'Jet Punch', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Power Trip', + 'Rage Fist', 'Revival Blessing', 'Shed Tail', 'Shell Smash', 'Shift Gear', 'Surging Strikes', 'Torch Song', 'Triple Arrows', 'V-create', 'Victory Dance', 'Wicked Blow', + ], + onValidateTeam(team) { + const itemTable = new Set(); + for (const set of team) { + const item = this.dex.items.get(set.item); + if (!(item.forcedForme && !item.zMove) && !item.megaStone && + !item.isPrimalOrb && !item.name.startsWith('Rusted')) continue; + const natdex = this.ruleTable.has('natdexmod'); + if (natdex && item.id !== 'ultranecroziumz') continue; + const species = this.dex.species.get(set.species); + if (species.isNonstandard && !this.ruleTable.has(`+pokemontag:${this.toID(species.isNonstandard)}`)) { + return [`${species.baseSpecies} does not exist in gen 9.`]; + } + if (((item.itemUser?.includes(species.name) || item.forcedForme === species.name) && + !item.megaStone && !item.isPrimalOrb) || (natdex && species.name.startsWith('Necrozma-') && + item.id === 'ultranecroziumz')) { + continue; + } + if (this.ruleTable.isRestrictedSpecies(species) || this.toID(set.ability) === 'powerconstruct') { + return [`${species.name} is not allowed to hold ${item.name}.`]; + } + if (itemTable.has(item.id)) { + return [ + `You are limited to one of each Mega Stone/Primal Orb/Rusted item/Origin item/Ogerpon Mask/Arceus Plate/Silvally Memory.`, + `(You have more than one ${item.name})`, + ]; + } + itemTable.add(item.id); } }, onBegin() { for (const pokemon of this.getAllPokemon()) { - // for everything not in the correct slot - pokemon.m.scrambled = { - abilities: [] as object[], - items: [] as object[], - moves: [] as object[], - }; - - if (this.dex.items.get(pokemon.set.ability).exists) { - pokemon.m.scrambled.items.push({ thing: this.dex.items.get(pokemon.set.ability).name, inSlot: 'Ability' }); - } else if (this.dex.moves.get(pokemon.set.ability).exists) { - pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.ability).name, inSlot: 'Ability' }); + pokemon.m.originalSpecies = pokemon.baseSpecies.name; + } + }, + onSwitchIn(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + // Place volatiles on the Pokémon to show its mega-evolved condition and details + this.add('-start', pokemon, originalSpecies.requiredItems?.[0] || originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); } - - if (this.dex.abilities.get(pokemon.set.item).exists) { - pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(pokemon.set.item).name, inSlot: 'Item' }); - } else if (this.dex.moves.get(pokemon.set.item).exists && this.dex.moves.get(pokemon.set.item).id !== 'metronome') { - pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.item).name, inSlot: 'Item' }); - } - - for (const move of pokemon.set.moves) { - if (this.dex.moves.get(move).id === 'metronome') continue; - if (this.dex.abilities.get(move).exists) { - pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(move).name, inSlot: 'Move' }); - } else if (this.dex.items.get(move).exists) { - pokemon.m.scrambled.items.push({ thing: this.dex.items.get(move).name, inSlot: 'Move' }); - } - } - - const newMoveSlots = []; - for (const moveSlot of pokemon.baseMoveSlots) { - if (moveSlot.id === 'metronome') { - const TeamValidator: typeof import('../sim/team-validator').TeamValidator = - require('../sim/team-validator').TeamValidator; - const cantMetronome = TeamValidator.get(this.format).checkCanLearn(this.dex.moves.get('metronome'), pokemon.species); - if (!cantMetronome) { - newMoveSlots.push(moveSlot); - } else { - pokemon.m.scrambled.items.push({ thing: this.dex.items.get('metronome').name, inSlot: 'Move' }); - } - continue; - } - if (!this.dex.moves.get(moveSlot.id).exists) continue; - newMoveSlots.push(moveSlot); - } - - (pokemon as any).baseMoveSlots = newMoveSlots; - - for (const scrambledMove of pokemon.m.scrambled.moves) { - const move = this.dex.moves.get(scrambledMove.thing); - const newMove = { - move: move.name, - id: move.id, - pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - target: move.target, - disabled: false, - used: false, - }; - pokemon.baseMoveSlots.push(newMove); - } - pokemon.moveSlots = pokemon.baseMoveSlots.slice(); + } + }, + onSwitchOut(pokemon) { + const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); + if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { + this.add('-end', pokemon, originalSpecies.requiredItems?.[0] || originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); } }, }, { - name: "[Gen 9] NatDex Camove Chaos", - desc: `National Dex-based format where Pokemon can use almost any move in the game, and their first two move types determine their type.`, + name: "[Gen 9] Ubers UU", mod: 'gen9', - ruleset: ['Standard NatDex', 'Terastal Clause', '!Obtainable Moves', '!Team Preview', 'Camomons Mod', 'CFZ Clause', 'Sleep Moves Clause', 'Team Type Preview'], + // searchShow: false, + ruleset: ['[Gen 9] Ubers'], banlist: [ - 'Aerodactyl-Mega', 'Alakazam', 'Arceus', 'Beedrill-Mega', 'Blaziken-Mega', 'Calyrex-Ice', 'Calyrex-Shadow', 'Charizard-Mega-Y', 'Chi-Yu', - 'Chien-Pao', 'Comfey', 'Darmanitan', 'Darmanitan-Galar', 'Darmanitan-Galar-Zen', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dondozo', 'Enamorus', - 'Eternatus', 'Flutter Mane', 'Genesect', 'Gengar-Mega', 'Giratina', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Kangaskhan-Mega', 'Kartana', 'Komala', - 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', 'Lucario-Mega', 'Lugia', 'Lunala', 'Marshadow', 'Mawile-Mega', - 'Medicham-Mega', 'Melmetal', 'Metagross-Mega', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Palafin', - 'Palkia', 'Pheromosa', 'Porygon-Z', 'Rayquaza', 'Regieleki', 'Reshiram', 'Roserade', 'Salamence-Mega', 'Sceptile-Mega', 'Serperior', 'Shedinja', - 'Sneasler', 'Solgaleo', 'Spectrier', 'Tapu Koko', 'Ting-Lu', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Xerneas', 'Xurkitree', 'Yveltal', 'Zacian', 'Zacian-Crowned', - 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Zoroark', 'Arena Trap', 'Moody', 'Magnet Pull', 'Regenerator > 2', 'Power Construct', 'Shadow Tag', - 'Damp Rock', 'Heat Rock', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Smooth Rock', 'Assist', 'Astral Barrage', 'Baneful Bunker', 'Baton Pass', - 'Belly Drum', 'Bolt Beak', 'Boomburst', 'Burning Bulwark', 'Ceaseless Edge', 'Chatter', 'Clangorous Soul', 'Dire Claw', 'Double Iron Bash', - 'Dragon Energy', 'Eruption', 'Extreme Speed', 'Electrify', 'Electro Shot', 'Final Gambit', 'Fillet Away', 'Fishious Rend', 'Geomancy', 'Heal Order', - 'Jet Punch', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Octolock', 'Population Bomb', 'Power Trip', 'Quiver Dance', 'Rage Fist', 'Revival Blessing', - 'Rising Voltage', 'Salt Cure', 'Shed Tail', 'Shell Smash', 'Shift Gear', 'Stored Power', 'Substitute', 'Surging Strikes', 'Tail Glow', 'Take Heart', - 'Thousand Arrows', 'Transform', 'Triple Arrows', 'V-create', 'Victory Dance', 'Water Spout', 'Wicked Blow', + // Ubers OU + 'Arceus-Normal', 'Arceus-Fairy', 'Arceus-Ghost', 'Arceus-Ground', 'Arceus-Water', 'Calyrex-Ice', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto', + 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina-Origin', 'Glimmora', 'Gliscor', 'Grimmsnarl', 'Groudon', 'Hatterene', 'Ho-Oh', 'Kingambit', 'Koraidon', + 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Ribombee', 'Skeledirge', 'Terapagos', 'Ting-Lu', 'Zacian-Crowned', + // Ubers UUBL + Lunala, Arceus-Ghost, Arceus-Water + 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Giratina', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', + 'Zekrom', ], - unbanlist: ['Blazing Torque', 'Combat Torque', 'Light of Ruin', 'Magical Torque', 'Noxious Torque', 'Wicked Torque'], + }, + { + name: "[Gen 9] National Dex Ubers UU", + mod: 'gen9', + // searchShow: false, + ruleset: ['[Gen 9] National Dex Ubers'], + banlist: [ + 'Alomomola', 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal', + 'Hatterene', 'Ho-Oh', 'Kingambit', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal', + 'Zacian-Crowned', 'Zygarde-50%', + // UUBL + 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon', + 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects', + ], + }, + { + name: "[Gen 3] Ubers", + mod: 'gen3', + // searchShow: false, + ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'], + banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'], + }, + { + name: "[Gen 1] NC 1997", + mod: 'gen1jpn', + bestOfDefault: true, + // searchShow: false, + ruleset: [ + 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155', + 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'Cancel Mod', 'NC 1997 Move Legality', + ], + banlist: ['Uber'], + }, + { + name: "[Gen 7] VGC 2019", + mod: 'gen7', + gameType: 'doubles', + // searchShow: false, + bestOfDefault: true, + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', 'Limit Two Restricted'], + restricted: ['Restricted Legendary'], + banlist: ['Unown', 'Battle Bond'], }, // Other Metagames @@ -1090,6 +1021,234 @@ export const Formats: import('../sim/dex-formats').FormatList = [ side.sideConditions[sideCondition.id].duration = 0; }, }, + { + name: "[Gen 9] Bio Mech Mons", + desc: `Items, abilities, and moves a Pokémon has access to can be put in any item/move/ability slot.`, + mod: 'biomechmons', + searchShow: false, + ruleset: ['Standard OMs', 'Sleep Moves Clause'], + banlist: [ + 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chien-Pao', 'Chi-Yu', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', + 'Espathra', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', + 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin', + 'Rayquaza', 'Regieleki', 'Regigigas', 'Reshiram', 'Roaring Moon', 'Slaking', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Terapagos', 'Ursaluna-Bloodmoon', 'Urshifu', + 'Urshifu-Rapid-Strike', 'Volcarona', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder', + 'Choice Band', 'Choice Specs', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', + ], + validateSet(set, teamHas) { + const dex = this.dex; + let species = dex.species.get(set.species); + let requiredItems: string[] = []; + let requiredMove = ''; + let requiredAbility = ''; + if (species.requiredItems) requiredItems = species.requiredItems; + if (species.requiredMove) requiredMove = species.requiredMove; + if (species.requiredAbility) requiredAbility = species.requiredAbility; + if (species.battleOnly) species = dex.species.get(species.battleOnly as string); + + const effectFunctions = [dex.abilities, dex.items, dex.moves]; + if ( + !effectFunctions.some(f => f.get(set.ability).exists) && + !(set.item && effectFunctions.some(f => f.get(set.item).exists)) && + !set.moves.every(move => effectFunctions.some(f => f.get(move).exists)) + ) { + return this.validateSet(set, teamHas); + } + const allThings = [set.ability, set.item, ...set.moves].filter(e => e.length); + for (const thing of allThings) { + if (this.toID(thing) === 'trace' || this.toID(thing) === 'neutralizinggas') { + return [`${thing} is currently bugged and is banned.`]; + } + if (!dex.moves.get(thing).exists && !dex.abilities.get(thing).exists && !dex.items.get(thing).exists) { + return [`${thing} does not exist.`]; + } + } + if ( + allThings.some(y => effectFunctions.some(x => x.get(y).isNonstandard && + !this.ruleTable.has(`+pokemontag:${this.toID(x.get(y).isNonstandard)}`))) + ) { + return this.validateSet(set, teamHas); + } + const moves = allThings.map(e => this.dex.moves.get(e)).filter(thing => thing.id !== 'metronome' && thing.exists); + for (const m of moves) { + if (this.ruleTable.isBanned(`move:${m.id}`)) return [`${set.species}'s move ${m.name} is banned.`]; + } + + const abilities = allThings.map(e => this.dex.abilities.get(e)).filter(thing => thing.exists); + for (const a of abilities) { + if (this.ruleTable.isBanned(`ability:${a.id}`)) return [`${set.species}'s ability ${a.name} is banned.`]; + } + + const items = allThings.map(e => this.dex.items.get(e)).filter(thing => thing.exists); + for (const i of items) { + if (this.ruleTable.isBanned(`item:${i.id}`)) return [`${set.species}'s item ${i.name} is banned.`]; + } + + const setHas: { [k: string]: true } = {}; + for (const thing of [...moves, ...items, ...abilities]) { + if (setHas[thing.id]) return [`${set.species} has multiple copies of ${thing.name}.`]; + setHas[thing.id] = true; + } + const normalAbility = set.ability; + if (!abilities.length) { + set.ability = 'noability'; + } else { + set.ability = abilities[0].id; + } + if (abilities.some(abil => !Object.values(species.abilities).map(this.toID).includes(abil.id)) && + this.ruleTable.has('obtainableabilities') + ) { + if (set.ability !== 'noability') return [`${set.species} has illegal abilities.`]; + } + if (requiredAbility && !abilities.map(a => a.id).includes(this.toID(requiredAbility))) { + return [`${set.species} requires ${requiredAbility} on its set.`]; + } + if (!moves.length) { + return [`${set.species} requires at least one move.`]; + } + if (set.moves.length > this.ruleTable.maxMoveCount) { + return [`${set.name} has ${set.moves.length} moves, which is more than the limit of ${this.ruleTable.maxMoveCount}.`]; + } + const normalMoves = set.moves; + set.moves = [moves[0].id]; + if (moves.some(move => this.checkCanLearn(move, species)) && this.ruleTable.has('obtainablemoves')) { + return [`${set.species} has illegal moves.`]; + } + if (requiredMove && !moves.map(m => m.id).includes(this.toID(requiredMove))) { + return [`${set.species} requires ${requiredMove} on its set.`]; + } + if (!items.length && requiredItems.length) { + return [`${set.species} requires ${requiredItems.join(', ')} on its set.`]; + } + const normalItem = set.item; + if (items.length) { + set.item = (items.find(i => i.forcedForme || i.itemUser) || items[0]).id; + } else { + set.item = ''; + } + if (!this.ruleTable.has('+ability:noability')) { + this.ruleTable.set('+ability:noability', ''); + } + for (const curMove of moves) { + set.moves = [curMove.id]; + if (requiredMove && moves.map(m => m.id).includes(curMove.id) && + curMove.id !== this.toID(requiredMove)) { + set.moves.push(requiredMove); + } + let problems = this.validateSet(set, teamHas); + if (problems) problems = problems.filter(p => !p.endsWith('needs to have an ability.')); + if (problems?.length) return problems; + } + set.ability = normalAbility; + set.item = normalItem; + set.moves = normalMoves; + return null; + }, + onBeforeSwitchIn(pokemon) { + let ngas = false; + for (const poke of this.getAllActive()) { + if (this.toID(poke.ability) === ('neutralizinggas' as ID)) { + ngas = true; + break; + } + } + if (pokemon.hasItem('abilityshield') || + pokemon.m.scrambled.items.some((e: { thing: string }) => this.toID(e.thing) === 'abilityshield')) { + ngas = false; + } + for (const ability of pokemon.m.scrambled.abilities) { + if (this.field.getPseudoWeather('magicroom') && ability.inSlot === 'Item') continue; + const effect = 'ability:' + this.toID(ability.thing); + pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon }); + pokemon.volatiles[effect].inSlot = ability.inSlot; + } + for (const item of pokemon.m.scrambled.items) { + if (ngas && item.inSlot === 'Ability') continue; + const effect = 'item:' + this.toID(item.thing); + pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon }); + pokemon.volatiles[effect].inSlot = item.inSlot; + } + if (ngas) { + if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) { + const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability'); + const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); + if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1); + } + } + if (this.field.getPseudoWeather('magicroom')) { + if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) { + const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item'); + const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id); + if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1); + } + } + }, + onBegin() { + for (const pokemon of this.getAllPokemon()) { + // for everything not in the correct slot + pokemon.m.scrambled = { + abilities: [] as object[], + items: [] as object[], + moves: [] as object[], + }; + + if (this.dex.items.get(pokemon.set.ability).exists) { + pokemon.m.scrambled.items.push({ thing: this.dex.items.get(pokemon.set.ability).name, inSlot: 'Ability' }); + } else if (this.dex.moves.get(pokemon.set.ability).exists) { + pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.ability).name, inSlot: 'Ability' }); + } + + if (this.dex.abilities.get(pokemon.set.item).exists) { + pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(pokemon.set.item).name, inSlot: 'Item' }); + } else if (this.dex.moves.get(pokemon.set.item).exists && this.dex.moves.get(pokemon.set.item).id !== 'metronome') { + pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.item).name, inSlot: 'Item' }); + } + + for (const move of pokemon.set.moves) { + if (this.dex.moves.get(move).id === 'metronome') continue; + if (this.dex.abilities.get(move).exists) { + pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(move).name, inSlot: 'Move' }); + } else if (this.dex.items.get(move).exists) { + pokemon.m.scrambled.items.push({ thing: this.dex.items.get(move).name, inSlot: 'Move' }); + } + } + + const newMoveSlots = []; + for (const moveSlot of pokemon.baseMoveSlots) { + if (moveSlot.id === 'metronome') { + const TeamValidator: typeof import('../sim/team-validator').TeamValidator = + require('../sim/team-validator').TeamValidator; + const cantMetronome = TeamValidator.get(this.format).checkCanLearn(this.dex.moves.get('metronome'), pokemon.species); + if (!cantMetronome) { + newMoveSlots.push(moveSlot); + } else { + pokemon.m.scrambled.items.push({ thing: this.dex.items.get('metronome').name, inSlot: 'Move' }); + } + continue; + } + if (!this.dex.moves.get(moveSlot.id).exists) continue; + newMoveSlots.push(moveSlot); + } + + (pokemon as any).baseMoveSlots = newMoveSlots; + + for (const scrambledMove of pokemon.m.scrambled.moves) { + const move = this.dex.moves.get(scrambledMove.thing); + const newMove = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + used: false, + }; + pokemon.baseMoveSlots.push(newMove); + } + pokemon.moveSlots = pokemon.baseMoveSlots.slice(); + } + }, + }, { name: "[Gen 9] Camomons", desc: `Pokémon have their types set to match their first two moves.`, @@ -2540,86 +2699,16 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, }, { - name: "[Gen 9] The Loser's Game", - desc: `The first player to lose all of their Pokémon wins.`, + name: "[Gen 9] Tier Shift", + desc: `Pokémon below OU get their stats, excluding HP, boosted. UU/RUBL get +15, RU/NUBL get +20, NU/PUBL get +25, and PU or lower get +30.`, mod: 'gen9', searchShow: false, - ruleset: ['Standard OMs', 'Sleep Clause Mod', '!OHKO Clause', 'Picked Team Size = 6', 'Adjust Level = 100'], - banlist: ['Infiltrator', 'Choice Scarf', 'Explosion', 'Final Gambit', 'Healing Wish', 'Lunar Dance', 'Magic Room', 'Memento', 'Misty Explosion', 'Self-Destruct'], - onValidateTeam(team) { - const familyTable = new Set(); - for (const set of team) { - let species = this.dex.species.get(set.species); - while (species.prevo) { - species = this.dex.species.get(species.prevo); - } - if (familyTable.has(species.id)) { - return [ - `You are limited to one Pokémon from each family by the Family Clause.`, - `(You have more than one evolution of ${species.name}.)`, - ]; - } - familyTable.add(species.id); - } - }, - battle: { - tiebreak() { - if (this.ended) return false; - - this.inputLog.push(`>tiebreak`); - this.add('message', "Time's up! Going to tiebreaker..."); - const notFainted = this.sides.map(side => ( - side.pokemon.filter(pokemon => !pokemon.fainted).length - )); - this.add('-message', this.sides.map((side, i) => ( - `${side.name}: ${notFainted[i]} Pokemon left` - )).join('; ')); - const maxNotFainted = Math.max(...notFainted); - let tiedSides = this.sides.filter((side, i) => notFainted[i] === maxNotFainted); - if (tiedSides.length <= 1) { - return this.win(tiedSides[1]); - } - - const hpPercentage = tiedSides.map(side => ( - side.pokemon.map(pokemon => pokemon.hp / pokemon.maxhp).reduce((a, b) => a + b) * 100 / 6 - )); - this.add('-message', tiedSides.map((side, i) => ( - `${side.name}: ${Math.round(hpPercentage[i])}% total HP left` - )).join('; ')); - const maxPercentage = Math.max(...hpPercentage); - tiedSides = tiedSides.filter((side, i) => hpPercentage[i] === maxPercentage); - if (tiedSides.length <= 1) { - return this.win(tiedSides[1]); - } - - const hpTotal = tiedSides.map(side => ( - side.pokemon.map(pokemon => pokemon.hp).reduce((a, b) => a + b) - )); - this.add('-message', tiedSides.map((side, i) => ( - `${side.name}: ${Math.round(hpTotal[i])} total HP left` - )).join('; ')); - const maxTotal = Math.max(...hpTotal); - tiedSides = tiedSides.filter((side, i) => hpTotal[i] === maxTotal); - if (tiedSides.length <= 1) { - return this.win(tiedSides[1]); - } - return this.tie(); - }, - checkWin(faintData) { - const team1PokemonLeft = this.sides[0].pokemonLeft; - const team2PokemonLeft = this.sides[1].pokemonLeft; - if (!team1PokemonLeft && !team2PokemonLeft) { - this.win(faintData?.target.side || null); - return true; - } - for (const side of this.sides) { - if (!side.pokemonLeft) { - this.win(side); - return true; - } - } - }, - }, + ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Terastal Clause', 'Evasion Clause', 'Tier Shift Mod'], + banlist: [ + 'Arceus', 'Calyrex-Shadow', 'Koraidon', 'Kyogre', 'Medicham', 'Miraidon', 'Necrozma-Dusk-Mane', 'Zacian-Crowned', 'Drizzle', 'Moody', 'Arena Trap', 'Shadow Tag', + 'Baton Pass', 'Last Respects', 'Shed Tail', 'Heat Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', + ], + unbanlist: ['Arceus-Bug', 'Arceus-Grass', 'Arceus-Ice'], }, { name: "[Gen 9] Trademarked", @@ -3128,20 +3217,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard Doubles', 'NatDex Mod', '!Gravity Sleep Clause'], banlist: ['Shedinja', 'Assist'], }, - { - name: "[Gen 9] National Dex Ubers UU", - mod: 'gen9', - searchShow: false, - ruleset: ['[Gen 9] National Dex Ubers'], - banlist: [ - 'Alomomola', 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal', - 'Hatterene', 'Ho-Oh', 'Kingambit', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal', - 'Zacian-Crowned', 'Zygarde-50%', - // UUBL - 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon', - 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects', - ], - }, { name: "[Gen 9] National Dex 1v1", mod: 'gen9', @@ -3401,21 +3476,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Light Clay', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], }, - // Randomized Format Spotlight - /////////////////////////////////////////////////////////////////// - - { - section: "Randomized Format Spotlight", - column: 3, - }, - { - name: "[Gen 9] BSS Factory (Bo3)", - desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`, - mod: 'gen9', - team: 'randomBSSFactory', - ruleset: ['Flat Rules', 'VGC Timer', 'Best of = 3'], - }, - // Randomized Metas /////////////////////////////////////////////////////////////////// @@ -3430,50 +3490,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ team: 'random', bestOfDefault: true, }, - { - name: "[Gen 9] Monkey's Paw Random Battle", - desc: `Every Pokemon can wish for something with the Monkey's Paw once.`, - mod: 'monkeyspaw', - team: 'random', - ruleset: ['[Gen 9] Random Battle'], - onBegin() { - for (const side of this.sides) { - // @ts-expect-error I hate references with all of my life force - side.wishes = { luck: 1, knowledge: 1, power: 1, life: 1 }; - // @ts-expect-error - side.wishesRemaining = 4; - } - let buf = `

    What does which wish do?


    `; - buf += `
    What does which wish do?`; - buf += `• Mega Evolution: Wish for life – Revive one fainted Pokemon
    `; - buf += `• Mega Evolution X: Wish for power – Gain a +2 boost in the current Pokemon's dominant attack and defense stat
    `; - buf += `• Mega Evolution Y: Wish for luck – Give the current Pokemon innate Serene Grace + Focus Energy for the rest of the game
    `; - buf += `• Terastallize: Wish for knowledge – Scout the active Pokemon for one of their moves
    `; - buf += `
    `; - this.add('message', `You've found a Monkey's Paw. You have 4 wishes.`); - this.add(`raw|${buf}`); - }, - onSwitchIn(pokemon) { - if (pokemon.m.revivedByMonkeysPaw) { - pokemon.addVolatile('slowstart', null, this.dex.conditions.get('monkeypaw')); - } - if (pokemon.m.monkeyPawLuck) { - pokemon.addVolatile('focusenergy'); - pokemon.addVolatile('confusion', null, this.dex.conditions.get('monkeypaw')); - } - }, - onModifyMovePriority: -2, - onModifyMove(move, pokemon) { - if (!pokemon.m.monkeyPawLuck) return; - if (move.secondaries) { - this.debug('doubling secondary chance'); - for (const secondary of move.secondaries) { - if (secondary.chance) secondary.chance *= 2; - } - } - if (move.self?.chance) move.self.chance *= 2; - }, - }, { name: "[Gen 9] Super Staff Bros Ultimate", desc: "The fifth iteration of Super Staff Bros is here! Battle with a random team of pokemon created by the sim staff.", @@ -3590,6 +3606,15 @@ export const Formats: import('../sim/dex-formats').FormatList = [ this.add(`raw|
    Battle Factory Tier: ${this.teamGenerator.factoryTier}
    `); }, }, + { + name: "[Gen 9] 1v1 Factory", + desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`, + threads: [`• 1v1 Factory Set Discussion`], + mod: 'gen9', + team: 'random1v1Factory', + bestOfDefault: true, + ruleset: ['[Gen 9] 1v1'], + }, { name: "[Gen 9] BSS Factory", desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`, @@ -4062,42 +4087,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, }, - // RoA Spotlight - /////////////////////////////////////////////////////////////////// - - { - section: "RoA Spotlight", - column: 4, - }, - { - name: "[Gen 2] Ubers", - mod: 'gen2', - // searchShow: false, - ruleset: ['Standard'], - }, - { - name: "[Gen 5] LC", - mod: 'gen5', - // searchShow: false, - ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'], - banlist: [ - 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', - 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger', - ], - }, - { - name: "[Gen 7] VGC 2017", - mod: 'gen7sm', - gameType: 'doubles', - // searchShow: false, - bestOfDefault: true, - ruleset: [ - 'Flat Rules', 'Old Alola Pokedex', '!! Adjust Level = 50', 'Min Source Gen = 7', - 'VGC Timer', '!! Timer Starting = 900', - ], - banlist: ['Mega', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'], - }, - // Past Gens OU /////////////////////////////////////////////////////////////////// @@ -4565,16 +4554,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['[Gen 7] Doubles OU'], banlist: ['DOU', 'DBL'], }, - { - name: "[Gen 7] VGC 2019", - mod: 'gen7', - gameType: 'doubles', - searchShow: false, - bestOfDefault: true, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', 'Limit Two Restricted'], - restricted: ['Restricted Legendary'], - banlist: ['Unown', 'Battle Bond'], - }, { name: "[Gen 7] VGC 2018", mod: 'gen7', @@ -4584,6 +4563,18 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', '!! Timer Starting = 300'], banlist: ['Oranguru + Symbiosis', 'Passimian + Defiant', 'Unown', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry', 'Battle Bond'], }, + { + name: "[Gen 7] VGC 2017", + mod: 'gen7sm', + gameType: 'doubles', + searchShow: false, + bestOfDefault: true, + ruleset: [ + 'Flat Rules', 'Old Alola Pokedex', '!! Adjust Level = 50', 'Min Source Gen = 7', + 'VGC Timer', '!! Timer Starting = 900', + ], + banlist: ['Mega', 'Custap Berry', 'Enigma Berry', 'Jaboca Berry', 'Micle Berry', 'Rowap Berry'], + }, { name: "[Gen 7] Battle Spot Doubles", mod: 'gen7', @@ -4854,6 +4845,16 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: ['Latios'], unbanlist: ['Cloyster'], }, + { + name: "[Gen 5] LC", + mod: 'gen5', + searchShow: false, + ruleset: ['Standard', 'Little Cup', 'Sleep Moves Clause'], + banlist: [ + 'Gligar', 'Meditite', 'Misdreavus', 'Murkrow', 'Scraggy', 'Scyther', 'Sneasel', 'Tangela', 'Vulpix', 'Yanma', + 'Sand Rush', 'Sand Veil', 'Berry Juice', 'Soul Dew', 'Baton Pass', 'Dragon Rage', 'Sonic Boom', 'Swagger', + ], + }, { name: "[Gen 5] 1v1", desc: `Bring three Pokémon to Team Preview and choose one to battle.`, @@ -5162,13 +5163,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ section: "Past Generations", column: 4, }, - { - name: "[Gen 3] Ubers", - mod: 'gen3', - searchShow: false, - ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'], - banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'], - }, { name: "[Gen 3] RU", mod: 'gen3', @@ -5285,6 +5279,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [ debug: true, ruleset: ['HP Percentage Mod', 'Cancel Mod', 'Max Team Size = 24', 'Max Move Count = 24', 'Max Level = 9999', 'Default Level = 100'], }, + { + name: "[Gen 2] Ubers", + mod: 'gen2', + searchShow: false, + ruleset: ['Standard'], + }, { name: "[Gen 2] UU", mod: 'gen2', @@ -5433,17 +5433,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, ruleset: ['[Gen 1] OU', 'Allow Tradeback'], }, - { - name: "[Gen 1] NC 1997", - mod: 'gen1jpn', - bestOfDefault: true, - searchShow: false, - ruleset: [ - 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155', - 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'Cancel Mod', 'NC 1997 Move Legality', - ], - banlist: ['Uber'], - }, { name: "[Gen 1] Custom Game", mod: 'gen1', diff --git a/data/aliases.ts b/data/aliases.ts index a56fc4ab90..72eb6bfa03 100644 --- a/data/aliases.ts +++ b/data/aliases.ts @@ -91,10 +91,10 @@ export const Aliases: import('../sim/dex').AliasesTable = { zaou: "[Gen 9] Legends Z-A OU", legendsou: "[Gen 9] Legends Z-A OU", plzaou: "[Gen 9] Legends Z-A OU", - omotm: "[Gen 9] Tier Shift", - lcotm: "[Gen 9] Bio Mech Mons", - ommotm: "[Gen 9] NatDex Camove Chaos", - ommspotlight: "[Gen 9] NatDex Camove Chaos", + omotm: "[Gen 9] Flipped", + lcotm: "[Gen 9] The Loser's Game", + ommotm: "[Gen 9] STABmons Mix and Mega", + ommspotlight: "[Gen 9] STABmons Mix and Mega", // mega evos --- 1st ordered alphabetically by species, 2nd by alias megasnow: "Abomasnow-Mega", From aa592f27424f17fa45e911e51637dd60bf924880 Mon Sep 17 00:00:00 2001 From: demir Date: Sun, 1 Feb 2026 22:06:51 +0300 Subject: [PATCH 089/139] 35 Pokes: Update list of allowed Pokemon for February 2026 (#11738) --- config/formats.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 1467900717..f8ac65636a 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3122,14 +3122,14 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], banlist: [ 'ND Uber', 'ND AG', 'ND OU', 'ND UUBL', 'ND UU', 'ND RUBL', 'ND RU', 'ND NFE', 'ND LC', - 'Battle Bond', 'Moody', 'Power Construct', 'Shadow Tag', 'Tangled Feet', 'Berserk Gene', 'King\'s Rock', 'Quick Claw', 'Razor Fang', - 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin', + 'Battle Bond', 'Moody', 'Power Construct', 'Shadow Tag', 'Tangled Feet', 'Berserk Gene', 'Booster Energy', 'King\'s Rock', 'Quick Claw', + 'Razor Fang', 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin', 'Baton Pass + Well-Baked Body', ], unbanlist: [ - 'Carracosta', 'Celebi', 'Cinccino', 'Cobalion', 'Cradily', 'Dedenne', 'Fezandipiti', 'Gabite', 'Granbull', 'Greedent', 'Hatterene', 'Heatmor', - 'Houndstone', 'Indeedee-M', 'Lilligant-Base', 'Medicham-Base', 'Orbeetle', 'Oricorio-Pom-Pom', 'Overqwil', 'Pincurchin', 'Pinsir-Base', 'Rotom-Wash', - 'Samurott-Base', 'Scovillain-Base', 'Sharpedo-Base', 'Shedinja', 'Shiftry', 'Steelix-Base', 'Tropius', 'Type: Null', 'Typhlosion-Hisui', 'Tyrantrum', - 'Veluza', 'Vivillon', 'Whimsicott', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', + 'Articuno-Galar', 'Aurorus', 'Bellossom', 'Bewear', 'Blastoise-Base', 'Dodrio', 'Entei', 'Falinks-Base', 'Flygon', 'Furret', 'Goodra-Hisui', + 'Gumshoos-Base', 'Heliolisk', 'Hydrapple', 'Indeedee-F', 'Iron Thorns', 'Leavanny', 'Lickilicky', 'Ludicolo', 'Maractus', 'Meganium-Base', + 'Polteageist', 'Probopass', 'Regieleki', 'Rhyperior', 'Seismitoad', 'Shiinotic', 'Slaking', 'Spidops', 'Spiritomb', 'Unfezant', 'Vanilluxe', + 'Victreebel-Base', 'Weezing-Galar', 'Wyrdeer', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', ], // Stupid hardcode onValidateSet(set, format, setHas, teamHas) { From d6cae3648717247998b9a3f2de2a9d7f84cd2289 Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Sun, 1 Feb 2026 14:15:36 -0500 Subject: [PATCH 090/139] Fortemons: Allow validator to work with unlearnable moves when prompted (#11736) * Fortemons: allow validator to work with unlearnable moves when prompted * Apply suggestion from @KrisXV --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index f8ac65636a..e2148ebbbf 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -1551,7 +1551,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ set.item = ''; const problems = this.validateSet(set, teamHas) || []; set.item = item; - if (this.checkCanLearn(move, species, this.allSources(species), set)) { + if (this.ruleTable.has('obtainablemoves') && this.checkCanLearn(move, species, this.allSources(species), set)) { problems.push(`${species.name} can't learn ${move.name}.`); } if (set.moves.map(this.toID).includes(move.id)) { From 5f1667c2f4ee4a8d06888c13bb9b282b7421d437 Mon Sep 17 00:00:00 2001 From: surfnWOB Date: Sun, 1 Feb 2026 14:26:39 -0500 Subject: [PATCH 091/139] ADV 200 Doubles: Ban Wobbuffet and Wynaut (#11732) --- config/formats.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index e2148ebbbf..692f7812dd 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -5245,7 +5245,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, ruleset: ['Standard', '!Switch Priority Clause Mod'], banlist: ['Uber', 'Quick Claw', 'Soul Dew', 'Swagger'], - unbanlist: ['Wobbuffet', 'Wynaut'], }, { name: "[Gen 3] Orre Colosseum", From d3f68854352bb97a4a05a2432e7e05a6bb4854c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 1 Feb 2026 19:26:56 +0000 Subject: [PATCH 092/139] Fix Pursuit interaction with Choice items in Gens 3 and 4 (#11735) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Reapply "Gens 3-4: Truant, Sleep and Freeze should block Pursuit activation (#…" (#11733) This reverts commit 2180a5c998b9c930863c5734ab7500bbd301952a. * Fix Pursuit interaction with Choice items in Gens 3 and 4 * Fix --- data/mods/gen2/moves.ts | 11 +++ data/mods/gen4/moves.ts | 19 +++++- test/sim/moves/pursuit.js | 139 ++++++++++++++++++++++++++++++++------ 3 files changed, 146 insertions(+), 23 deletions(-) diff --git a/data/mods/gen2/moves.ts b/data/mods/gen2/moves.ts index 1aadb96470..c6ad3efc10 100644 --- a/data/mods/gen2/moves.ts +++ b/data/mods/gen2/moves.ts @@ -573,6 +573,17 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, pursuit: { inherit: true, + beforeTurnCallback(pokemon) { + for (const side of this.sides) { + if (side.hasAlly(pokemon)) continue; + side.addSideCondition('pursuit', pokemon); + const data = side.getSideConditionData('pursuit'); + if (!data.sources) { + data.sources = []; + } + data.sources.push(pokemon); + } + }, onModifyMove() {}, condition: { duration: 1, diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index d6ad9cf3c5..38282c5cbe 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -1332,6 +1332,19 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, pursuit: { inherit: true, + beforeTurnCallback(pokemon) { + if (['frz', 'slp'].includes(pokemon.status) || (pokemon.hasAbility('truant') && + (pokemon.volatiles['truant'] || pokemon.truantTurn))) return; + for (const side of this.sides) { + if (side.hasAlly(pokemon)) continue; + side.addSideCondition('pursuit', pokemon); + const data = side.getSideConditionData('pursuit'); + if (!data.sources) { + data.sources = []; + } + data.sources.push(pokemon); + } + }, condition: { duration: 1, onBeforeSwitchOut(pokemon) { @@ -1354,7 +1367,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { } } } - this.actions.runMove('pursuit', source, source.getLocOf(pokemon)); + const move = this.dex.getActiveMove('pursuit'); + source.moveUsed(move, pokemon.position); + if (this.actions.useMove(move, source, { target: pokemon }) && source.getItem().isChoice) { + source.addVolatile('choicelock'); + } } }, }, diff --git a/test/sim/moves/pursuit.js b/test/sim/moves/pursuit.js index 504a0a548c..f66de5b62d 100644 --- a/test/sim/moves/pursuit.js +++ b/test/sim/moves/pursuit.js @@ -35,28 +35,6 @@ describe(`Pursuit`, () => { assert.bounded(damage, [256, 304], 'Actual damage: ' + damage); }); - it(`should continue the switch in Gen 3`, () => { - battle = common.gen(3).createBattle([[ - { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, - ], [ - { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, - { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, - ]]); - battle.makeChoices('move Pursuit', 'switch 2'); - assert(battle.p2.active[0].hp); - }); - - it(`should continue the switch in Gen 4`, () => { - battle = common.gen(4).createBattle([[ - { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, - ], [ - { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, - { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, - ]]); - battle.makeChoices('move Pursuit', 'switch 2'); - assert(battle.p2.active[0].hp); - }); - it(`should not repeat`, () => { battle = common.createBattle([[ { species: "Beedrill", ability: 'swarm', item: 'beedrillite', moves: ['pursuit'] }, @@ -146,4 +124,121 @@ describe(`Pursuit`, () => { battle.makeChoices('move pursuit 1, move sleeptalk', 'auto'); assert.false.fullHP(gengar); }); + + it(`should be able to be paralyzed to prevent activation`, () => { + battle = common.createBattle({ forceRandomChance: true }, [[ + { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, + ], [ + { species: "Jolteon", moves: ['thunderwave'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + const jolteon = battle.p2.pokemon[0]; + battle.makeChoices('move sleeptalk', 'move thunderwave'); + assert.equal(battle.p1.active[0].status, 'par'); + battle.makeChoices('move pursuit', 'switch 2'); + assert.fullHP(jolteon); + }); + + describe(`[Gen 4]`, () => { + it(`should continue the switch`, () => { + battle = common.gen(4).createBattle([[ + { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, + ], [ + { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, + { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + + it(`should not activate if the user is asleep at the beginning of the turn`, () => { + battle = common.gen(4).createBattle([[ + { species: "Tyranitar", moves: ['pursuit'] }, + ], [ + { species: "Breloom", moves: ['spore'] }, + { species: "Breloom", moves: ['sleeptalk'] }, + ]]); + battle.makeChoices('move pursuit', 'move spore'); + assert.equal(battle.p1.active[0].status, 'slp'); + while (battle.p1.active[0].status === 'slp') { + battle.makeChoices('move pursuit', 'switch 2'); + } + // Tyranitar woke up and used Pursuit + const activeBreloom = battle.p2.active[0]; + assert.bounded(activeBreloom.maxhp - activeBreloom.hp, [33, 40]); + assert.fullHP(battle.p2.pokemon[1].hp); + }); + + it(`should be able to be paralyzed to prevent activation`, () => { + battle = common.gen(4).createBattle({ forceRandomChance: true }, [[ + { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, + ], [ + { species: "Jolteon", moves: ['thunderwave'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + const jolteon = battle.p2.pokemon[0]; + battle.makeChoices('move sleeptalk', 'move thunderwave'); + assert.equal(battle.p1.active[0].status, 'par'); + battle.makeChoices('move pursuit', 'switch 2'); + assert.false.fullHP(jolteon); + }); + }); + + describe(`[Gen 3]`, () => { + it(`should continue the switch`, () => { + battle = common.gen(3).createBattle([[ + { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] }, + ], [ + { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] }, + { species: "Clefable", ability: 'unaware', moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + }); + + describe(`[Gen 2]`, () => { + it(`should continue the switch`, () => { + battle = common.gen(2).createBattle([[ + { species: "Tyranitar", moves: ['pursuit'] }, + ], [ + { species: "Alakazam", moves: ['psyshock'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + battle.makeChoices('move Pursuit', 'switch 2'); + assert(battle.p2.active[0].hp); + }); + + it(`should try to activate even if the user is asleep at the beginning of the turn`, () => { + battle = common.gen(2).createBattle([[ + { species: "Paras", moves: ['pursuit'], evs: { spa: 252 } }, + ], [ + { species: "Parasect", moves: ['spore'], evs: { hp: 252, spd: 252 } }, + { species: "Parasect", moves: ['sleeptalk'], evs: { hp: 252, spd: 252 } }, + ]]); + battle.makeChoices('move pursuit', 'move spore'); + assert.equal(battle.p1.active[0].status, 'slp'); + while (battle.p1.active[0].status === 'slp') { + battle.makeChoices('move pursuit', 'switch 2'); + } + // Paras woke up and used Pursuit + assert.fullHP(battle.p2.active[0].hp); + const inactiveParasect = battle.p2.pokemon[1]; + assert.bounded(inactiveParasect.maxhp - inactiveParasect.hp, [42, 50]); + }); + + it(`should be able to be paralyzed to prevent activation`, () => { + battle = common.gen(2).createBattle({ forceRandomChance: true }, [[ + { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] }, + ], [ + { species: "Jolteon", moves: ['thunderwave'] }, + { species: "Clefable", moves: ['calmmind'] }, + ]]); + const jolteon = battle.p2.pokemon[0]; + battle.makeChoices('move sleeptalk', 'move thunderwave'); + assert.equal(battle.p1.active[0].status, 'par'); + battle.makeChoices('move pursuit', 'switch 2'); + assert.fullHP(jolteon); + }); + }); }); From fcd41c87a108000b6ade7b2b4a8129375f9aa298 Mon Sep 17 00:00:00 2001 From: Yoshiblaze <53023564+Yoshiblaze@users.noreply.github.com> Date: Sun, 1 Feb 2026 14:49:08 -0500 Subject: [PATCH 093/139] Add New Pet Mod of the Season, Six by Six Random Battle, and Remove Previous PMOTM (#11737) * Delete data/random-battles/scootopiav2 directory * 6x6 Part 1 * Delete data/mods/scootopiav2 directory * 6x6 Pt 2 * 6x6 Pt 3 --- config/formats.ts | 53 +- data/mods/scootopiav2/abilities.ts | 135 - data/mods/scootopiav2/conditions.ts | 67 - data/mods/scootopiav2/formats-data.ts | 218 - data/mods/scootopiav2/items.ts | 88 - data/mods/scootopiav2/learnsets.ts | 4473 ----------------- data/mods/scootopiav2/moves.ts | 1284 ----- data/mods/scootopiav2/pokedex.ts | 551 -- data/mods/scootopiav2/rulesets.ts | 38 - data/mods/scootopiav2/typechart.ts | 530 -- data/mods/sixbysix/formats-data.ts | 113 + data/mods/sixbysix/items.ts | 32 + data/mods/sixbysix/learnsets.ts | 2580 ++++++++++ data/mods/sixbysix/pokedex.ts | 542 ++ data/mods/sixbysix/rulesets.ts | 17 + .../mods/{scootopiav2 => sixbysix}/scripts.ts | 6 +- .../scootopiav2/random-sets.json | 856 ---- data/random-battles/sixbysix/random-sets.json | 557 ++ .../{scootopiav2 => sixbysix}/teams.ts | 1961 ++++---- 19 files changed, 4829 insertions(+), 9272 deletions(-) delete mode 100644 data/mods/scootopiav2/abilities.ts delete mode 100644 data/mods/scootopiav2/conditions.ts delete mode 100644 data/mods/scootopiav2/formats-data.ts delete mode 100644 data/mods/scootopiav2/items.ts delete mode 100644 data/mods/scootopiav2/learnsets.ts delete mode 100644 data/mods/scootopiav2/moves.ts delete mode 100644 data/mods/scootopiav2/pokedex.ts delete mode 100644 data/mods/scootopiav2/rulesets.ts delete mode 100644 data/mods/scootopiav2/typechart.ts create mode 100644 data/mods/sixbysix/formats-data.ts create mode 100644 data/mods/sixbysix/items.ts create mode 100644 data/mods/sixbysix/learnsets.ts create mode 100644 data/mods/sixbysix/pokedex.ts create mode 100644 data/mods/sixbysix/rulesets.ts rename data/mods/{scootopiav2 => sixbysix}/scripts.ts (95%) delete mode 100644 data/random-battles/scootopiav2/random-sets.json create mode 100644 data/random-battles/sixbysix/random-sets.json rename data/random-battles/{scootopiav2 => sixbysix}/teams.ts (94%) diff --git a/config/formats.ts b/config/formats.ts index 692f7812dd..ef305c1447 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3384,21 +3384,19 @@ export const Formats: import('../sim/dex-formats').FormatList = [ section: "Pet Mods", }, { - name: "[Gen 9] Scootopia Random Battle", - desc: `A Gen 9 Fakemon micrometa featuring the Super Types mechanic, granting 1 Pokemon per team an additional and powerful new typing.`, - mod: 'scootopiav2', - team: 'randomSC', + name: "[Gen 9] Six by Six Random Battle", + desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`, + mod: 'sixbysix', + team: 'random6x6', ruleset: [ 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod', - 'Terastal Clause', 'Super Type Moves Rule', 'Data Preview', 'Sprite Viewer', + 'Terastal Clause', 'Data Preview', 'Sprite Viewer', ], onBegin() { - this.add(`raw|
    Need help with all of the new moves, abilities, and wacky stuff?
    Then make sure to check out the Scootopia Spreadsheet or use /dt!
    `); - this.add('-message', `Welcome to Scootopia!`); - this.add('-message', `This is a fakemon micrometa created by Scoopapa, featuring the Super Types mechanic!`); - this.add('-message', `Super Types are powerful additional types that a Pokemon can gain by holding a specific Super Type Orb!`); + this.add('-message', `Welcome to Six by Six!`); + this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`); this.add('-message', `You can find our thread and metagame resources here:`); - this.add('-message', `https://www.smogon.com/forums/threads/3742131/`); + this.add('-message', `https://www.smogon.com/forums/threads/3769141/`); }, onSwitchInPriority: 100, onSwitchIn(pokemon) { @@ -3410,32 +3408,31 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, }, { - name: "[Gen 9] Scootopia", // Roomtours - desc: `A Gen 9 Fakemon micrometa featuring the Super Types mechanic, granting 1 Pokemon per team an additional and powerful new typing.`, - mod: 'scootopiav2', + name: "[Gen 9] Six by Six", // Roomtours + desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`, + mod: 'sixbysix', searchShow: false, - ruleset: ['Standard NatDex', 'Terastal Clause', 'Z-Move Clause', 'Super Type Moves Rule', 'Data Preview', 'Sprite Viewer'], + ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Terastal Clause', 'Data Preview', 'Sprite Viewer'], banlist: [ - 'All Pokemon', 'Crystal Heart', 'Wild Heart', + 'All Pokemon', 'Last Respects', 'Shed Tail', 'King\'s Rock', 'Razor Fang', 'Baton Pass', ], unbanlist: [ - 'Arbrella', 'Krachiten', 'Scalaron', 'Rantler', 'Woolora', 'Albatrygon', 'Orchile', - 'Embuck', 'Cindoe', 'Cobracotta', 'Minillow', 'Crossont', 'Torgeist', 'Platypad', 'Lumoth', - 'Aurorowl', 'Carapex', 'Dojodo', 'Nunopod', 'Zeploom', 'Brawnkey', 'Salamalix', 'Cinnastar', - 'MuabBoa', 'Sturgard', 'Harzodia', 'Cyllindrake', 'Kodokai', 'Electangle', 'Dolphena', 'Soleron', - 'Soleron-Awakened', 'Jaegorm', 'Jaegorm-Collective', 'Elemadillo', 'Axolacred', 'Roscenti', - 'Blunderbusk', 'Barracoth', 'Jamborai', 'Dracoil', 'Celespirit', 'Noxtrice', 'Avastar', - 'Faerenheit', 'Cellsius', 'Kelven', 'Salaos', 'Morndos', 'Pythos', 'Corundell', 'Quadringo', - 'Saphor', 'Fenreil', 'Efflor', 'Flocura', 'Flocura-Nexus', + 'Kingdra-Classic', 'Kingdra-Brinepool', 'Kingdra-Druid', 'Kingdra-Bard', 'Kingdra-Gourmet', 'Kingdra-Ancient', + 'Nidoqueen-Classic', 'Nidoqueen-Erudite', 'Nidoqueen-Volcanic', + 'Nidoqueen-Rosegold', 'Nidoqueen-Shaman', 'Nidoqueen-Jasper', + 'Bisharp-Centurion', 'Bisharp-Savage', 'Bisharp-Ronin', 'Bisharp-Mantis', 'Bisharp-Revenant', 'Bisharp-Assassin', + 'Corviknight-Thunderbird', 'Corviknight-Genie', 'Corviknight-Yeti', + 'Corviknight-Analytical', 'Corviknight-Martian', 'Corviknight-Falcon', + 'Krookodile-Infernal', 'Krookodile-Abyssal', 'Krookodile-Wetlander', + 'Krookodile-Cave Dweller', 'Krookodile-Cliffside', 'Krookodile-Quantum', + 'Ogerpon-Muerta', 'Ogerpon-Easter', 'Ogerpon-Ankh', 'Ogerpon-Eid', 'Ogerpon-Vessel', 'Ogerpon-Kitsune', ], onBegin() { - this.add(`raw|
    Need help with all of the new moves, abilities, and wacky stuff?
    Then make sure to check out the Scootopia Spreadsheet or use /dt!
    `); - this.add('-message', `Welcome to Scootopia!`); - this.add('-message', `This is a fakemon micrometa created by Scoopapa, featuring the Super Types mechanic!`); - this.add('-message', `Super Types are powerful additional types that a Pokemon can gain by holding a specific Super Type Orb!`); + this.add('-message', `Welcome to Six by Six!`); + this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`); this.add('-message', `You can find our thread and metagame resources here:`); - this.add('-message', `https://www.smogon.com/forums/threads/3742131/`); + this.add('-message', `https://www.smogon.com/forums/threads/3769141/`); }, onSwitchInPriority: 100, onSwitchIn(pokemon) { diff --git a/data/mods/scootopiav2/abilities.ts b/data/mods/scootopiav2/abilities.ts deleted file mode 100644 index 90d59ddb10..0000000000 --- a/data/mods/scootopiav2/abilities.ts +++ /dev/null @@ -1,135 +0,0 @@ -export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = { - mythicalpresence: { - name: "Mythical Presence", - shortDesc: "Lowers opposing Pokemon Special Attack by 1 stage when switching in.", - onStart(pokemon) { - let activated = false; - for (const target of pokemon.adjacentFoes()) { - if (!activated) { - this.add('-ability', pokemon, 'Mythical Presence', 'boost'); - activated = true; - } - if (target.volatiles['substitute']) { - this.add('-immune', target); - } else { - this.boost({ spa: -1 }, target, pokemon, null, true); - } - } - }, - }, - powerconstruct: { - onResidualOrder: 27, - onResidual(pokemon) { - if (pokemon.baseSpecies.baseSpecies !== 'Flocura' || pokemon.transformed || !pokemon.hp) return; - if (pokemon.species.id === 'flocuranexus' || pokemon.hp > pokemon.maxhp / 2) return; - this.add('-activate', pokemon, 'ability: Power Construct'); - pokemon.formeChange('Flocura-Nexus', this.effect, true); - pokemon.baseMaxhp = Math.floor(Math.floor( - 2 * pokemon.species.baseStats['hp'] + pokemon.set.ivs['hp'] + Math.floor(pokemon.set.evs['hp'] / 4) + 100 - ) * pokemon.level / 100 + 10); - const newMaxHP = pokemon.volatiles['dynamax'] ? (2 * pokemon.baseMaxhp) : pokemon.baseMaxhp; - pokemon.hp = newMaxHP - (pokemon.maxhp - pokemon.hp); - pokemon.maxhp = newMaxHP; - this.add('-heal', pokemon, pokemon.getHealth, '[silent]'); - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - name: "Power Construct", - rating: 5, - num: 211, - }, - battlebond: { - shortDesc: "Change to a stronger forme after getting a KO.", - onSourceAfterFaint(length, target, source, effect) { - if (effect?.effectType !== 'Move') { - return; - } - if (source.species.id === 'soleron' && source.hp && !source.transformed && source.side.foe.pokemonLeft) { - this.add('-activate', source, 'ability: Battle Bond'); - source.formeChange('Soleron-Awakened', this.effect, true); - } - }, - onModifyMovePriority: -1, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - name: "Battle Bond", - rating: 4, - num: 210, - }, - crystalheart: { - shortDesc: "User becomes Crystal type. While Crystal type, 33% boost to Def and SpD", - onStart(pokemon) { - if (pokemon.hasType('Crystal')) return false; - if (!pokemon.addType('Crystal')) return false; - pokemon.setType(["Crystal"]); - this.add('-start', pokemon, 'typechange', 'Crystal', '[from] ability: Crystal Heart'); - }, - onModifyDefPriority: 6, - onModifyDef(def, pokemon) { - if (pokemon.hasType('Crystal')) return this.chainModify(1 + (1 / 3)); - }, - onModifySpDPriority: 6, - onModifySpD(spd, pokemon) { - if (pokemon.hasType('Crystal')) return this.chainModify(1 + (1 / 3)); - }, - name: "Crystal Heart", - }, - wildheart: { - onStart(pokemon) { - if (pokemon.hasType('Feral')) return false; - if (!pokemon.addType('Feral')) return false; - pokemon.setType(["Feral"]); - this.add('-start', pokemon, 'typechange', "Feral", '[from] ability: Wild Heart'); - }, - onModifyAtkPriority: 6, - onModifyAtk(atk, pokemon) { - if (pokemon.hasType('Feral')) return this.chainModify(1 + (1 / 3)); - }, - onModifySpAPriority: 6, - onModifySpA(spa, pokemon) { - if (pokemon.hasType('Feral')) return this.chainModify(1 + (1 / 3)); - }, - name: "Wild Heart", - shortDesc: "User becomes Feral type. While Feral type, 33% boost to Atk and SpA", - }, - schooling: { - onStart(pokemon) { - if (pokemon.baseSpecies.baseSpecies !== 'Jaegorm' || pokemon.transformed) return; - if (pokemon.hp > pokemon.maxhp / 4) { - if (pokemon.species.id === 'jaegorm') { - pokemon.formeChange('Jaegorm-Collective'); - } - } else { - if (pokemon.species.id === 'jaegormcollective') { - pokemon.formeChange('Jaegorm'); - } - } - }, - onResidualOrder: 27, - onResidual(pokemon) { - if ( - pokemon.baseSpecies.baseSpecies !== 'Jaegorm' || pokemon.transformed || !pokemon.hp - ) return; - if (pokemon.hp > pokemon.maxhp / 4) { - if (pokemon.species.id === 'jaegorm') { - pokemon.formeChange('Jaegorm-Collective'); - } - } else { - if (pokemon.species.id === 'jaegormcollective') { - pokemon.formeChange('Jaegorm'); - } - } - }, - flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1 }, - name: "Schooling", - shortDesc: "If user is Jaegorm, changes to Collective Form if it has > 1/4 max HP, else Solo Form.", - rating: 3, - num: 208, - }, - shellbunker: { - onDamage(damage, target, source, effect) { - if (effect.effectType !== 'Move' || !target.hurtThisTurn) return damage; - return damage / 2; - }, - name: "Shell Bunker", - shortDesc: "After taking damage, Def and SpD are doubled for the rest of the turn.", - }, -}; diff --git a/data/mods/scootopiav2/conditions.ts b/data/mods/scootopiav2/conditions.ts deleted file mode 100644 index 7086193b90..0000000000 --- a/data/mods/scootopiav2/conditions.ts +++ /dev/null @@ -1,67 +0,0 @@ -export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = { - frz: { - name: 'frz', - /* - start: " [Pokemon] was chilled!", - alreadyStarted: " [POKEMON] is already chilled!", - end: " [POKEMON] warmed up!", - endFromItem: " [POKEMON]'s [ITEM] warmed it up!", - endFromMove: " [POKEMON]'s [MOVE] warmed it up!", - cant: "[POKEMON] is chilled!", - */ - effectType: 'Status', - onStart(target, source, sourceEffect) { - if (sourceEffect && sourceEffect.effectType === 'Ability') { - this.add('-status', target, 'frz', '[from] ability: ' + sourceEffect.name, `[of] ${source}`); - } else { - this.add('-status', target, 'frz'); - } - }, - onResidualOrder: 9, - onResidual(pokemon) { - this.damage(pokemon.baseMaxhp / 16); - }, - onModifySpA(spa, pokemon) { - return this.chainModify(0.5); - }, - }, - slp: { - name: 'slp', - effectType: 'Status', - onStart(target, source, sourceEffect) { - if (sourceEffect && sourceEffect.effectType === 'Ability') { - this.add('-status', target, 'slp', '[from] ability: ' + sourceEffect.name, `[of] ${source}`); - } else if (sourceEffect && sourceEffect.effectType === 'Move') { - this.add('-status', target, 'slp', '[from] move: ' + sourceEffect.name); - } else { - this.add('-status', target, 'slp'); - } - // 1-3 turns - this.effectState.startTime = 3; - const sleepMoves = ["sleeppowder", "spore", "grasswhistle", "darkvoid", "hypnosis"]; - if (sourceEffect && sourceEffect.effectType === 'Move') { - if (sleepMoves.includes(sourceEffect.id)) this.effectState.startTime = 2; - } - this.effectState.time = this.effectState.startTime; - }, - onBeforeMovePriority: 10, - onBeforeMove(pokemon, target, move) { - if (pokemon.hasAbility('earlybird')) { - pokemon.statusState.time--; - } - pokemon.statusState.time--; - if (pokemon.statusState.time <= 0) { - pokemon.cureStatus(); - return; - } - this.add('cant', pokemon, 'slp'); - if (move.sleepUsable) { - return; - } - return false; - }, - onModifySpe(spe, pokemon) { - return this.chainModify(0.5); - }, - }, -}; diff --git a/data/mods/scootopiav2/formats-data.ts b/data/mods/scootopiav2/formats-data.ts deleted file mode 100644 index a917f298fa..0000000000 --- a/data/mods/scootopiav2/formats-data.ts +++ /dev/null @@ -1,218 +0,0 @@ -export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = { - arbrella: { - tier: "OU", - doublesTier: "DOU", - }, - krachiten: { - tier: "OU", - doublesTier: "DOU", - }, - scalaron: { - tier: "OU", - doublesTier: "DOU", - }, - rantler: { - tier: "OU", - doublesTier: "DOU", - }, - woolora: { - tier: "OU", - doublesTier: "DOU", - }, - albatrygon: { - tier: "OU", - doublesTier: "DOU", - }, - orchile: { - tier: "OU", - doublesTier: "DOU", - }, - embuck: { - tier: "OU", - doublesTier: "DOU", - }, - cindoe: { - tier: "OU", - doublesTier: "DOU", - }, - cobracotta: { - tier: "OU", - doublesTier: "DOU", - }, - minillow: { - tier: "OU", - doublesTier: "DOU", - }, - crossont: { - tier: "OU", - doublesTier: "DOU", - }, - torgeist: { - tier: "OU", - doublesTier: "DOU", - }, - platypad: { - tier: "OU", - doublesTier: "DOU", - }, - lumoth: { - tier: "OU", - doublesTier: "DOU", - }, - aurorowl: { - tier: "OU", - doublesTier: "DOU", - }, - carapex: { - tier: "OU", - doublesTier: "DOU", - }, - dojodo: { - tier: "OU", - doublesTier: "DOU", - }, - nunopod: { - tier: "OU", - doublesTier: "DOU", - }, - zeploom: { - tier: "OU", - doublesTier: "DOU", - }, - sturgard: { - tier: "OU", - doublesTier: "DOU", - }, - brawnkey: { - tier: "OU", - doublesTier: "DOU", - }, - salamalix: { - tier: "OU", - doublesTier: "DOU", - }, - cinnastar: { - tier: "OU", - doublesTier: "DOU", - }, - muabboa: { - tier: "OU", - doublesTier: "DOU", - }, - harzodia: { - tier: "OU", - doublesTier: "DOU", - }, - cyllindrake: { - tier: "OU", - doublesTier: "DOU", - }, - kodokai: { - tier: "OU", - doublesTier: "DOU", - }, - electangle: { - tier: "OU", - doublesTier: "DOU", - }, - dolphena: { - tier: "OU", - doublesTier: "DOU", - }, - soleron: { - tier: "OU", - doublesTier: "DOU", - }, - jaegorm: { - tier: "OU", - doublesTier: "DOU", - }, - elemadillo: { - tier: "OU", - doublesTier: "DOU", - }, - axolacred: { - tier: "OU", - doublesTier: "DOU", - }, - roscenti: { - tier: "OU", - doublesTier: "DOU", - }, - blunderbusk: { - tier: "OU", - doublesTier: "DOU", - }, - barracoth: { - tier: "OU", - doublesTier: "DOU", - }, - jamborai: { - tier: "OU", - doublesTier: "DOU", - }, - dracoil: { - tier: "OU", - doublesTier: "DOU", - }, - celespirit: { - tier: "OU", - doublesTier: "DOU", - }, - noxtrice: { - tier: "OU", - doublesTier: "DOU", - }, - avastar: { - tier: "OU", - doublesTier: "DOU", - }, - faerenheit: { - tier: "OU", - doublesTier: "DOU", - }, - cellsius: { - tier: "OU", - doublesTier: "DOU", - }, - kelven: { - tier: "OU", - doublesTier: "DOU", - }, - salaos: { - tier: "OU", - doublesTier: "DOU", - }, - morndos: { - tier: "OU", - doublesTier: "DOU", - }, - pythos: { - tier: "OU", - doublesTier: "DOU", - }, - corundell: { - tier: "OU", - doublesTier: "DOU", - }, - quadringo: { - tier: "OU", - doublesTier: "DOU", - }, - saphor: { - tier: "OU", - doublesTier: "DOU", - }, - fenreil: { - tier: "OU", - doublesTier: "DOU", - }, - efflor: { - tier: "OU", - doublesTier: "DOU", - }, - flocura: { - tier: "OU", - doublesTier: "DOU", - }, -}; diff --git a/data/mods/scootopiav2/items.ts b/data/mods/scootopiav2/items.ts deleted file mode 100644 index 5b340b51a1..0000000000 --- a/data/mods/scootopiav2/items.ts +++ /dev/null @@ -1,88 +0,0 @@ -export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { - crystalorb: { - name: "Crystal Orb", - num: 1001, - desc: "The holder's secondary type is replaced with Crystal. 20% boost to Crystal attacks.", - onBeforeSwitchIn(pokemon) { - if (this.effectState.usedSuperType && this.effectState.superTypeUser !== pokemon.fullname) return false; - if (pokemon.hasType('Crystal')) return false; - if (!pokemon.addType('Crystal')) return false; - pokemon.setType([pokemon.types[0], "Crystal"]); - this.effectState.usedSuperType = true; - this.effectState.superTypeUser = "first_switch"; - }, - onStart(pokemon) { - if (this.effectState.usedSuperType && this.effectState.superTypeUser === "first_switch") { - this.add('-message', pokemon.name + " is a Crystal type!"); - this.effectState.superTypeUser = pokemon.fullname; - } - if (this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname) { - this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); - } - }, - onUpdate(pokemon) { - if ( - this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname && !pokemon.hasType('Crystal') - ) { - pokemon.setType([pokemon.types[0], "Crystal"]); - this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); - } - }, - onTakeItem(item, pokemon, source) { - if (source?.hasType("Crystal")) { - return false; - } - return true; - }, - onBasePowerPriority: 15, - onBasePower(basePower, user, target, move) { - if (move && move.type === 'Crystal') { - return this.chainModify([0x1333, 0x1000]); - } - }, - gen: 9, - }, - feralorb: { - name: "Feral Orb", - num: 1002, - desc: "The holder's secondary type is replaced with Feral. 20% boost to Feral attacks.", - onBeforeSwitchIn(pokemon) { - if (this.effectState.usedSuperType && this.effectState.superTypeUser !== pokemon.fullname) return false; - if (pokemon.hasType('Feral')) return false; - if (!pokemon.addType('Feral')) return false; - pokemon.setType([pokemon.types[0], "Feral"]); - this.effectState.usedSuperType = true; - this.effectState.superTypeUser = "first_switch"; - }, - onStart(pokemon) { - if (this.effectState.usedSuperType && this.effectState.superTypeUser === "first_switch") { - this.add('-message', pokemon.name + " is a Feral type!"); - this.effectState.superTypeUser = pokemon.fullname; - } - if (this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname) { - this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); - } - }, - onUpdate(pokemon) { - if ( - this.effectState.usedSuperType && this.effectState.superTypeUser === pokemon.fullname && !pokemon.hasType('Feral') - ) { - pokemon.setType([pokemon.types[0], "Feral"]); - this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); - } - }, - onTakeItem(item, pokemon, source) { - if (source?.hasType("Feral")) { - return false; - } - return true; - }, - onBasePowerPriority: 15, - onBasePower(basePower, user, target, move) { - if (move && move.type === 'Feral') { - return this.chainModify([0x1333, 0x1000]); - } - }, - gen: 9, - }, -}; diff --git a/data/mods/scootopiav2/learnsets.ts b/data/mods/scootopiav2/learnsets.ts deleted file mode 100644 index 3573141dfa..0000000000 --- a/data/mods/scootopiav2/learnsets.ts +++ /dev/null @@ -1,4473 +0,0 @@ -export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTable = { - arbrella: { - learnset: { - woodhammer: ["9L1"], - seedbomb: ["9L1"], - grassyglide: ["9L1"], - bulletseed: ["9L1"], - solarblade: ["9L1"], - razorleaf: ["9L1"], - vinewhip: ["9L1"], - earthquake: ["9L1"], - bulldoze: ["9L1"], - drillrun: ["9L1"], - stoneedge: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - superpower: ["9L1"], - xscissor: ["9L1"], - lunge: ["9L1"], - skittersmack: ["9L1"], - nightslash: ["9L1"], - shadowclaw: ["9L1"], - slash: ["9L1"], - scratch: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - leafstorm: ["9L1"], - gigadrain: ["9L1"], - energyball: ["9L1"], - grassknot: ["9L1"], - grasspledge: ["9L1"], - frenzyplant: ["9L1"], - earthpower: ["9L1"], - scorchingsands: ["9L1"], - ancientpower: ["9L1"], - shadowball: ["9L1"], - shoreup: ["9L1"], - stealthrock: ["9L1"], - swordsdance: ["9L1"], - rockpolish: ["9L1"], - spikyshield: ["9L1"], - worryseed: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - safeguard: ["9L1"], - synthesis: ["9L1"], - substitute: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - crystalcutter: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralshred: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - krachiten: { - learnset: { - aquacutter: ["9L1"], - focusenergy: ["9L1"], - firstimpression: ["9L1"], - leechlife: ["9L1"], - lunge: ["9L1"], - uturn: ["9L1"], - liquidation: ["9L1"], - superpower: ["9L1"], - crunch: ["9L1"], - psychicfangs: ["9L1"], - rapidspin: ["9L1"], - toxicspikes: ["9L1"], - toxic: ["9L1"], - recover: ["9L1"], - taunt: ["9L1"], - switcheroo: ["9L1"], - calmmind: ["9L1"], - bugbuzz: ["9L1"], - xscissor: ["9L1"], - bugbite: ["9L1"], - skittersmack: ["9L1"], - strugglebug: ["9L1"], - waterfall: ["9L1"], - surf: ["9L1"], - hydropump: ["9L1"], - scald: ["9L1"], - dive: ["9L1"], - bubble: ["9L1"], - waterpulse: ["9L1"], - brine: ["9L1"], - bubblebeam: ["9L1"], - psychocut: ["9L1"], - zenheadbutt: ["9L1"], - psychic: ["9L1"], - poisonjab: ["9L1"], - sludgebomb: ["9L1"], - shadowball: ["9L1"], - shadowclaw: ["9L1"], - darkpulse: ["9L1"], - nightslash: ["9L1"], - bite: ["9L1"], - assurance: ["9L1"], - payback: ["9L1"], - slash: ["9L1"], - scratch: ["9L1"], - weatherball: ["9L1"], - terrainpulse: ["9L1"], - honeclaws: ["9L1"], - lightscreen: ["9L1"], - safeguard: ["9L1"], - aquaring: ["9L1"], - lifedew: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - chillingwater: ["9L1"], - icespinner: ["9L1"], - helpinghand: ["9L1"], - quickguard: ["9L1"], - facade: ["9L1"], - haze: ["9L1"], - crystalcutter: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - scalaron: { - learnset: { - haze: ["9L1"], - whirlwind: ["9L1"], - roar: ["9L1"], - hurricane: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - mysticalfire: ["9L1"], - uturn: ["9L1"], - dragontail: ["9L1"], - defog: ["9L1"], - roost: ["9L1"], - toxic: ["9L1"], - willowisp: ["9L1"], - taunt: ["9L1"], - airslash: ["9L1"], - aircutter: ["9L1"], - wingattack: ["9L1"], - gust: ["9L1"], - dualwingbeat: ["9L1"], - aerialace: ["9L1"], - fly: ["9L1"], - acrobatics: ["9L1"], - heatwave: ["9L1"], - flareblitz: ["9L1"], - flamecharge: ["9L1"], - inferno: ["9L1"], - incinerate: ["9L1"], - firefang: ["9L1"], - firespin: ["9L1"], - ember: ["9L1"], - dragonpulse: ["9L1"], - dragonclaw: ["9L1"], - scaleshot: ["9L1"], - darkpulse: ["9L1"], - snarl: ["9L1"], - crunch: ["9L1"], - bite: ["9L1"], - thunderfang: ["9L1"], - shockwave: ["9L1"], - irontail: ["9L1"], - doubleedge: ["9L1"], - crushclaw: ["9L1"], - hyperbeam: ["9L1"], - tailwind: ["9L1"], - dragondance: ["9L1"], - memento: ["9L1"], - meanlook: ["9L1"], - scaryface: ["9L1"], - torment: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - facade: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - }, - }, - rantler: { - learnset: { - doubleedge: ["9L1"], - facade: ["9L1"], - hyperfang: ["9L1"], - bodyslam: ["9L1"], - quickattack: ["9L1"], - gigaimpact: ["9L1"], - headbutt: ["9L1"], - slash: ["9L1"], - fakeout: ["9L1"], - lastresort: ["9L1"], - retaliate: ["9L1"], - strength: ["9L1"], - scratch: ["9L1"], - iciclecrash: ["9L1"], - icefang: ["9L1"], - iceshard: ["9L1"], - earthquake: ["9L1"], - highhorsepower: ["9L1"], - stompingtantrum: ["9L1"], - superpower: ["9L1"], - brickbreak: ["9L1"], - revenge: ["9L1"], - rocksmash: ["9L1"], - crunch: ["9L1"], - bite: ["9L1"], - payback: ["9L1"], - haze: ["9L1"], - roar: ["9L1"], - assurance: ["9L1"], - thief: ["9L1"], - psychicfangs: ["9L1"], - wildcharge: ["9L1"], - thunderfang: ["9L1"], - megahorn: ["9L1"], - firstimpression: ["9L1"], - ironhead: ["9L1"], - hornleech: ["9L1"], - playrough: ["9L1"], - icebeam: ["9L1"], - blizzard: ["9L1"], - frostbreath: ["9L1"], - freezedry: ["9L1"], - aurorabeam: ["9L1"], - powdersnow: ["9L1"], - hypervoice: ["9L1"], - hyperbeam: ["9L1"], - snarl: ["9L1"], - darkpulse: ["9L1"], - surf: ["9L1"], - waterpulse: ["9L1"], - shockwave: ["9L1"], - mudslap: ["9L1"], - swordsdance: ["9L1"], - bulkup: ["9L1"], - taunt: ["9L1"], - nobleroar: ["9L1"], - workup: ["9L1"], - snowscape: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - auroraveil: ["9L1"], - grassyterrain: ["9L1"], - mistyterrain: ["9L1"], - yawn: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - focusenergy: ["9L1"], - howl: ["9L1"], - helpinghand: ["9L1"], - sheercold: ["9L1"], - honeclaws: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - icespinner: ["9L1"], - crystalcutter: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - }, - }, - woolora: { - learnset: { - moonblast: ["9L1"], - wildcharge:["9L1"], - healingwish: ["9L1"], - drainingkiss: ["9L1"], - mistyexplosion: ["9L1"], - disarmingvoice: ["9L1"], - mysticalfire: ["9L1"], - facade: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - storedpower: ["9L1"], - shadowball: ["9L1"], - energyball: ["9L1"], - playrough: ["9L1"], - highhorsepower: ["9L1"], - zenheadbutt: ["9L1"], - bodypress: ["9L1"], - megahorn: ["9L1"], - bounce: ["9L1"], - hyperbeam: ["9L1"], - gigaimpact: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - takedown: ["9L1"], - retaliate: ["9L1"], - headbutt: ["9L1"], - tackle: ["9L1"], - calmmind: ["9L1"], - moonlight: ["9L1"], - teleport: ["9L1"], - roar: ["9L1"], - wish: ["9L1"], - cottonguard: ["9L1"], - healbell: ["9L1"], - bulkup: ["9L1"], - mistyterrain: ["9L1"], - raindance: ["9L1"], - growl: ["9L1"], - babydolleyes: ["9L1"], - guardswap: ["9L1"], - helpinghand: ["9L1"], - batonpass: ["9L1"], - agility: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - }, - }, - albatrygon: { - learnset: { - encore: ["9L1"], - taunt: ["9L1"], - bravebird: ["9L1"], - helpinghand: ["9L1"], - acrobatics: ["9L1"], - beatup: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - fly: ["9L1"], - aerialace: ["9L1"], - pluck: ["9L1"], - peck: ["9L1"], - sacredsword: ["9L1"], - foulplay: ["9L1"], - darkestlariat: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - brutalswing: ["9L1"], - thief: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - takedown: ["9L1"], - gigaimpact: ["9L1"], - spikes: ["9L1"], - switcheroo: ["9L1"], - partingshot: ["9L1"], - defog: ["9L1"], - memento: ["9L1"], - featherdance: ["9L1"], - workup: ["9L1"], - smartstrike: ["9L1"], - steelwing: ["9L1"], - growl: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - mistyterrain: ["9L1"], - skillswap: ["9L1"], - screech: ["9L1"], - tailwind: ["9L1"], - wonderroom: ["9L1"], - magicroom: ["9L1"], - mimic: ["9L1"], - allyswitch: ["9L1"], - focusenergy: ["9L1"], - laserfocus: ["9L1"], - tidyup: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - facade: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - whirlwind: ["9L1"], - endure: ["9L1"], - wideguard: ["9L1"], - quickguard: ["9L1"], - uturn: ["9L1"], - crystalcutter: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - feralspray: ["9L1"], - }, - }, - orchile: { - learnset: { - moonblast: ["9L1"], - dazzlinggleam: ["9L1"], - drainingkiss: ["9L1"], - sleeppowder: ["9L1"], - ragepowder: ["9L1"], - beatup: ["9L1"], - sludgebomb: ["9L1"], - clearsmog: ["9L1"], - gigadrain: ["9L1"], - leafstorm: ["9L1"], - energyball: ["9L1"], - earthpower: ["9L1"], - facade: ["9L1"], - mysticalfire: ["9L1"], - psychic: ["9L1"], - shadowball: ["9L1"], - darkpulse: ["9L1"], - strengthsap: ["9L1"], - willowisp: ["9L1"], - spikes: ["9L1"], - toxicspikes: ["9L1"], - toxic: ["9L1"], - stunspore: ["9L1"], - leechseed: ["9L1"], - calmmind: ["9L1"], - aromatherapy: ["9L1"], - synthesis: ["9L1"], - trickroom: ["9L1"], - sludge: ["9L1"], - acid: ["9L1"], - venoshock: ["9L1"], - gunkshot: ["9L1"], - poisonjab: ["9L1"], - crosspoison: ["9L1"], - poisonsting: ["9L1"], - solarbeam: ["9L1"], - grassknot: ["9L1"], - petaldance: ["9L1"], - vinewhip: ["9L1"], - megadrain: ["9L1"], - petalblizzard: ["9L1"], - seedbomb: ["9L1"], - magicalleaf: ["9L1"], - absorb: ["9L1"], - grassyglide: ["9L1"], - razorleaf: ["9L1"], - mudslap: ["9L1"], - dreameater: ["9L1"], - psychocut: ["9L1"], - nightslash: ["9L1"], - payback: ["9L1"], - pollenpuff: ["9L1"], - cut: ["9L1"], - endeavor: ["9L1"], - slash: ["9L1"], - helpinghand: ["9L1"], - wrap: ["9L1"], - bodyslam: ["9L1"], - tackle: ["9L1"], - growth: ["9L1"], - worryseed: ["9L1"], - sweetscent: ["9L1"], - safeguard: ["9L1"], - corrosivegas: ["9L1"], - poisonpowder: ["9L1"], - venomdrench: ["9L1"], - disable: ["9L1"], - curse: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - grassyterrain: ["9L1"], - attract: ["9L1"], - protect: ["9L1"], - substitute: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - snore: ["9L1"], - endure: ["9L1"], - crystalcutter: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralshred: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - embuck: { - learnset: { - flareblitz: ["9L1"], - beatup: ["9L1"], - blazekick: ["9L1"], - closecombat: ["9L1"], - highhorsepower: ["9L1"], - megahorn: ["9L1"], - uturn: ["9L1"], - morningsun: ["9L1"], - bulkup: ["9L1"], - willowisp: ["9L1"], - taunt: ["9L1"], - doublekick: ["9L1"], - tackle: ["9L1"], - growl: ["9L1"], - smokescreen: ["9L1"], - ember: ["9L1"], - sunnyday: ["9L1"], - flamecharge: ["9L1"], - snarl: ["9L1"], - agility: ["9L1"], - inferno: ["9L1"], - superpower: ["9L1"], - aerialace: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - bounce: ["9L1"], - confide: ["9L1"], - darkpulse: ["9L1"], - doubleteam: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - falseswipe: ["9L1"], - fly: ["9L1"], - focusblast: ["9L1"], - frustration: ["9L1"], - gigaimpact: ["9L1"], - heatwave: ["9L1"], - hyperbeam: ["9L1"], - incinerate: ["9L1"], - laserfocus: ["9L1"], - nastyplot: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - round: ["9L1"], - sleeptalk: ["9L1"], - snore: ["9L1"], - solarbeam: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - thief: ["9L1"], - throatchop: ["9L1"], - uproar: ["9L1"], - wildcharge:["9L1"], - workup: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - helpinghand: ["9L1"], - aurasphere: ["9L1"], - vacuumwave: ["9L1"], - crystalbash: ["9L1"], - crystalcage: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - cindoe: { - learnset: { - fierywrath: ["9L1"], - overheat: ["9L1"], - beatup: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - mysticalfire: ["9L1"], - psychic: ["9L1"], - nastyplot: ["9L1"], - calmmind: ["9L1"], - morningsun: ["9L1"], - taunt: ["9L1"], - moonlight: ["9L1"], - tackle: ["9L1"], - growl: ["9L1"], - smokescreen: ["9L1"], - ember: ["9L1"], - agility: ["9L1"], - inferno: ["9L1"], - blazekick: ["9L1"], - darkpulse: ["9L1"], - partingshot: ["9L1"], - aerialace: ["9L1"], - assurance: ["9L1"], - attract: ["9L1"], - bounce: ["9L1"], - confide: ["9L1"], - doubleteam: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - falseswipe: ["9L1"], - focusblast: ["9L1"], - frustration: ["9L1"], - gigaimpact: ["9L1"], - incinerate: ["9L1"], - heatwave: ["9L1"], - hyperbeam: ["9L1"], - laserfocus: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - round: ["9L1"], - sleeptalk: ["9L1"], - snarl: ["9L1"], - snore: ["9L1"], - solarbeam: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - swordsdance: ["9L1"], - thief: ["9L1"], - throatchop: ["9L1"], - uproar: ["9L1"], - helpinghand: ["9L1"], - uturn: ["9L1"], - wildcharge:["9L1"], - willowisp: ["9L1"], - workup: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - cobracotta: { - learnset: { - powerwhip: ["9L1"], - toxic: ["9L1"], - petalblizzard: ["9L1"], - seedbomb: ["9L1"], - bulletseed: ["9L1"], - grassyglide: ["9L1"], - razorleaf: ["9L1"], - gunkshot: ["9L1"], - poisonjab: ["9L1"], - poisonfang: ["9L1"], - poisonsting: ["9L1"], - earthquake: ["9L1"], - bulldoze: ["9L1"], - stoneedge: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - rockblast: ["9L1"], - rollout: ["9L1"], - knockoff: ["9L1"], - suckerpunch: ["9L1"], - crunch: ["9L1"], - bite: ["9L1"], - brutalswing: ["9L1"], - payback: ["9L1"], - thief: ["9L1"], - psychicfangs: ["9L1"], - rocksmash: ["9L1"], - revenge: ["9L1"], - bodyslam: ["9L1"], - gigaimpact: ["9L1"], - wrap: ["9L1"], - gigadrain: ["9L1"], - energyball: ["9L1"], - leafstorm: ["9L1"], - grassknot: ["9L1"], - solarbeam: ["9L1"], - megadrain: ["9L1"], - petaldance: ["9L1"], - sludgebomb: ["9L1"], - venoshock: ["9L1"], - sludge: ["9L1"], - acid: ["9L1"], - acidspray: ["9L1"], - belch: ["9L1"], - darkpulse: ["9L1"], - earthpower: ["9L1"], - ancientpower: ["9L1"], - sweetscent: ["9L1"], - naturepower: ["9L1"], - hyperbeam: ["9L1"], - shellsmash: ["9L1"], - coil: ["9L1"], - glare: ["9L1"], - nastyplot: ["9L1"], - stealthrock: ["9L1"], - synthesis: ["9L1"], - leechseed: ["9L1"], - spitup: ["9L1"], - stockpile: ["9L1"], - swallow: ["9L1"], - focusenergy: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - grassyterrain: ["9L1"], - laserfocus: ["9L1"], - helpinghand: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - dragontail: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - minillow: { - learnset: { - haze: ["9L1"], - hydropump: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - chillingwater: ["9L1"], - moonblast: ["9L1"], - nastyplot: ["9L1"], - drainingkiss: ["9L1"], - mistyexplosion: ["9L1"], - icebeam: ["9L1"], - psychic: ["9L1"], - flipturn: ["9L1"], - moonlight: ["9L1"], - bubble: ["9L1"], - tailwhip: ["9L1"], - babydolleyes: ["9L1"], - aquajet: ["9L1"], - aquaring: ["9L1"], - bubblebeam: ["9L1"], - soak: ["9L1"], - waterfall: ["9L1"], - agility: ["9L1"], - dazzlinggleam: ["9L1"], - attract: ["9L1"], - blizzard: ["9L1"], - bodyslam: ["9L1"], - bounce: ["9L1"], - dive: ["9L1"], - doubleteam: ["9L1"], - drillrun: ["9L1"], - helpinghand: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - gigaimpact: ["9L1"], - snowscape: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - muddywater: ["9L1"], - mudshot: ["9L1"], - poisonjab: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - scaleshot: ["9L1"], - shadowball: ["9L1"], - sleeptalk: ["9L1"], - snore: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - swift: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - zenheadbutt: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - feralbite: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - followme: ["9L1"], - }, - }, - crossont: { - learnset: { - recover: ["9L1"], - megahorn: ["9L1"], - pinmissile: ["9L1"], - attackorder: ["9L1"], - closecombat: ["9L1"], - superpower: ["9L1"], - rockblast: ["9L1"], - circlethrow: ["9L1"], - knockoff: ["9L1"], - earthquake: ["9L1"], - stoneedge: ["9L1"], - spiritshackle: ["9L1"], - spikes: ["9L1"], - bulkup: ["9L1"], - focusenergy: ["9L1"], - submission: ["9L1"], - astonish: ["9L1"], - defensecurl: ["9L1"], - strugglebug: ["9L1"], - fling: ["9L1"], - armthrust: ["9L1"], - lockon: ["9L1"], - bulletseed: ["9L1"], - dynamicpunch: ["9L1"], - laserfocus: ["9L1"], - crosschop: ["9L1"], - wideguard: ["9L1"], - finalgambit: ["9L1"], - aerialace: ["9L1"], - attract: ["9L1"], - brickbreak: ["9L1"], - bugbite: ["9L1"], - bugbuzz: ["9L1"], - bulldoze: ["9L1"], - confide: ["9L1"], - covet: ["9L1"], - doubleteam: ["9L1"], - endeavor: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - firepunch: ["9L1"], - focusblast: ["9L1"], - focuspunch: ["9L1"], - frustration: ["9L1"], - gigaimpact: ["9L1"], - gunkshot: ["9L1"], - helpinghand: ["9L1"], - hyperbeam: ["9L1"], - icepunch: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - outrage: ["9L1"], - payback: ["9L1"], - poweruppunch: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - rockclimb: ["9L1"], - rockslide: ["9L1"], - rocksmash: ["9L1"], - rocktomb: ["9L1"], - roleplay: ["9L1"], - round: ["9L1"], - seedbomb: ["9L1"], - sleeptalk: ["9L1"], - smackdown: ["9L1"], - snore: ["9L1"], - spite: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - taunt: ["9L1"], - thief: ["9L1"], - throatchop: ["9L1"], - thunderpunch: ["9L1"], - uproar: ["9L1"], - workup: ["9L1"], - xscissor: ["9L1"], - axekick: ["9L1"], - crystalcutter: ["9L1"], - crystalbash: ["9L1"], - crystalcage: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralresilience: ["9L1"], - }, - }, - torgeist: { - learnset: { - shadowball: ["9L1"], - facade: ["9L1"], - hex: ["9L1"], - ominouswind: ["9L1"], - boomburst: ["9L1"], - hypervoice: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - hurricane: ["9L1"], - airslash: ["9L1"], - weatherball: ["9L1"], - heatwave: ["9L1"], - icywind: ["9L1"], - darkpulse: ["9L1"], - shockwave: ["9L1"], - uturn: ["9L1"], - poltergeist: ["9L1"], - shadowsneak: ["9L1"], - phantomforce: ["9L1"], - astonish: ["9L1"], - dualwingbeat: ["9L1"], - acrobatics: ["9L1"], - suckerpunch: ["9L1"], - foulplay: ["9L1"], - thief: ["9L1"], - payback: ["9L1"], - headbutt: ["9L1"], - wrap: ["9L1"], - doubleedge: ["9L1"], - painsplit: ["9L1"], - trick: ["9L1"], - taunt: ["9L1"], - nastyplot: ["9L1"], - calmmind: ["9L1"], - willowisp: ["9L1"], - toxicthread: ["9L1"], - tailwind: ["9L1"], - defog: ["9L1"], - raindance: ["9L1"], - disable: ["9L1"], - workup: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - meanlook: ["9L1"], - perishsong: ["9L1"], - metalsound: ["9L1"], - gust: ["9L1"], - haze: ["9L1"], - screech: ["9L1"], - imprison: ["9L1"], - destinybond: ["9L1"], - memento: ["9L1"], - magiccoat: ["9L1"], - sunnyday: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralhealing: ["9L1"], - }, - }, - platypad: { - learnset: { - revivalblessing: ["9L1"], - wavecrash: ["9L1"], - wish: ["9L1"], - gigadrain: ["9L1"], - leafstorm: ["9L1"], - sludgebomb: ["9L1"], - weatherball: ["9L1"], - hydropump: ["9L1"], - scald: ["9L1"], - shadowball: ["9L1"], - flipturn: ["9L1"], - dragontail: ["9L1"], - poisonjab: ["9L1"], - petalblizzard: ["9L1"], - earthquake: ["9L1"], - slackoff: ["9L1"], - spikes: ["9L1"], - toxicspikes: ["9L1"], - roar: ["9L1"], - toxic: ["9L1"], - aromatherapy: ["9L1"], - haze: ["9L1"], - leechseed: ["9L1"], - stunspore: ["9L1"], - bellydrum: ["9L1"], - venoshock: ["9L1"], - sludgewave: ["9L1"], - poisonsting: ["9L1"], - crosspoison: ["9L1"], - poisontail: ["9L1"], - solarbeam: ["9L1"], - energyball: ["9L1"], - grassknot: ["9L1"], - magicalleaf: ["9L1"], - seedbomb: ["9L1"], - bulletseed: ["9L1"], - grassyglide: ["9L1"], - megadrain: ["9L1"], - absorb: ["9L1"], - aquatail: ["9L1"], - liquidation: ["9L1"], - surf: ["9L1"], - whirlpool: ["9L1"], - icywind: ["9L1"], - zenheadbutt: ["9L1"], - extrasensory: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - rockslide: ["9L1"], - rollout: ["9L1"], - outrage: ["9L1"], - shockwave: ["9L1"], - drainingkiss: ["9L1"], - nightshade: ["9L1"], - shadowclaw: ["9L1"], - wildcharge: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - fling: ["9L1"], - pollenpuff: ["9L1"], - doubleedge: ["9L1"], - hyperbeam: ["9L1"], - gigaimpact: ["9L1"], - bodyslam: ["9L1"], - covet: ["9L1"], - hypervoice: ["9L1"], - uproar: ["9L1"], - tackle: ["9L1"], - curse: ["9L1"], - moonlight: ["9L1"], - venomdrench: ["9L1"], - poisonpowder: ["9L1"], - yawn: ["9L1"], - defensecurl: ["9L1"], - attract: ["9L1"], - afteryou: ["9L1"], - charm: ["9L1"], - psychup: ["9L1"], - lifedew: ["9L1"], - amnesia: ["9L1"], - stockpile: ["9L1"], - swallow: ["9L1"], - spitup: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - snowscape: ["9L1"], - sandstorm: ["9L1"], - grassyterrain: ["9L1"], - safeguard: ["9L1"], - wideguard: ["9L1"], - block: ["9L1"], - helpinghand: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - facade: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - chillingwater: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralhealing: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - lumoth: { - learnset: { - shadowball: ["9L1"], - hex: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - bugbuzz: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - thunderbolt: ["9L1"], - thunder: ["9L1"], - quiverdance: ["9L1"], - willowisp: ["9L1"], - sleeppowder: ["9L1"], - defog: ["9L1"], - astonish: ["9L1"], - leer: ["9L1"], - infestation: ["9L1"], - stringshot: ["9L1"], - silverwind: ["9L1"], - psybeam: ["9L1"], - ragepowder: ["9L1"], - calmmind: ["9L1"], - expandingforce: ["9L1"], - allyswitch: ["9L1"], - chargebeam: ["9L1"], - confide: ["9L1"], - covet: ["9L1"], - darkpulse: ["9L1"], - doubleteam: ["9L1"], - dreameater: ["9L1"], - embargo: ["9L1"], - facade: ["9L1"], - frustration: ["9L1"], - grassknot: ["9L1"], - gravity: ["9L1"], - hyperbeam: ["9L1"], - laserfocus: ["9L1"], - lastresort: ["9L1"], - lightscreen: ["9L1"], - magiccoat: ["9L1"], - magicroom: ["9L1"], - protect: ["9L1"], - psychup: ["9L1"], - raindance: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - shockwave: ["9L1"], - signalbeam: ["9L1"], - skillswap: ["9L1"], - sleeptalk: ["9L1"], - snatch: ["9L1"], - snore: ["9L1"], - strugglebug: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - haze: ["9L1"], - telekinesis: ["9L1"], - thunderwave: ["9L1"], - torment: ["9L1"], - helpinghand: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - uturn: ["9L1"], - wonderroom: ["9L1"], - zenheadbutt: ["9L1"], - silktrap: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - }, - }, - aurorowl: { - learnset: { - haze: ["9L1"], - frostbreath: ["9L1"], - dualwingbeat: ["9L1"], - icebeam: ["9L1"], - aircutter: ["9L1"], - hurricane: ["9L1"], - airslash: ["9L1"], - focusblast: ["9L1"], - iceshard: ["9L1"], - tripleaxel: ["9L1"], - aerialace: ["9L1"], - bravebird: ["9L1"], - uturn: ["9L1"], - nastyplot: ["9L1"], - sheercold: ["9L1"], - roost: ["9L1"], - defog: ["9L1"], - icywind: ["9L1"], - tackle: ["9L1"], - sandattack: ["9L1"], - gust: ["9L1"], - quickattack: ["9L1"], - whirlwind: ["9L1"], - featherdance: ["9L1"], - aurorabeam: ["9L1"], - attract: ["9L1"], - blizzard: ["9L1"], - confide: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fly: ["9L1"], - frustration: ["9L1"], - gigaimpact: ["9L1"], - snowscape: ["9L1"], - hyperbeam: ["9L1"], - laserfocus: ["9L1"], - pluck: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - round: ["9L1"], - skyattack: ["9L1"], - sleeptalk: ["9L1"], - snore: ["9L1"], - steelwing: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - tailwind: ["9L1"], - thief: ["9L1"], - uproar: ["9L1"], - workup: ["9L1"], - crystalcutter: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - }, - }, - carapex: { - learnset: { - acrobatics: ["9L1"], - tailwind: ["9L1"], - megahorn: ["9L1"], - uturn: ["9L1"], - dualwingbeat: ["9L1"], - bodypress: ["9L1"], - knockoff: ["9L1"], - earthquake: ["9L1"], - stoneedge: ["9L1"], - stealthrock: ["9L1"], - defog: ["9L1"], - roost: ["9L1"], - irondefense: ["9L1"], - whirlwind: ["9L1"], - tackle: ["9L1"], - defensecurl: ["9L1"], - endure: ["9L1"], - rollout: ["9L1"], - furycutter: ["9L1"], - batonpass: ["9L1"], - reversal: ["9L1"], - bugbuzz: ["9L1"], - aerialace: ["9L1"], - airslash: ["9L1"], - allyswitch: ["9L1"], - attract: ["9L1"], - brutalswing: ["9L1"], - cut: ["9L1"], - dig: ["9L1"], - doubleteam: ["9L1"], - echoedvoice: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - fly: ["9L1"], - frustration: ["9L1"], - gigadrain: ["9L1"], - helpinghand: ["9L1"], - hurricane: ["9L1"], - lastresort: ["9L1"], - leechlife: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - round: ["9L1"], - shadowball: ["9L1"], - shadowclaw: ["9L1"], - sleeptalk: ["9L1"], - snore: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - thief: ["9L1"], - uproar: ["9L1"], - workup: ["9L1"], - crystalcutter: ["9L1"], - crystalbash: ["9L1"], - crystalcage: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - wideguard: ["9L1"], - }, - }, - dojodo: { - learnset: { - highjumpkick: ["9L1"], - closecombat: ["9L1"], - drainpunch: ["9L1"], - bodypress: ["9L1"], - knockoff: ["9L1"], - icepunch: ["9L1"], - firepunch: ["9L1"], - thunderpunch: ["9L1"], - poisonjab: ["9L1"], - stompingtantrum: ["9L1"], - bravebird: ["9L1"], - bulkup: ["9L1"], - swordsdance: ["9L1"], - irondefense: ["9L1"], - taunt: ["9L1"], - coaching: ["9L1"], - peck: ["9L1"], - sandattack: ["9L1"], - armthrust: ["9L1"], - fakeout: ["9L1"], - forcepalm: ["9L1"], - whirlwind: ["9L1"], - brickbreak: ["9L1"], - batonpass: ["9L1"], - detect: ["9L1"], - jumpkick: ["9L1"], - drillpeck: ["9L1"], - matblock: ["9L1"], - reversal: ["9L1"], - gigaimpact: ["9L1"], - attract: ["9L1"], - confide: ["9L1"], - dig: ["9L1"], - dualwingbeat: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - featherdance: ["9L1"], - fling: ["9L1"], - focusblast: ["9L1"], - focuspunch: ["9L1"], - frustration: ["9L1"], - helpinghand: ["9L1"], - hyperbeam: ["9L1"], - ironhead: ["9L1"], - beatup: ["9L1"], - lowkick: ["9L1"], - lowsweep: ["9L1"], - payback: ["9L1"], - pluck: ["9L1"], - poweruppunch: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - rocksmash: ["9L1"], - roleplay: ["9L1"], - round: ["9L1"], - sleeptalk: ["9L1"], - snore: ["9L1"], - strength: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - throatchop: ["9L1"], - workup: ["9L1"], - jetpunch: ["9L1"], - quickguard: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalfortification: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralhealing: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - }, - }, - nunopod: { - learnset: { - lunge: ["9L1"], - beatup: ["9L1"], - leechlife: ["9L1"], - firstimpression: ["9L1"], - xscissor: ["9L1"], - furycutter: ["9L1"], - bugbite: ["9L1"], - earthquake: ["9L1"], - highhorsepower: ["9L1"], - stompingtantrum: ["9L1"], - bulldoze: ["9L1"], - dig: ["9L1"], - tripleaxel: ["9L1"], - highjumpkick: ["9L1"], - bodypress: ["9L1"], - rollingkick: ["9L1"], - brickbreak: ["9L1"], - tropkick: ["9L1"], - flipturn: ["9L1"], - zenheadbutt: ["9L1"], - ironhead: ["9L1"], - brutalswing: ["9L1"], - payback: ["9L1"], - blazekick: ["9L1"], - acrobatics: ["9L1"], - rapidspin: ["9L1"], - megakick: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - pound: ["9L1"], - bugbuzz: ["9L1"], - strugglebug: ["9L1"], - earthpower: ["9L1"], - scorchingsands: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - solarbeam: ["9L1"], - surf: ["9L1"], - shadowball: ["9L1"], - extrasensory: ["9L1"], - recover: ["9L1"], - stealthrock: ["9L1"], - workup: ["9L1"], - toxic: ["9L1"], - swordsdance: ["9L1"], - acidarmor: ["9L1"], - trickroom: ["9L1"], - rototiller: ["9L1"], - safeguard: ["9L1"], - sandstorm: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - grassyterrain: ["9L1"], - mistyterrain: ["9L1"], - psychicterrain: ["9L1"], - electricterrain: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - facade: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - zeploom: { - learnset: { - scorchingsands: ["9L1"], - facade: ["9L1"], - earthpower: ["9L1"], - mudslap: ["9L1"], - mudbomb: ["9L1"], - mudshot: ["9L1"], - energysiphon: ["9L1"], - gigadrain: ["9L1"], - energyball: ["9L1"], - leafstorm: ["9L1"], - grassknot: ["9L1"], - megadrain: ["9L1"], - nightshade: ["9L1"], - shadowball: ["9L1"], - hex: ["9L1"], - clearsmog: ["9L1"], - sludgebomb: ["9L1"], - acidspray: ["9L1"], - darkpulse: ["9L1"], - leafblade: ["9L1"], - seedbomb: ["9L1"], - bulletseed: ["9L1"], - earthquake: ["9L1"], - uturn: ["9L1"], - gunkshot: ["9L1"], - poisonjab: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - bounce: ["9L1"], - wrap: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - explosion: ["9L1"], - selfdestruct: ["9L1"], - pound: ["9L1"], - spore: ["9L1"], - synthesis: ["9L1"], - stealthrock: ["9L1"], - defog: ["9L1"], - toxic: ["9L1"], - encore: ["9L1"], - stunspore: ["9L1"], - memento: ["9L1"], - workup: ["9L1"], - leechseed: ["9L1"], - toxicthread: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - grassyterrain: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - ragepowder: ["9L1"], - crystalbash: ["9L1"], - crystalcage: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralshred: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - brawnkey: { - learnset: { - bodypress: ["9L1"], - facade: ["9L1"], - beatup: ["9L1"], - closecombat: ["9L1"], - drainpunch: ["9L1"], - rocksmash: ["9L1"], - submission: ["9L1"], - revenge: ["9L1"], - brickbreak: ["9L1"], - crosschop: ["9L1"], - karatechop: ["9L1"], - poweruppunch: ["9L1"], - vitalthrow: ["9L1"], - ironhead: ["9L1"], - heavyslam: ["9L1"], - steelroller: ["9L1"], - smartstrike: ["9L1"], - earthquake: ["9L1"], - highhorsepower: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - payback: ["9L1"], - thief: ["9L1"], - assurance: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - megakick: ["9L1"], - slam: ["9L1"], - gigaimpact: ["9L1"], - bind: ["9L1"], - pound: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - vacuumwave: ["9L1"], - flashcannon: ["9L1"], - mirrorshot: ["9L1"], - mirrorcoat: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - storedpower: ["9L1"], - shadowball: ["9L1"], - darkpulse: ["9L1"], - hypervoice: ["9L1"], - hyperbeam: ["9L1"], - triattack: ["9L1"], - irondefense: ["9L1"], - bulkup: ["9L1"], - stealthrock: ["9L1"], - spikes: ["9L1"], - calmmind: ["9L1"], - magiccoat: ["9L1"], - coaching: ["9L1"], - wideguard: ["9L1"], - workup: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - psychicterrain: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - chillyreception: ["9L1"], - crystalcutter: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - }, - }, - salamalix: { - learnset: { - accelerock: ["9L1"], - stoneedge: ["9L1"], - beatup: ["9L1"], - rockslide: ["9L1"], - rockblast: ["9L1"], - rocktomb: ["9L1"], - rockthrow: ["9L1"], - rockpolish: ["9L1"], - ironhead: ["9L1"], - bulletpunch: ["9L1"], - irontail: ["9L1"], - metalclaw: ["9L1"], - earthquake: ["9L1"], - stompingtantrum: ["9L1"], - bulldoze: ["9L1"], - closecombat: ["9L1"], - superpower: ["9L1"], - bodypress: ["9L1"], - rocksmash: ["9L1"], - poweruppunch: ["9L1"], - revenge: ["9L1"], - brickbreak: ["9L1"], - crunch: ["9L1"], - bite: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - psychicfangs: ["9L1"], - zenheadbutt: ["9L1"], - firefang: ["9L1"], - thunderfang: ["9L1"], - outrage: ["9L1"], - dragonhammer: ["9L1"], - dragontail: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - retaliate: ["9L1"], - gigaimpact: ["9L1"], - stealthrock: ["9L1"], - spikes: ["9L1"], - swordsdance: ["9L1"], - bulkup: ["9L1"], - taunt: ["9L1"], - torment: ["9L1"], - scaryface: ["9L1"], - workup: ["9L1"], - irondefense: ["9L1"], - defensecurl: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - focusenergy: ["9L1"], - laserfocus: ["9L1"], - honeclaws: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - roar: ["9L1"], - wideguard: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralbreath: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - }, - }, - cinnastar: { - learnset: { - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - focusblast: ["9L1"], - clearsmog: ["9L1"], - poisonjab: ["9L1"], - powergem: ["9L1"], - stoneedge: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - earthquake: ["9L1"], - earthpower: ["9L1"], - toxic: ["9L1"], - recover: ["9L1"], - stealthrock: ["9L1"], - wish: ["9L1"], - haze: ["9L1"], - corrosivegas: ["9L1"], - sludge: ["9L1"], - acid: ["9L1"], - acidspray: ["9L1"], - venoshock: ["9L1"], - rocktomb: ["9L1"], - rollout: ["9L1"], - rockthrow: ["9L1"], - meteorbeam: ["9L1"], - ancientpower: ["9L1"], - sandtomb: ["9L1"], - magnitude: ["9L1"], - mudslap: ["9L1"], - dazzlinggleam: ["9L1"], - drainingkiss: ["9L1"], - psychic: ["9L1"], - psychocut: ["9L1"], - flashcannon: ["9L1"], - smartstrike: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - takedown: ["9L1"], - explosion: ["9L1"], - lightscreen: ["9L1"], - flash: ["9L1"], - afteryou: ["9L1"], - guardsplit: ["9L1"], - guardswap: ["9L1"], - skillswap: ["9L1"], - powertrick: ["9L1"], - harden: ["9L1"], - irondefense: ["9L1"], - acidarmor: ["9L1"], - safeguard: ["9L1"], - wonderroom: ["9L1"], - sandstorm: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - mortalspin: ["9L1"], - }, - }, - muabboa: { - learnset: { - earthquake: ["9L1"], - highhorsepower: ["9L1"], - stompingtantrum: ["9L1"], - bulldoze: ["9L1"], - closecombat: ["9L1"], - superpower: ["9L1"], - sacredsword: ["9L1"], - highjumpkick: ["9L1"], - machpunch: ["9L1"], - brickbreak: ["9L1"], - crosschop: ["9L1"], - karatechop: ["9L1"], - poweruppunch: ["9L1"], - rocksmash: ["9L1"], - submission: ["9L1"], - vitalthrow: ["9L1"], - revenge: ["9L1"], - uturn: ["9L1"], - xscissor: ["9L1"], - knockoff: ["9L1"], - nightslash: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - thief: ["9L1"], - leafblade: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - slash: ["9L1"], - gigaimpact: ["9L1"], - quickattack: ["9L1"], - fakeout: ["9L1"], - smartstrike: ["9L1"], - zenheadbutt: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - earthpower: ["9L1"], - scorchingsands: ["9L1"], - shadowball: ["9L1"], - hypervoice: ["9L1"], - hyperbeam: ["9L1"], - swordsdance: ["9L1"], - encore: ["9L1"], - switcheroo: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - grassyterrain: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - quickguard: ["9L1"], - crystaltail: ["9L1"], - crystalhealing: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - }, - }, - volvolpa: { - learnset: { - volttackle: ["9L1"], - wildcharge: ["9L1"], - helpinghand: ["9L1"], - thunderfang: ["9L1"], - spark: ["9L1"], - hyperfang: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - slash: ["9L1"], - scratch: ["9L1"], - quickattack: ["9L1"], - gigaimpact: ["9L1"], - icefang: ["9L1"], - crunch: ["9L1"], - uturn: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - voltswitch: ["9L1"], - chargebeam: ["9L1"], - discharge: ["9L1"], - risingvoltage: ["9L1"], - shockwave: ["9L1"], - electroweb: ["9L1"], - electroball: ["9L1"], - thundershock: ["9L1"], - hypervoice: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - icebeam: ["9L1"], - blizzard: ["9L1"], - frostbreath: ["9L1"], - darkpulse: ["9L1"], - snarl: ["9L1"], - thunderwave: ["9L1"], - sheercold: ["9L1"], - agility: ["9L1"], - eerieimpulse: ["9L1"], - workup: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - snowscape: ["9L1"], - electricterrain: ["9L1"], - tailwhip: ["9L1"], - screech: ["9L1"], - magnetrise: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - roar: ["9L1"], - icespinner: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - }, - }, - harzodia: { - learnset: { - allyswitch: ["9L1"], - solarbeam: ["9L1"], - helpinghand: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - meteorbeam: ["9L1"], - shadowball: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - dazzlinggleam: ["9L1"], - thunderbolt: ["9L1"], - calmmind: ["9L1"], - trick: ["9L1"], - agility: ["9L1"], - recover: ["9L1"], - thunderwave: ["9L1"], - healbell: ["9L1"], - futuresight: ["9L1"], - expandingforce: ["9L1"], - storedpower: ["9L1"], - dreameater: ["9L1"], - psybeam: ["9L1"], - confusion: ["9L1"], - zenheadbutt: ["9L1"], - thunder: ["9L1"], - chargebeam: ["9L1"], - shockwave: ["9L1"], - zapcannon: ["9L1"], - fling: ["9L1"], - hypervoice: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - hyperbeam: ["9L1"], - teleport: ["9L1"], - reflect: ["9L1"], - lightscreen: ["9L1"], - disable: ["9L1"], - eerieimpulse: ["9L1"], - gravity: ["9L1"], - healpulse: ["9L1"], - imprison: ["9L1"], - laserfocus: ["9L1"], - magicroom: ["9L1"], - metronome: ["9L1"], - mimic: ["9L1"], - psychicterrain: ["9L1"], - psychoshift: ["9L1"], - psychup: ["9L1"], - recycle: ["9L1"], - safeguard: ["9L1"], - speedswap: ["9L1"], - swift: ["9L1"], - trickroom: ["9L1"], - wish: ["9L1"], - wonderroom: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - quickguard: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralhealing: ["9L1"], - }, - }, - cyllindrake: { - learnset: { - spinout: ["9L1"], - heavyslam: ["9L1"], - stealthrock: ["9L1"], - steelroller: ["9L1"], - ironhead: ["9L1"], - metalclaw: ["9L1"], - dragonclaw: ["9L1"], - outrage: ["9L1"], - scaleshot: ["9L1"], - dragontail: ["9L1"], - dragonrush: ["9L1"], - highhorsepower: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - smackdown: ["9L1"], - rollout: ["9L1"], - superpower: ["9L1"], - bodypress: ["9L1"], - brickbreak: ["9L1"], - crunch: ["9L1"], - bite: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - firstimpression: ["9L1"], - uturn: ["9L1"], - wildcharge: ["9L1"], - thunderfang: ["9L1"], - firefang: ["9L1"], - heatcrash: ["9L1"], - flareblitz: ["9L1"], - rapidspin: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - tackle: ["9L1"], - steelbeam: ["9L1"], - flashcannon: ["9L1"], - mirrorshot: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - dragonbreath: ["9L1"], - twister: ["9L1"], - earthpower: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - flamethrower: ["9L1"], - fireblast: ["9L1"], - darkpulse: ["9L1"], - aurasphere: ["9L1"], - sludgebomb: ["9L1"], - clearsmog: ["9L1"], - boomburst: ["9L1"], - hypervoice: ["9L1"], - hyperbeam: ["9L1"], - shiftgear: ["9L1"], - toxic: ["9L1"], - morningsun: ["9L1"], - irondefense: ["9L1"], - roar: ["9L1"], - honeclaws: ["9L1"], - workup: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - dragondance: ["9L1"], - curse: ["9L1"], - metalsound: ["9L1"], - screech: ["9L1"], - leer: ["9L1"], - haze: ["9L1"], - tarshot: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - quickguard: ["9L1"], - helpinghand: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - feralspray: ["9L1"], - }, - }, - kodokai: { - learnset: { - haze: ["9L1"], - poltergeist: ["9L1"], - phantomforce: ["9L1"], - shadowpunch: ["9L1"], - astonish: ["9L1"], - firepunch: ["9L1"], - flamewheel: ["9L1"], - drainpunch: ["9L1"], - brickbreak: ["9L1"], - rocksmash: ["9L1"], - shadowball: ["9L1"], - hex: ["9L1"], - ominouswind: ["9L1"], - darkpulse: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - flameburst: ["9L1"], - ember: ["9L1"], - firespin: ["9L1"], - heatwave: ["9L1"], - dazzlinggleam: ["9L1"], - drainingkiss: ["9L1"], - sludgebomb: ["9L1"], - clearsmog: ["9L1"], - hypervoice: ["9L1"], - hyperbeam: ["9L1"], - moonlight: ["9L1"], - trickroom: ["9L1"], - wish: ["9L1"], - aromatherapy: ["9L1"], - willowisp: ["9L1"], - encore: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - safeguard: ["9L1"], - lightscreen: ["9L1"], - smokescreen: ["9L1"], - grudge: ["9L1"], - facade: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - mistyterrain: ["9L1"], - sweetscent: ["9L1"], - sweetkiss: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - electangle: { - learnset: { - wildcharge: ["9L1"], - gyroball: ["9L1"], - zingzap: ["9L1"], - powerwhip: ["9L1"], - earthquake: ["9L1"], - rockslide: ["9L1"], - heatcrash: ["9L1"], - superpower: ["9L1"], - bodypress: ["9L1"], - thunderbolt: ["9L1"], - discharge: ["9L1"], - voltswitch: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - overheat: ["9L1"], - dazzlinggleam: ["9L1"], - stealthrock: ["9L1"], - thunderwave: ["9L1"], - haze: ["9L1"], - aromatherapy: ["9L1"], - thunder: ["9L1"], - risingvoltage: ["9L1"], - spark: ["9L1"], - chargebeam: ["9L1"], - shockwave: ["9L1"], - electroball: ["9L1"], - electroweb: ["9L1"], - thundershock: ["9L1"], - grassknot: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - brickbreak: ["9L1"], - fling: ["9L1"], - payback: ["9L1"], - brutalswing: ["9L1"], - rocksmash: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - slam: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - swift: ["9L1"], - triattack: ["9L1"], - gigaimpact: ["9L1"], - hyperbeam: ["9L1"], - workup: ["9L1"], - helpinghand: ["9L1"], - agility: ["9L1"], - irondefense: ["9L1"], - electricterrain: ["9L1"], - eerieimpulse: ["9L1"], - magnetrise: ["9L1"], - magneticflux: ["9L1"], - lightscreen: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - flashcannon: ["9L1"], - ironhead: ["9L1"], - steelbeam: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - wideguard: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - dolphena: { - learnset: { - liquidation: ["9L1"], - flipturn: ["9L1"], - aquatail: ["9L1"], - waterfall: ["9L1"], - outrage: ["9L1"], - dragontail: ["9L1"], - dragonrush: ["9L1"], - scaleshot: ["9L1"], - earthquake: ["9L1"], - bulldoze: ["9L1"], - irontail: ["9L1"], - acrobatics: ["9L1"], - dualwingbeat: ["9L1"], - crunch: ["9L1"], - lashout: ["9L1"], - payback: ["9L1"], - firefang: ["9L1"], - icefang: ["9L1"], - thunderfang: ["9L1"], - psychicfangs: ["9L1"], - brickbreak: ["9L1"], - bodyslam: ["9L1"], - wrap: ["9L1"], - headbutt: ["9L1"], - gigaimpact: ["9L1"], - doubleedge: ["9L1"], - thrash: ["9L1"], - flail: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - hydropump: ["9L1"], - brine: ["9L1"], - bubblebeam: ["9L1"], - dive: ["9L1"], - waterpulse: ["9L1"], - watergun: ["9L1"], - whirlpool: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - dragonbreath: ["9L1"], - twister: ["9L1"], - icebeam: ["9L1"], - blizzard: ["9L1"], - icywind: ["9L1"], - energyball: ["9L1"], - darkpulse: ["9L1"], - dragondance: ["9L1"], - moonlight: ["9L1"], - coil: ["9L1"], - defog: ["9L1"], - lightscreen: ["9L1"], - workup: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - mistyterrain: ["9L1"], - laserfocus: ["9L1"], - focusenergy: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - chillingwater: ["9L1"], - roar: ["9L1"], - icespinner: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalcage: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - soleron: { - learnset: { - thunderbolt: ["9L1"], - thunder: ["9L1"], - discharge: ["9L1"], - voltswitch: ["9L1"], - shockwave: ["9L1"], - chargebeam: ["9L1"], - thundershock: ["9L1"], - hurricane: ["9L1"], - airslash: ["9L1"], - aircutter: ["9L1"], - gust: ["9L1"], - heatwave: ["9L1"], - weatherball: ["9L1"], - hypervoice: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - wildcharge: ["9L1"], - spark: ["9L1"], - bravebird: ["9L1"], - dualwingbeat: ["9L1"], - aerialace: ["9L1"], - fly: ["9L1"], - peck: ["9L1"], - drillpeck: ["9L1"], - skyattack: ["9L1"], - pluck: ["9L1"], - acrobatics: ["9L1"], - uturn: ["9L1"], - doubleedge: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - tackle: ["9L1"], - roost: ["9L1"], - defog: ["9L1"], - thunderwave: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - whirlwind: ["9L1"], - workup: ["9L1"], - featherdance: ["9L1"], - charge: ["9L1"], - metalsound: ["9L1"], - magneticflux: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - electricterrain: ["9L1"], - laserfocus: ["9L1"], - mistyterrain: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - wideguard: ["9L1"], - crystalcutter: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - }, - }, - soleronawakened: { - learnset: { - thunderbolt: ["9L1"], - thunder: ["9L1"], - discharge: ["9L1"], - voltswitch: ["9L1"], - shockwave: ["9L1"], - chargebeam: ["9L1"], - thundershock: ["9L1"], - hurricane: ["9L1"], - airslash: ["9L1"], - aircutter: ["9L1"], - gust: ["9L1"], - heatwave: ["9L1"], - weatherball: ["9L1"], - hypervoice: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - wildcharge: ["9L1"], - spark: ["9L1"], - bravebird: ["9L1"], - dualwingbeat: ["9L1"], - aerialace: ["9L1"], - fly: ["9L1"], - peck: ["9L1"], - drillpeck: ["9L1"], - skyattack: ["9L1"], - pluck: ["9L1"], - acrobatics: ["9L1"], - uturn: ["9L1"], - doubleedge: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - tackle: ["9L1"], - roost: ["9L1"], - defog: ["9L1"], - thunderwave: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - whirlwind: ["9L1"], - workup: ["9L1"], - featherdance: ["9L1"], - charge: ["9L1"], - metalsound: ["9L1"], - magneticflux: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - electricterrain: ["9L1"], - laserfocus: ["9L1"], - mistyterrain: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - wideguard: ["9L1"], - crystalcutter: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - }, - }, - jaegorm: { - learnset: { - firstimpression: ["9L1"], - calmmind: ["9L1"], - uturn: ["9L1"], - attackorder: ["9L1"], - lunge: ["9L1"], - leechlife: ["9L1"], - bugbite: ["9L1"], - xscissor: ["9L1"], - photonray: ["9L1"], - zenheadbutt: ["9L1"], - psychocut: ["9L1"], - knockoff: ["9L1"], - darkestlariat: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - thief: ["9L1"], - earthquake: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - superpower: ["9L1"], - brickbreak: ["9L1"], - rocksmash: ["9L1"], - crosschop: ["9L1"], - dragontail: ["9L1"], - dragonclaw: ["9L1"], - outrage: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - takedown: ["9L1"], - crushclaw: ["9L1"], - slash: ["9L1"], - gigaimpact: ["9L1"], - tackle: ["9L1"], - bugbuzz: ["9L1"], - strugglebug: ["9L1"], - silverwind: ["9L1"], - infestation: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - extrasensory: ["9L1"], - futuresight: ["9L1"], - psybeam: ["9L1"], - confusion: ["9L1"], - darkpulse: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - cosmicpower: ["9L1"], - honeclaws: ["9L1"], - workup: ["9L1"], - growth: ["9L1"], - acidarmor: ["9L1"], - imprison: ["9L1"], - hypnosis: ["9L1"], - magicroom: ["9L1"], - mirrorcoat: ["9L1"], - powerswap: ["9L1"], - psychicterrain: ["9L1"], - supersonic: ["9L1"], - wonderroom: ["9L1"], - safeguard: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - afteryou: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - pounce: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - jaegormcollective: { - learnset: { - firstimpression: ["9L1"], - calmmind: ["9L1"], - uturn: ["9L1"], - attackorder: ["9L1"], - lunge: ["9L1"], - leechlife: ["9L1"], - bugbite: ["9L1"], - xscissor: ["9L1"], - photongeyser: ["9L1"], - zenheadbutt: ["9L1"], - psychocut: ["9L1"], - knockoff: ["9L1"], - darkestlariat: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - thief: ["9L1"], - earthquake: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - stoneedge: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - superpower: ["9L1"], - brickbreak: ["9L1"], - rocksmash: ["9L1"], - crosschop: ["9L1"], - dragontail: ["9L1"], - dragonclaw: ["9L1"], - outrage: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - takedown: ["9L1"], - crushclaw: ["9L1"], - slash: ["9L1"], - gigaimpact: ["9L1"], - tackle: ["9L1"], - bugbuzz: ["9L1"], - strugglebug: ["9L1"], - silverwind: ["9L1"], - infestation: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - extrasensory: ["9L1"], - futuresight: ["9L1"], - psybeam: ["9L1"], - confusion: ["9L1"], - darkpulse: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - cosmicpower: ["9L1"], - honeclaws: ["9L1"], - workup: ["9L1"], - growth: ["9L1"], - acidarmor: ["9L1"], - imprison: ["9L1"], - hypnosis: ["9L1"], - magicroom: ["9L1"], - mirrorcoat: ["9L1"], - powerswap: ["9L1"], - psychicterrain: ["9L1"], - supersonic: ["9L1"], - wonderroom: ["9L1"], - safeguard: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - afteryou: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - pounce: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - elemadillo: { - learnset: { - thunderbolt: ["9L1"], - thunder: ["9L1"], - discharge: ["9L1"], - voltswitch: ["9L1"], - electroball: ["9L1"], - flashcannon: ["9L1"], - steelbeam: ["9L1"], - energyball: ["9L1"], - wildcharge: ["9L1"], - zingzap: ["9L1"], - ironhead: ["9L1"], - spinout: ["9L1"], - highhorsepower: ["9L1"], - uturn: ["9L1"], - rapidspin: ["9L1"], - shiftgear: ["9L1"], - thunderwave: ["9L1"], - reflect: ["9L1"], - lightscreen: ["9L1"], - eerieimpulse: ["9L1"], - agility: ["9L1"], - thundershock: ["9L1"], - tackle: ["9L1"], - growl: ["9L1"], - spark: ["9L1"], - thunderfang: ["9L1"], - metalclaw: ["9L1"], - safeguard: ["9L1"], - doubleedge: ["9L1"], - gigaimpact: ["9L1"], - bodyslam: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - round: ["9L1"], - bulldoze: ["9L1"], - rocktomb: ["9L1"], - rockslide: ["9L1"], - crunch: ["9L1"], - bite: ["9L1"], - electricterrain: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - sandstorm: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - endure: ["9L1"], - doubleshock: ["9L1"], - helpinghand: ["9L1"], - quickguard: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - }, - }, - axolacred: { - learnset: { - acrobatics: ["9L1"], - dracometeor: ["9L1"], - coreenforcer: ["9L1"], - dragontail: ["9L1"], - dragonpulse: ["9L1"], - airslash: ["9L1"], - meteorbeam: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - dazzlinggleam: ["9L1"], - drainingkiss: ["9L1"], - energyball: ["9L1"], - weatherball: ["9L1"], - flipturn: ["9L1"], - shedtail: ["9L1"], - morningsun: ["9L1"], - recover: ["9L1"], - defog: ["9L1"], - encore: ["9L1"], - dragonbreath: ["9L1"], - twister: ["9L1"], - dragonclaw: ["9L1"], - aerialace: ["9L1"], - dualwingbeat: ["9L1"], - fly: ["9L1"], - aircutter: ["9L1"], - gust: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - safeguard: ["9L1"], - mist: ["9L1"], - haze: ["9L1"], - futuresight: ["9L1"], - roost: ["9L1"], - extrasensory: ["9L1"], - shadowball: ["9L1"], - psychic: ["9L1"], - hypervoice: ["9L1"], - bodyslam: ["9L1"], - round: ["9L1"], - hyperbeam: ["9L1"], - raindance: ["9L1"], - snowscape: ["9L1"], - sunnyday: ["9L1"], - sandstorm: ["9L1"], - mistyterrain: ["9L1"], - psychicterrain: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - endure: ["9L1"], - chillingwater: ["9L1"], - stealthrock: ["9L1"], - helpinghand: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - healingwish: ["9L1"], - wish: ["9L1"], - }, - }, - roscenti: { - learnset: { - pinmissile: ["9L1"], - firstimpression: ["9L1"], - megahorn: ["9L1"], - leechlife: ["9L1"], - lunge: ["9L1"], - uturn: ["9L1"], - bulletseed: ["9L1"], - powerwhip: ["9L1"], - hornleech: ["9L1"], - solarblade: ["9L1"], - superpower: ["9L1"], - swordsdance: ["9L1"], - leechseed: ["9L1"], - growth: ["9L1"], - taunt: ["9L1"], - strugglebug: ["9L1"], - stringshot: ["9L1"], - bugbuzz: ["9L1"], - energyball: ["9L1"], - grassknot: ["9L1"], - solarbeam: ["9L1"], - vinewhip: ["9L1"], - razorleaf: ["9L1"], - bugbite: ["9L1"], - seedbomb: ["9L1"], - scratch: ["9L1"], - furycutter: ["9L1"], - slash: ["9L1"], - nightslash: ["9L1"], - leafblade: ["9L1"], - petalblizzard: ["9L1"], - suckerpunch: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - drillrun: ["9L1"], - synthesis: ["9L1"], - irontail: ["9L1"], - strength: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - gigaimpact: ["9L1"], - hyperbeam: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - pounce: ["9L1"], - trailblaze: ["9L1"], - quickguard: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalcage: ["9L1"], - crystalhealing: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - blunderbusk: { - learnset: { - haze: ["9L1"], - waterpulse: ["9L1"], - hydropump: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - chillingwater: ["9L1"], - aurasphere: ["9L1"], - darkpulse: ["9L1"], - dragonpulse: ["9L1"], - icebeam: ["9L1"], - energyball: ["9L1"], - flashcannon: ["9L1"], - terrainpulse: ["9L1"], - recover: ["9L1"], - shellsmash: ["9L1"], - stealthrock: ["9L1"], - tackle: ["9L1"], - bubble: ["9L1"], - withdraw: ["9L1"], - aquajet: ["9L1"], - whirlpool: ["9L1"], - bubblebeam: ["9L1"], - laserfocus: ["9L1"], - razorshell: ["9L1"], - acidarmor: ["9L1"], - muddywater: ["9L1"], - attract: ["9L1"], - blizzard: ["9L1"], - brine: ["9L1"], - dive: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - focusblast: ["9L1"], - gigaimpact: ["9L1"], - snowscape: ["9L1"], - icywind: ["9L1"], - irondefense: ["9L1"], - lightscreen: ["9L1"], - liquidation: ["9L1"], - mudshot: ["9L1"], - payback: ["9L1"], - poisonjab: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - rockblast: ["9L1"], - round: ["9L1"], - screech: ["9L1"], - selfdestruct: ["9L1"], - shadowball: ["9L1"], - sleeptalk: ["9L1"], - sludgebomb: ["9L1"], - smartstrike: ["9L1"], - snore: ["9L1"], - steelroller: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - toxic: ["9L1"], - swift: ["9L1"], - torment: ["9L1"], - triattack: ["9L1"], - weatherball: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - barracoth: { - learnset: { - wavecrash: ["9L1"], - chillingwater: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - hydropump: ["9L1"], - beatup: ["9L1"], - icebeam: ["9L1"], - freezedry: ["9L1"], - liquidation: ["9L1"], - flipturn: ["9L1"], - tripleaxel: ["9L1"], - iceshard: ["9L1"], - iciclecrash: ["9L1"], - earthquake: ["9L1"], - bodypress: ["9L1"], - heavyslam: ["9L1"], - dragontail: ["9L1"], - slackoff: ["9L1"], - curse: ["9L1"], - sheercold: ["9L1"], - roar: ["9L1"], - auroraveil: ["9L1"], - chillyreception: ["9L1"], - slash: ["9L1"], - tackle: ["9L1"], - tailwhip: ["9L1"], - bubble: ["9L1"], - mudshot: ["9L1"], - workup: ["9L1"], - focusenergy: ["9L1"], - icefang: ["9L1"], - haze: ["9L1"], - brine: ["9L1"], - encore: ["9L1"], - nightslash: ["9L1"], - dive: ["9L1"], - aquatail: ["9L1"], - snowscape: ["9L1"], - attract: ["9L1"], - avalanche: ["9L1"], - blizzard: ["9L1"], - confide: ["9L1"], - doubleteam: ["9L1"], - drillrun: ["9L1"], - echoedvoice: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - fling: ["9L1"], - frostbreath: ["9L1"], - frustration: ["9L1"], - gigaimpact: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - irontail: ["9L1"], - protect: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - sleeptalk: ["9L1"], - smartstrike: ["9L1"], - snore: ["9L1"], - substitute: ["9L1"], - superpower: ["9L1"], - swagger: ["9L1"], - thief: ["9L1"], - waterfall: ["9L1"], - waterpulse: ["9L1"], - aquacutter: ["9L1"], - helpinghand: ["9L1"], - wideguard: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - sturgard: { - learnset: { - wavecrash: ["9L1"], - headsmash: ["9L1"], - doubleedge: ["9L1"], - flipturn: ["9L1"], - liquidation: ["9L1"], - aquatail: ["9L1"], - aquajet: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - hydropump: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - bulldoze: ["9L1"], - stoneedge: ["9L1"], - waterpulse: ["9L1"], - dive: ["9L1"], - rockslide: ["9L1"], - rockblast: ["9L1"], - drainingkiss: ["9L1"], - chillingwater: ["9L1"], - raindance: ["9L1"], - stealthrock: ["9L1"], - sandstorm: ["9L1"], - sunnyday: ["9L1"], - mistyterrain: ["9L1"], - muddywater: ["9L1"], - mudshot: ["9L1"], - watergun: ["9L1"], - rockpolish: ["9L1"], - irondefense: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bonerush: ["9L1"], - amnesia: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - protect: ["9L1"], - substitute: ["9L1"], - endure: ["9L1"], - reflect: ["9L1"], - irontail: ["9L1"], - ironhead: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - curse: ["9L1"], - feralrush: ["9L1"], - feralspray: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - crystalbash: ["9L1"], - crystaltail: ["9L1"], - crystalcage: ["9L1"], - crystalbeam: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - } - }, - jamborai: { - learnset: { - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - clearsmog: ["9L1"], - acidspray: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - storedpower: ["9L1"], - futuresight: ["9L1"], - shadowball: ["9L1"], - hydropump: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - chillingwater: ["9L1"], - icebeam: ["9L1"], - blizzard: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - toxic: ["9L1"], - recover: ["9L1"], - toxicspikes: ["9L1"], - calmmind: ["9L1"], - acidarmor: ["9L1"], - triattack: ["9L1"], - teleport: ["9L1"], - sludge: ["9L1"], - psybeam: ["9L1"], - confusion: ["9L1"], - acid: ["9L1"], - gastroacid: ["9L1"], - bodyslam: ["9L1"], - gunkshot: ["9L1"], - zenheadbutt: ["9L1"], - psychocut: ["9L1"], - wrap: ["9L1"], - wringout: ["9L1"], - hyperbeam: ["9L1"], - bubblebeam: ["9L1"], - darkpulse: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - venoshock: ["9L1"], - poisonsting: ["9L1"], - poisongas: ["9L1"], - skillswap: ["9L1"], - guardswap: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - safeguard: ["9L1"], - powertrick: ["9L1"], - trickroom: ["9L1"], - wonderroom: ["9L1"], - mirrorcoat: ["9L1"], - magiccoat: ["9L1"], - magicroom: ["9L1"], - embargo: ["9L1"], - mortalspin: ["9L1"], - twinbeam: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralpower: ["9L1"], - feralhealing: ["9L1"], - }, - }, - dracoil: { - learnset: { - belch: ["9L1"], - roar: ["9L1"], - outrage: ["9L1"], - dragontail: ["9L1"], - dragonrush: ["9L1"], - dualwingbeat: ["9L1"], - acrobatics: ["9L1"], - earthquake: ["9L1"], - irontail: ["9L1"], - defog: ["9L1"], - ironhead: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - hurricane: ["9L1"], - airslash: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - icebeam: ["9L1"], - thunderbolt: ["9L1"], - darkpulse: ["9L1"], - coil: ["9L1"], - dragondance: ["9L1"], - glare: ["9L1"], - roost: ["9L1"], - toxic: ["9L1"], - tackle: ["9L1"], - leer: ["9L1"], - gust: ["9L1"], - tailwhip: ["9L1"], - bite: ["9L1"], - twister: ["9L1"], - tailwind: ["9L1"], - uturn: ["9L1"], - bounce: ["9L1"], - aerialace: ["9L1"], - agility: ["9L1"], - attract: ["9L1"], - blizzard: ["9L1"], - bodyslam: ["9L1"], - breakingswipe: ["9L1"], - bulldoze: ["9L1"], - bulletseed: ["9L1"], - crunch: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - falseswipe: ["9L1"], - firespin: ["9L1"], - fly: ["9L1"], - gigaimpact: ["9L1"], - heatwave: ["9L1"], - hyperbeam: ["9L1"], - hypervoice: ["9L1"], - pluck: ["9L1"], - powerswap: ["9L1"], - protect: ["9L1"], - psychup: ["9L1"], - raindance: ["9L1"], - rest: ["9L1"], - whirlwind: ["9L1"], - haze: ["9L1"], - rocksmash: ["9L1"], - round: ["9L1"], - safeguard: ["9L1"], - sleeptalk: ["9L1"], - snore: ["9L1"], - solarbeam: ["9L1"], - steelwing: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - swift: ["9L1"], - thief: ["9L1"], - thunder: ["9L1"], - uproar: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - celespirit: { - learnset: { - shadowball: ["9L1"], - hex: ["9L1"], - moonblast: ["9L1"], - icebeam: ["9L1"], - thunderbolt: ["9L1"], - calmmind: ["9L1"], - moonlight: ["9L1"], - sheercold: ["9L1"], - hypnosis: ["9L1"], - astonish: ["9L1"], - growl: ["9L1"], - fairywind: ["9L1"], - helpinghand: ["9L1"], - nightshade: ["9L1"], - ominouswind: ["9L1"], - lifedew: ["9L1"], - healpulse: ["9L1"], - curse: ["9L1"], - icywind: ["9L1"], - healbell: ["9L1"], - eerieimpulse: ["9L1"], - healingwish: ["9L1"], - attract: ["9L1"], - blizzard: ["9L1"], - chargebeam: ["9L1"], - confide: ["9L1"], - darkpulse: ["9L1"], - dazzlinggleam: ["9L1"], - doubleteam: ["9L1"], - drainingkiss: ["9L1"], - dreameater: ["9L1"], - embargo: ["9L1"], - endure: ["9L1"], - energyball: ["9L1"], - facade: ["9L1"], - flash: ["9L1"], - fling: ["9L1"], - frustration: ["9L1"], - hyperbeam: ["9L1"], - infestation: ["9L1"], - lightscreen: ["9L1"], - magiccoat: ["9L1"], - magicroom: ["9L1"], - meteorbeam: ["9L1"], - painsplit: ["9L1"], - payback: ["9L1"], - protect: ["9L1"], - psychic: ["9L1"], - psychup: ["9L1"], - raindance: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - return: ["9L1"], - roleplay: ["9L1"], - round: ["9L1"], - shadowclaw: ["9L1"], - shockwave: ["9L1"], - skillswap: ["9L1"], - sleeptalk: ["9L1"], - snatch: ["9L1"], - snore: ["9L1"], - spite: ["9L1"], - substitute: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - taunt: ["9L1"], - telekinesis: ["9L1"], - thief: ["9L1"], - throatchop: ["9L1"], - thunder: ["9L1"], - torment: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - zenheadbutt: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - noxtrice: { - learnset: { - flareblitz: ["9L1"], - blazekick: ["9L1"], - honeclaws: ["9L1"], - poisonjab: ["9L1"], - defog: ["9L1"], - earthquake: ["9L1"], - gunkshot: ["9L1"], - uturn: ["9L1"], - crunch: ["9L1"], - toxic: ["9L1"], - willowisp: ["9L1"], - taunt: ["9L1"], - roost: ["9L1"], - stompingtantrum: ["9L1"], - dragondance: ["9L1"], - peck: ["9L1"], - growl: ["9L1"], - smokescreen: ["9L1"], - ember: ["9L1"], - smog: ["9L1"], - flamewheel: ["9L1"], - drillpeck: ["9L1"], - scaryface: ["9L1"], - memento: ["9L1"], - bravebird: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - attract: ["9L1"], - beatup: ["9L1"], - bounce: ["9L1"], - breakingswipe: ["9L1"], - corrosivegas: ["9L1"], - crosspoison: ["9L1"], - dragonclaw: ["9L1"], - dragonpulse: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - faketears: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - fling: ["9L1"], - foulplay: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - slash: ["9L1"], - hypervoice: ["9L1"], - nightslash: ["9L1"], - heatwave: ["9L1"], - helpinghand: ["9L1"], - hurricane: ["9L1"], - irontail: ["9L1"], - overheat: ["9L1"], - payback: ["9L1"], - pluck: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - scaleshot: ["9L1"], - outrage: ["9L1"], - shadowclaw: ["9L1"], - sleeptalk: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - snore: ["9L1"], - steelwing: ["9L1"], - substitute: ["9L1"], - swift: ["9L1"], - thief: ["9L1"], - thunderwave: ["9L1"], - venomdrench: ["9L1"], - venoshock: ["9L1"], - quickguard: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - efflor: { - learnset: { - stoneedge: ["9L1"], - rockslide: ["9L1"], - chillyreception: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - substitute: ["9L1"], - sleeptalk: ["9L1"], - rockblast: ["9L1"], - rocktomb: ["9L1"], - smackdown: ["9L1"], - rollout: ["9L1"], - rockthrow: ["9L1"], - grassyglide: ["9L1"], - petalblizzard: ["9L1"], - bulletseed: ["9L1"], - seedbomb: ["9L1"], - vinewhip: ["9L1"], - earthquake: ["9L1"], - highhorsepower: ["9L1"], - bulldoze: ["9L1"], - stompingtantrum: ["9L1"], - bodypress: ["9L1"], - heavyslam: ["9L1"], - ironhead: ["9L1"], - gyroball: ["9L1"], - bite: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - zenheadbutt: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - megapunch: ["9L1"], - megakick: ["9L1"], - takedown: ["9L1"], - pound: ["9L1"], - headbutt: ["9L1"], - powergem: ["9L1"], - meteorbeam: ["9L1"], - ancientpower: ["9L1"], - gigadrain: ["9L1"], - grassknot: ["9L1"], - energyball: ["9L1"], - megadrain: ["9L1"], - absorb: ["9L1"], - magicalleaf: ["9L1"], - leafage: ["9L1"], - earthpower: ["9L1"], - mudbomb: ["9L1"], - mudslap: ["9L1"], - dazzlinggleam: ["9L1"], - leer: ["9L1"], - stealthrock: ["9L1"], - rockpolish: ["9L1"], - curse: ["9L1"], - synthesis: ["9L1"], - grassyterrain: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - sandstorm: ["9L1"], - mistyterrain: ["9L1"], - growth: ["9L1"], - watergun: ["9L1"], - defensecurl: ["9L1"], - rapidspin: ["9L1"], - leechseed: ["9L1"], - ingrain: ["9L1"], - solarbeam: ["9L1"], - weatherball: ["9L1"], - bellydrum: ["9L1"], - helpinghand: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalfortification: ["9L1"], - crystalhealing: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - avastar: { - learnset: { - psychic: ["9L1"], - psyshock: ["9L1"], - futuresight: ["9L1"], - flashcannon: ["9L1"], - steelbeam: ["9L1"], - dazzlinggleam: ["9L1"], - darkpulse: ["9L1"], - shadowball: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - thunderwave: ["9L1"], - hurricane: ["9L1"], - rapidspin: ["9L1"], - calmmind: ["9L1"], - recover: ["9L1"], - teleport: ["9L1"], - irondefense: ["9L1"], - gravity: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - safeguard: ["9L1"], - trickroom: ["9L1"], - quash: ["9L1"], - heavyslam: ["9L1"], - zenheadbutt: ["9L1"], - bodyslam: ["9L1"], - gigaimpact: ["9L1"], - hyperbeam: ["9L1"], - psybeam: ["9L1"], - confusion: ["9L1"], - magnetbomb: ["9L1"], - ironhead: ["9L1"], - gyroball: ["9L1"], - spark: ["9L1"], - psychicterrain: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralhealing: ["9L1"], - feralresilience: ["9L1"], - }, - }, - faerenheit: { - learnset: { - acrobatics: ["9L1"], - lavaplume: ["9L1"], - aerialace: ["9L1"], - burnup: ["9L1"], - calmmind: ["9L1"], - dazzlinggleam: ["9L1"], - encore: ["9L1"], - firespin: ["9L1"], - fireblast: ["9L1"], - flamecharge: ["9L1"], - flamethrower: ["9L1"], - flash: ["9L1"], - gravity: ["9L1"], - healbell: ["9L1"], - heatcrash: ["9L1"], - hyperbeam: ["9L1"], - imprison: ["9L1"], - lightscreen: ["9L1"], - mistyexplosion: ["9L1"], - mistyterrain: ["9L1"], - moonblast: ["9L1"], - mysticalfire: ["9L1"], - overheat: ["9L1"], - playrough: ["9L1"], - psychup: ["9L1"], - reflect: ["9L1"], - skillswap: ["9L1"], - sunnyday: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - willowisp: ["9L1"], - wish: ["9L1"], - triattack: ["9L1"], - flareblitz: ["9L1"], - fairywind: ["9L1"], - ember: ["9L1"], - safeguard: ["9L1"], - wrap: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - takedown: ["9L1"], - pound: ["9L1"], - gigaimpact: ["9L1"], - zenheadbutt: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - morningsun: ["9L1"], - helpinghand: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - cellsius: { - learnset: { - hydropump: ["9L1"], - scald: ["9L1"], - surf: ["9L1"], - brine: ["9L1"], - dive: ["9L1"], - bubblebeam: ["9L1"], - waterpulse: ["9L1"], - watergun: ["9L1"], - moonblast: ["9L1"], - dazzlinggleam: ["9L1"], - mistyexplosion: ["9L1"], - fairywind: ["9L1"], - icebeam: ["9L1"], - icywind: ["9L1"], - blizzard: ["9L1"], - energyball: ["9L1"], - grassknot: ["9L1"], - psychic: ["9L1"], - extrasensory: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - flipturn: ["9L1"], - liquidation: ["9L1"], - waterfall: ["9L1"], - playrough: ["9L1"], - ironhead: ["9L1"], - zenheadbutt: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - wrap: ["9L1"], - defog: ["9L1"], - healbell: ["9L1"], - calmmind: ["9L1"], - haze: ["9L1"], - trick: ["9L1"], - lifedew: ["9L1"], - aquaring: ["9L1"], - charm: ["9L1"], - raindance: ["9L1"], - mistyterrain: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - sunnyday: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - chillingwater: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - kelven: { - learnset: { - spiritbreak: ["9L1"], - tripleaxel: ["9L1"], - iciclecrash: ["9L1"], - iceshard: ["9L1"], - avalanche: ["9L1"], - playrough: ["9L1"], - closecombat: ["9L1"], - sacredsword: ["9L1"], - crosschop: ["9L1"], - stoneedge: ["9L1"], - nightslash: ["9L1"], - hornleech: ["9L1"], - ironhead: ["9L1"], - smartstrike: ["9L1"], - zenheadbutt: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - rapidspin: ["9L1"], - slash: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - icebeam: ["9L1"], - blizzard: ["9L1"], - frostbreath: ["9L1"], - aurorabeam: ["9L1"], - powdersnow: ["9L1"], - icywind: ["9L1"], - moonblast: ["9L1"], - dazzlinggleam: ["9L1"], - mistyexplosion: ["9L1"], - flashcannon: ["9L1"], - powergem: ["9L1"], - mysticalfire: ["9L1"], - swordsdance: ["9L1"], - spikes: ["9L1"], - sheercold: ["9L1"], - auroraveil: ["9L1"], - calmmind: ["9L1"], - reflect: ["9L1"], - snowscape: ["9L1"], - mistyterrain: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - icespinner: ["9L1"], - helpinghand: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - }, - }, - salaos: { - learnset: { - aurasphere: ["9L1"], - focusblast: ["9L1"], - beatup: ["9L1"], - fierywrath: ["9L1"], - suckerpunch: ["9L1"], - crunch: ["9L1"], - bite: ["9L1"], - thief: ["9L1"], - payback: ["9L1"], - brutalswing: ["9L1"], - feintattack: ["9L1"], - assurance: ["9L1"], - lashout: ["9L1"], - dragontail: ["9L1"], - dragonclaw: ["9L1"], - outrage: ["9L1"], - firefang: ["9L1"], - psychicfangs: ["9L1"], - zenheadbutt: ["9L1"], - aquatail: ["9L1"], - powerwhip: ["9L1"], - seedbomb: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - darkpulse: ["9L1"], - snarl: ["9L1"], - sludgebomb: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - surf: ["9L1"], - scald: ["9L1"], - energyball: ["9L1"], - grassknot: ["9L1"], - solarbeam: ["9L1"], - psychic: ["9L1"], - confusion: ["9L1"], - dazzlinggleam: ["9L1"], - dragonpulse: ["9L1"], - hyperbeam: ["9L1"], - recover: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - amnesia: ["9L1"], - lightscreen: ["9L1"], - psychicterrain: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - comeuppance: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - morndos: { - learnset: { - whirlwind: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - bravebird: ["9L1"], - dualwingbeat: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - fly: ["9L1"], - skyattack: ["9L1"], - wingattack: ["9L1"], - skydrop: ["9L1"], - beatup: ["9L1"], - foulplay: ["9L1"], - darkestlariat: ["9L1"], - lashout: ["9L1"], - nightslash: ["9L1"], - assurance: ["9L1"], - payback: ["9L1"], - thief: ["9L1"], - uturn: ["9L1"], - seedbomb: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - slash: ["9L1"], - oblivionwing: ["9L1"], - hurricane: ["9L1"], - airslash: ["9L1"], - aircutter: ["9L1"], - gust: ["9L1"], - darkpulse: ["9L1"], - heatwave: ["9L1"], - energyball: ["9L1"], - grassknot: ["9L1"], - psychic: ["9L1"], - mudslap: ["9L1"], - roost: ["9L1"], - defog: ["9L1"], - taunt: ["9L1"], - disable: ["9L1"], - perishsong: ["9L1"], - featherdance: ["9L1"], - torment: ["9L1"], - screech: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - tailwind: ["9L1"], - curse: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - comeuppance: ["9L1"], - wideguard: ["9L1"], - quickguard: ["9L1"], - crystalcutter: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalfortification: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - pythos: { - learnset: { - aurasphere: ["9L1"], - crunch: ["9L1"], - knockoff: ["9L1"], - suckerpunch: ["9L1"], - bite: ["9L1"], - brutalswing: ["9L1"], - payback: ["9L1"], - assurance: ["9L1"], - lashout: ["9L1"], - superpower: ["9L1"], - brickbreak: ["9L1"], - rocksmash: ["9L1"], - beatup: ["9L1"], - revenge: ["9L1"], - irontail: ["9L1"], - ironhead: ["9L1"], - psychicfangs: ["9L1"], - firefang: ["9L1"], - dragontail: ["9L1"], - outrage: ["9L1"], - scaleshot: ["9L1"], - superfang: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - headbutt: ["9L1"], - wrap: ["9L1"], - constrict: ["9L1"], - bind: ["9L1"], - gigaimpact: ["9L1"], - darkpulse: ["9L1"], - focusblast: ["9L1"], - flamethrower: ["9L1"], - psychic: ["9L1"], - gigadrain: ["9L1"], - energyball: ["9L1"], - grassknot: ["9L1"], - solarbeam: ["9L1"], - wringout: ["9L1"], - hyperbeam: ["9L1"], - coil: ["9L1"], - glare: ["9L1"], - nastyplot: ["9L1"], - taunt: ["9L1"], - torment: ["9L1"], - screech: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - snowscape: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - comeuppance: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralbite: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - corundell: { - learnset: { - stoneedge: ["9L1"], - energyball: ["9L1"], - solarbeam: ["9L1"], - solarblade: ["9L1"], - overheat: ["9L1"], - flareblitz: ["9L1"], - flamecharge: ["9L1"], - rockslide: ["9L1"], - rockblast: ["9L1"], - smackdown: ["9L1"], - rocktomb: ["9L1"], - rockpolish: ["9L1"], - bodypress: ["9L1"], - superpower: ["9L1"], - wildcharge: ["9L1"], - zingzap: ["9L1"], - spark: ["9L1"], - earthquake: ["9L1"], - stompingtantrum: ["9L1"], - bulldoze: ["9L1"], - dualwingbeat: ["9L1"], - doubleedge: ["9L1"], - bodyslam: ["9L1"], - takedown: ["9L1"], - pound: ["9L1"], - slam: ["9L1"], - gigaimpact: ["9L1"], - meteorbeam: ["9L1"], - revelationdance: ["9L1"], - powergem: ["9L1"], - thunderbolt: ["9L1"], - thunder: ["9L1"], - risingvoltage: ["9L1"], - voltswitch: ["9L1"], - discharge: ["9L1"], - chargebeam: ["9L1"], - shockwave: ["9L1"], - thundershock: ["9L1"], - earthpower: ["9L1"], - scorchingsands: ["9L1"], - triattack: ["9L1"], - shadowball: ["9L1"], - extrasensory: ["9L1"], - hyperbeam: ["9L1"], - stealthrock: ["9L1"], - recover: ["9L1"], - thunderwave: ["9L1"], - painsplit: ["9L1"], - electricterrain: ["9L1"], - sandstorm: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - metalsound: ["9L1"], - eerieimpulse: ["9L1"], - magnetrise: ["9L1"], - lightscreen: ["9L1"], - reflect: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - quadringo: { - learnset: { - dragontail: ["9L1"], - dragonclaw: ["9L1"], - beatup: ["9L1"], - outrage: ["9L1"], - dragonrush: ["9L1"], - spiritbreak: ["9L1"], - playrough: ["9L1"], - earthquake: ["9L1"], - bulldoze: ["9L1"], - rockslide: ["9L1"], - irontail: ["9L1"], - aquatail: ["9L1"], - bravebird: ["9L1"], - dualwingbeat: ["9L1"], - wingattack: ["9L1"], - bounce: ["9L1"], - nightslash: ["9L1"], - brutalswing: ["9L1"], - gigaimpact: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - takedown: ["9L1"], - strength: ["9L1"], - steelwing: ["9L1"], - slam: ["9L1"], - scratch: ["9L1"], - slash: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - dragonbreath: ["9L1"], - twister: ["9L1"], - moonblast: ["9L1"], - drainingkiss: ["9L1"], - dazzlinggleam: ["9L1"], - mistyexplosion: ["9L1"], - fairywind: ["9L1"], - mysticalfire: ["9L1"], - surf: ["9L1"], - waterpulse: ["9L1"], - airslash: ["9L1"], - aircutter: ["9L1"], - swift: ["9L1"], - hypervoice: ["9L1"], - hyperbeam: ["9L1"], - roost: ["9L1"], - defog: ["9L1"], - healbell: ["9L1"], - haze: ["9L1"], - featherdance: ["9L1"], - attract: ["9L1"], - workup: ["9L1"], - confide: ["9L1"], - raindance: ["9L1"], - sunnyday: ["9L1"], - safeguard: ["9L1"], - mimic: ["9L1"], - leer: ["9L1"], - mistyterrain: ["9L1"], - calmmind: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - whirlwind: ["9L1"], - helpinghand: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - saphor: { - learnset: { - doubleedge: ["9L1"], - scorchingsands: ["9L1"], - headlongrush: ["9L1"], - bodyslam: ["9L1"], - earthquake: ["9L1"], - stoneedge: ["9L1"], - superpower: ["9L1"], - bodypress: ["9L1"], - wildcharge: ["9L1"], - hornleech: ["9L1"], - trailblaze: ["9L1"], - heavyslam: ["9L1"], - ironhead: ["9L1"], - megahorn: ["9L1"], - playrough: ["9L1"], - hypervoice: ["9L1"], - triattack: ["9L1"], - shadowball: ["9L1"], - darkpulse: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - earthpower: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - grassknot: ["9L1"], - solarbeam: ["9L1"], - meteorbeam: ["9L1"], - powergem: ["9L1"], - psychic: ["9L1"], - dazzlinggleam: ["9L1"], - calmmind: ["9L1"], - milkdrink: ["9L1"], - bulkup: ["9L1"], - stealthrock: ["9L1"], - irondefense: ["9L1"], - roar: ["9L1"], - nobleroar: ["9L1"], - healbell: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - headbutt: ["9L1"], - round: ["9L1"], - bulldoze: ["9L1"], - rocktomb: ["9L1"], - rockslide: ["9L1"], - rockblast: ["9L1"], - highhorsepower: ["9L1"], - gigaimpact: ["9L1"], - hyperbeam: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - endure: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - mistyterrain: ["9L1"], - grassyterrain: ["9L1"], - helpinghand: ["9L1"], - wideguard: ["9L1"], - crystalcutter: ["9L1"], - crystaltail: ["9L1"], - crystalbash: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - crystalshard: ["9L1"], - }, - }, - fenreil: { - learnset: { - wildcharge: ["9L1"], - ironhead: ["9L1"], - irontail: ["9L1"], - doubleedge: ["9L1"], - howl: ["9L1"], - bodyslam: ["9L1"], - darkpulse: ["9L1"], - snarl: ["9L1"], - crunch: ["9L1"], - jawlock: ["9L1"], - knockoff: ["9L1"], - playrough: ["9L1"], - uturn: ["9L1"], - stoneedge: ["9L1"], - rockslide: ["9L1"], - rockblast: ["9L1"], - rocktomb: ["9L1"], - psychicfangs: ["9L1"], - firefang: ["9L1"], - flamecharge: ["9L1"], - icefang: ["9L1"], - thunderfang: ["9L1"], - trailblaze: ["9L1"], - hypervoice: ["9L1"], - shadowball: ["9L1"], - aurasphere: ["9L1"], - focusblast: ["9L1"], - earthpower: ["9L1"], - swordsdance: ["9L1"], - nastyplot: ["9L1"], - taunt: ["9L1"], - substitute: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - round: ["9L1"], - endure: ["9L1"], - bite: ["9L1"], - torment: ["9L1"], - assurance: ["9L1"], - meanlook: ["9L1"], - scaryface: ["9L1"], - superpower: ["9L1"], - brutalswing: ["9L1"], - nobleroar: ["9L1"], - growl: ["9L1"], - tackle: ["9L1"], - roar: ["9L1"], - headbutt: ["9L1"], - superfang: ["9L1"], - stompingtantrum: ["9L1"], - helpinghand: ["9L1"], - quickguard: ["9L1"], - feralbite: ["9L1"], - feralshred: ["9L1"], - feralrush: ["9L1"], - feralshriek: ["9L1"], - feralpower: ["9L1"], - feralbreath: ["9L1"], - feralspray: ["9L1"], - feralresilience: ["9L1"], - feralhealing: ["9L1"], - }, - }, - flocura: { - learnset: { - leafstorm: ["9L1"], - focusblast: ["9L1"], - aurasphere: ["9L1"], - seedbomb: ["9L1"], - bulletseed: ["9L1"], - psychocut: ["9L1"], - leechseed: ["9L1"], - earthpower: ["9L1"], - guardswap: ["9L1"], - guardsplit: ["9L1"], - powerswap: ["9L1"], - uturn: ["9L1"], - lunge: ["9L1"], - zenheadbutt: ["9L1"], - acrobatics: ["9L1"], - aerialace: ["9L1"], - fly: ["9L1"], - petalblizzard: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - takedown: ["9L1"], - gigaimpact: ["9L1"], - pollenpuff: ["9L1"], - shadowball: ["9L1"], - hex: ["9L1"], - psychic: ["9L1"], - futuresight: ["9L1"], - psyshock: ["9L1"], - darkpulse: ["9L1"], - thunderbolt: ["9L1"], - thunder: ["9L1"], - dazzlinggleam: ["9L1"], - powergem: ["9L1"], - meteorbeam: ["9L1"], - energyball: ["9L1"], - gigadrain: ["9L1"], - triattack: ["9L1"], - hyperbeam: ["9L1"], - sleeppowder: ["9L1"], - stealthrock: ["9L1"], - thunderwave: ["9L1"], - painsplit: ["9L1"], - taunt: ["9L1"], - calmmind: ["9L1"], - nastyplot: ["9L1"], - amnesia: ["9L1"], - workup: ["9L1"], - psychicterrain: ["9L1"], - mistyterrain: ["9L1"], - sunnyday: ["9L1"], - raindance: ["9L1"], - snowscape: ["9L1"], - sandstorm: ["9L1"], - cottonspore: ["9L1"], - stunspore: ["9L1"], - attract: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - facade: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - swagger: ["9L1"], - helpinghand: ["9L1"], - crystaltail: ["9L1"], - crystalbeam: ["9L1"], - crystalcage: ["9L1"], - crystalburst: ["9L1"], - crystalhealing: ["9L1"], - crystalfortification: ["9L1"], - feralrush: ["9L1"], - feralpower: ["9L1"], - feralresilience: ["9L1"], - feralspray: ["9L1"], - feralhealing: ["9L1"], - }, - }, - flocuranexus: { - learnset: { - }, - }, -}; diff --git a/data/mods/scootopiav2/moves.ts b/data/mods/scootopiav2/moves.ts deleted file mode 100644 index 93f63b3cbe..0000000000 --- a/data/mods/scootopiav2/moves.ts +++ /dev/null @@ -1,1284 +0,0 @@ -export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { - shedtail: { - num: 880, - accuracy: true, - basePower: 0, - category: "Status", - name: "Shed Tail", - pp: 10, - priority: 0, - flags: {}, - shortDesc: "Sac 12.5% HP, switch, heal ally 25%. Ally: 50% dmg redux this turn.", - onTryHit(source) { - if (!this.canSwitch(source.side)) { - this.add('-fail', source); - return this.NOT_FAIL; - } - if (source.hp <= Math.ceil(source.maxhp / 8)) { - this.add('-fail', source, 'move: Shed Tail', '[weak]'); - return this.NOT_FAIL; - } - }, - onHit(target) { - this.directDamage(Math.ceil(target.maxhp / 8)); - }, - slotCondition: 'shedtail', - condition: { - duration: 1, - onSwap(target) { - if (!target.fainted && (target.hp < target.maxhp || target.status)) { - target.heal(target.maxhp / 4); - this.add('-heal', target, target.getHealth, '[from] move: Healing Wish'); - } - }, - onModifyDef(def, pokemon) { - return this.chainModify(2); - }, - onModifySpD(spd, pokemon) { - return this.chainModify(2); - }, - }, - selfSwitch: 'shedtail', - secondary: null, - target: "self", - type: "Normal", - zMove: { effect: 'clearnegativeboost' }, - }, - photonray: { - accuracy: 100, - basePower: 90, - category: "Special", - name: "Photon Ray", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1 }, - onModifyMove(move, pokemon) { - if (pokemon.getStat('atk', false, true) > pokemon.getStat('spa', false, true)) move.category = 'Physical'; - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Photon Geyser", target); - }, - secondary: null, - target: "normal", - type: "Psychic", - contestType: "Cool", - }, - energysiphon: { - accuracy: 100, - basePower: 50, - category: "Special", - name: "Energy Siphon", - shortDesc: "Drains target's HP for 3 turns.", - pp: 10, - priority: 0, - flags: { protect: 1, mirror: 1, heal: 1, contact: 1 }, - drain: [1, 2], - secondary: null, - target: "normal", - type: "Grass", - volatileStatus: 'energysiphon', - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Fell Stinger", target); - }, - condition: { - onStart(target) { - this.add('-start', target, 'move: Energy Siphon'); - }, - duration: 3, - onResidualOrder: 8, - onResidual(pokemon) { - const target = this.getAtSlot(pokemon.volatiles['energysiphon'].sourceSlot); - if (!target || target.fainted || target.hp <= 0) { - console.log('Nothing to leech into'); - return; - } - const damage = this.damage(pokemon.baseMaxhp / 8, pokemon, target); - if (damage) { - this.heal(damage / 2, target, pokemon); - } - }, - }, - }, - sheercold: { - accuracy: 85, - basePower: 0, - category: "Status", - name: "Sheer Cold", - pp: 15, - priority: 0, - flags: { protect: 1, reflectable: 1, mirror: 1 }, - status: 'frz', - shortDesc: "Inflicts Freeze status on the opponent (1/16 Residual damage, halved SpA).", - secondary: null, - target: "normal", - type: "Ice", - zMove: { boost: { atk: 1 } }, - contestType: "Beautiful", - }, - spore: { - inherit: true, - pp: 10, - desc: "Puts the opponent to sleep for 1 turn", - }, - sleeppowder: { - inherit: true, - pp: 15, - accuracy: 90, - desc: "Puts the opponent to sleep for 1 turn", - }, - hypnosis: { - inherit: true, - pp: 20, - accuracy: 85, - desc: "Puts the opponent to sleep for 1 turn", - }, - grasswhistle: { - inherit: true, - isNonstandard: null, - pp: 25, - accuracy: 80, - desc: "Puts the opponent to sleep for 1 turn", - }, - sing: { - inherit: true, - isNonstandard: null, - pp: 25, - accuracy: 80, - desc: "Puts the opponent to sleep for 1 turn", - }, - crystalcutter: { - name: "Crystal Cutter", - accuracy: 100, - basePower: 50, - category: "Physical", - pp: 15, - type: "Crystal", - shortDesc: "Always crits. User recovers 50% of damage dealt", - priority: 0, - flags: { protect: 1, mirror: 1, contact: 1, slicing: 1 }, - target: "normal", - willCrit: true, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Psycho Cut", target); - }, - drain: [1, 2], - }, - crystaltail: { - name: "Crystal Tail", - accuracy: 85, - basePower: 120, - category: "Physical", - pp: 5, - type: "Crystal", - shortDesc: "20% to lower foe's Atk by 1", - priority: 0, - flags: { protect: 1, mirror: 1, contact: 1 }, - target: "normal", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Dragon Tail", target); - }, - secondary: { - chance: 20, - boosts: { - atk: -1, - }, - }, - }, - crystalbash: { - name: "Crystal Bash", - accuracy: 100, - basePower: 100, - category: "Physical", - pp: 10, - type: "Crystal", - shortDesc: "10% to lower foe's Atk by 1", - priority: 0, - flags: { protect: 1, mirror: 1, contact: 1 }, - target: "normal", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Iron Head", target); - }, - secondary: { - chance: 10, - boosts: { - atk: -1, - }, - }, - }, - crystalbeam: { - name: "Crystal Beam", - accuracy: 100, - basePower: 90, - category: "Special", - pp: 15, - type: "Crystal", - shortDesc: "30% to lower foe's SpA by 1", - priority: 0, - flags: { protect: 1, mirror: 1 }, - target: "normal", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Aurora Beam", target); - }, - secondary: { - chance: 30, - boosts: { - spa: -1, - }, - }, - }, - crystalcage: { - name: "Crystal Cage", - accuracy: 85, - basePower: 85, - category: "Special", - pp: 10, - type: "Crystal", - shortDesc: "Traps and damages for 4-5 turns.", - priority: 0, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Diamond Storm", target); - }, - flags: { protect: 1, mirror: 1 }, - volatileStatus: 'partiallytrapped', - target: "normal", - secondary: null, - }, - crystalburst: { - accuracy: 100, - basePower: 120, - category: "Special", - name: "Crystal Burst", - pp: 5, - shortDesc: "Lower's user's SpA by 1", - priority: 0, - flags: { protect: 1, mirror: 1 }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Clanging Scales", target); - }, - self: { - boosts: { - spa: -1, - }, - }, - secondary: null, - target: "allAdjacentFoes", - type: "Crystal", - contestType: "Beautiful", - }, - crystalhealing: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Crystal Healing", - pp: 5, - priority: 0, - shortDesc: "Cures whole team's status conditions. 1/16 residual healing at the end of each turn.", - flags: { snatch: 1, distance: 1, bypasssub: 1 }, - onHit(pokemon, source) { - this.add('-activate', source, 'move: Crystal Healing'); - const side = pokemon.side; - let success = false; - for (const ally of side.pokemon) { - if (ally.cureStatus()) success = true; - } - return success; - }, - volatileStatus: 'crystalhealing', - condition: { - onStart(pokemon) { - this.add('-start', pokemon, 'Crystal Healing'); - }, - onResidualOrder: 6, - onResidual(pokemon) { - this.heal(pokemon.baseMaxhp / 16); - }, - }, - target: "allyTeam", - type: "Crystal", - zMove: { effect: 'heal' }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Heal Bell", target); - }, - contestType: "Beautiful", - }, - crystalfortification: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Crystal Fortification", - pp: 20, - priority: 0, - shortDesc: "+1 Def, +1 SpD. Clears negative stat changes.", - flags: { snatch: 1 }, - onHit(pokemon, source) { - let b: BoostID; - let didBoost = false; - const negBoosts: Partial> = {}; - for (b in source.boosts) { - if (source.boosts[b] < 0) negBoosts[b] = source.boosts[b] * -1; - didBoost = true; - } - if (didBoost) { - this.boost(negBoosts, source); - } - }, - boosts: { - def: 1, - spd: 1, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Iron Defense", target); - }, - secondary: null, - target: "self", - type: "Crystal", - zMove: { boost: { spd: 1 } }, - contestType: "Beautiful", - }, - crystalshard: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Crystal Shard", - shortDesc: "Sets a layer of Spikes. (Not a new kind of hazard)", - pp: 20, - priority: 0, - flags: { reflectable: 1, nonsky: 1 }, - onHitSide(side, source) { - source.side.foe.addSideCondition("spikes"); - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Spikes", target); - }, - secondary: null, - target: "foeSide", - type: "Crystal", - zMove: { boost: { spd: 1 } }, - contestType: "Beautiful", - }, - feralbite: { - name: "Feral Bite", - accuracy: 100, - basePower: 90, - category: "Physical", - pp: 15, - type: "Feral", - shortDesc: "30% chance to Poison foe.", - priority: 0, - flags: { protect: 1, mirror: 1, contact: 1, bite: 1 }, - target: "normal", - secondary: { - chance: 30, - status: "psn", - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Poison Fang", target); - }, - }, - feralshred: { - name: "Feral Shred", - accuracy: 100, - basePower: 20, - category: "Physical", - pp: 15, - type: "Feral", - shortDesc: "Hits twice. Lowers foe's Def by 1 on each hit", - priority: 0, - multihit: 2, - flags: { protect: 1, mirror: 1, contact: 1 }, - target: "normal", - secondary: { - chance: 100, - boosts: { - def: -1, - }, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Dragon Claw", target); - }, - }, - feralrush: { - name: "Feral Rush", - accuracy: 100, - basePower: 120, - category: "Physical", - pp: 10, - type: "Feral", - shortDesc: "User takes 1/3 recoil damage. 20% to lower foe's Def by 1", - priority: 0, - recoil: [33, 100], - flags: { protect: 1, mirror: 1, contact: 1 }, - target: "normal", - secondary: { - chance: 20, - boosts: { - def: -1, - }, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Double-Edge", target); - }, - }, - feralshriek: { - name: "Feral Shriek", - accuracy: 100, - basePower: 90, - category: "Special", - pp: 15, - type: "Feral", - shortDesc: "20% to lower foe's SpD by 1", - priority: 0, - flags: { protect: 1, mirror: 1, sound: 1 }, - target: "allAdjacentFoes", - secondary: { - chance: 20, - boosts: { - spd: -1, - }, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Overdrive", target); - }, - }, - feralpower: { - accuracy: 100, - basePower: 110, - category: "Special", - name: "Feral Power", - pp: 5, - priority: 0, - shortDesc: "Lowers user's Def by 1", - flags: { protect: 1, mirror: 1, bypasssub: 1 }, - selfBoost: { - boosts: { - def: -1, - }, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Searing Shot", target); - }, - secondary: null, - target: "allAdjacentFoes", - type: "Feral", - contestType: "Tough", - }, - feralbreath: { - name: "Feral Breath", - accuracy: 100, - basePower: 80, - category: "Special", - pp: 10, - type: "Feral", - shortDesc: "100% to lower foe's SpD by 1", - priority: 0, - flags: { protect: 1, mirror: 1 }, - target: "normal", - secondary: { - chance: 100, - boosts: { - spd: -1, - }, - }, - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Dragon Rage", target); - }, - }, - feralhealing: { - num: 816, - accuracy: true, - basePower: 0, - category: "Status", - priority: 0, - flags: { heal: 1, bypasssub: 1, allyanim: 1 }, - onHit(pokemon) { - const success = !!this.heal(this.modify(pokemon.maxhp, 0.25)); - return pokemon.cureStatus() || success; - }, - secondary: null, - target: "allies", - name: "Feral Healing", - pp: 15, - shortDesc: "Heals user 25% and cures status.", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Jungle Healing", target); - }, - type: "Feral", - zMove: { boost: { def: 1 } }, - contestType: "Cool", - }, - feralspray: { - accuracy: 100, - basePower: 0, - category: "Status", - name: "Feral Spray", - pp: 25, - priority: 0, - shortDesc: "+1 Atk, +1 SpA. Poisons the foe.", - flags: { protect: 1, reflectable: 1, mirror: 1 }, - selfBoost: { - boosts: { - atk: 1, - spa: 1, - }, - }, - status: 'psn', - secondary: null, - target: "normal", - type: "Feral", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Acid Spray", target); - }, - zMove: { boost: { def: 1 } }, - contestType: "Clever", - }, - feralresilience: { - accuracy: true, - basePower: 0, - category: "Status", - name: "Feral Resilience", - pp: 20, - priority: 0, - flags: { snatch: 1 }, - shortDesc: "+1 Atk, +1 SpA. Cures user's status conditions.", - onHit(pokemon) { - if (['', 'slp'].includes(pokemon.status)) return false; - pokemon.cureStatus(); - }, - secondary: null, - target: "self", - boosts: { - atk: 1, - spa: 1, - }, - type: "Feral", - zMove: { effect: 'heal' }, - contestType: "Cute", - onPrepareHit(target, source, move) { - this.attrLastMove('[still]'); - this.add('-anim', source, "Refresh", target); - }, - }, - karatechop: { - inherit: true, - isNonstandard: null, - }, - doubleslap: { - inherit: true, - isNonstandard: null, - }, - cometpunch: { - inherit: true, - isNonstandard: null, - }, - razorwind: { - inherit: true, - isNonstandard: null, - }, - jumpkick: { - inherit: true, - isNonstandard: null, - }, - rollingkick: { - inherit: true, - isNonstandard: null, - }, - twineedle: { - inherit: true, - isNonstandard: null, - }, - sonicboom: { - inherit: true, - isNonstandard: null, - }, - submission: { - inherit: true, - isNonstandard: null, - }, - dragonrage: { - inherit: true, - isNonstandard: null, - }, - meditate: { - inherit: true, - isNonstandard: null, - }, - rage: { - inherit: true, - isNonstandard: null, - }, - barrier: { - inherit: true, - isNonstandard: null, - }, - bide: { - inherit: true, - isNonstandard: null, - }, - mirrormove: { - inherit: true, - isNonstandard: null, - }, - eggbomb: { - inherit: true, - isNonstandard: null, - }, - boneclub: { - inherit: true, - isNonstandard: null, - }, - clamp: { - inherit: true, - isNonstandard: null, - }, - skullbash: { - inherit: true, - isNonstandard: null, - }, - spikecannon: { - inherit: true, - isNonstandard: null, - }, - constrict: { - inherit: true, - isNonstandard: null, - }, - kinesis: { - inherit: true, - isNonstandard: null, - }, - barrage: { - inherit: true, - isNonstandard: null, - }, - lovelykiss: { - inherit: true, - isNonstandard: null, - }, - bubble: { - inherit: true, - isNonstandard: null, - }, - dizzypunch: { - inherit: true, - isNonstandard: null, - }, - flash: { - inherit: true, - isNonstandard: null, - }, - psywave: { - inherit: true, - isNonstandard: null, - }, - bonemerang: { - inherit: true, - isNonstandard: null, - }, - hyperfang: { - inherit: true, - isNonstandard: null, - }, - sharpen: { - inherit: true, - isNonstandard: null, - }, - conversion: { - inherit: true, - isNonstandard: null, - }, - sketch: { - inherit: true, - isNonstandard: null, - }, - triplekick: { - inherit: true, - isNonstandard: null, - }, - spiderweb: { - inherit: true, - isNonstandard: null, - }, - mindreader: { - inherit: true, - isNonstandard: null, - }, - nightmare: { - inherit: true, - isNonstandard: null, - }, - conversion2: { - inherit: true, - isNonstandard: null, - }, - aeroblast: { - inherit: true, - isNonstandard: null, - }, - feintattack: { - inherit: true, - isNonstandard: null, - }, - octazooka: { - inherit: true, - isNonstandard: null, - }, - foresight: { - inherit: true, - isNonstandard: null, - }, - return: { - inherit: true, - isNonstandard: null, - }, - frustration: { - inherit: true, - isNonstandard: null, - }, - sacredfire: { - inherit: true, - isNonstandard: null, - }, - magnitude: { - inherit: true, - isNonstandard: null, - }, - pursuit: { - inherit: true, - isNonstandard: null, - }, - vitalthrow: { - inherit: true, - isNonstandard: null, - }, - hiddenpower: { - inherit: true, - isNonstandard: null, - }, - hail: { - inherit: true, - isNonstandard: null, - }, - smellingsalts: { - inherit: true, - isNonstandard: null, - }, - naturepower: { - inherit: true, - isNonstandard: null, - }, - assist: { - inherit: true, - isNonstandard: null, - }, - magiccoat: { - inherit: true, - isNonstandard: null, - }, - revenge: { - inherit: true, - isNonstandard: null, - }, - refresh: { - inherit: true, - isNonstandard: null, - }, - grudge: { - inherit: true, - isNonstandard: null, - }, - snatch: { - inherit: true, - isNonstandard: null, - }, - secretpower: { - inherit: true, - isNonstandard: null, - }, - camouflage: { - inherit: true, - isNonstandard: null, - }, - tailglow: { - inherit: true, - isNonstandard: null, - }, - lusterpurge: { - inherit: true, - isNonstandard: null, - }, - mistball: { - inherit: true, - isNonstandard: null, - }, - mudsport: { - inherit: true, - isNonstandard: null, - }, - iceball: { - inherit: true, - isNonstandard: null, - }, - needlearm: { - inherit: true, - isNonstandard: null, - }, - aromatherapy: { - inherit: true, - isNonstandard: null, - }, - odorsleuth: { - inherit: true, - isNonstandard: null, - }, - silverwind: { - inherit: true, - isNonstandard: null, - }, - signalbeam: { - inherit: true, - isNonstandard: null, - }, - skyuppercut: { - inherit: true, - isNonstandard: null, - }, - watersport: { - inherit: true, - isNonstandard: null, - }, - doomdesire: { - inherit: true, - isNonstandard: null, - }, - psychoboost: { - inherit: true, - isNonstandard: null, - }, - miracleeye: { - inherit: true, - isNonstandard: null, - }, - wakeupslap: { - inherit: true, - isNonstandard: null, - }, - naturalgift: { - inherit: true, - isNonstandard: null, - }, - embargo: { - inherit: true, - isNonstandard: null, - }, - psychoshift: { - inherit: true, - isNonstandard: null, - }, - trumpcard: { - inherit: true, - isNonstandard: null, - }, - healblock: { - inherit: true, - isNonstandard: null, - }, - wringout: { - inherit: true, - isNonstandard: null, - }, - luckychant: { - inherit: true, - isNonstandard: null, - }, - mefirst: { - inherit: true, - isNonstandard: null, - }, - punishment: { - inherit: true, - isNonstandard: null, - }, - mudbomb: { - inherit: true, - isNonstandard: null, - }, - mirrorshot: { - inherit: true, - isNonstandard: null, - }, - rockclimb: { - inherit: true, - isNonstandard: null, - }, - rockwrecker: { - inherit: true, - isNonstandard: null, - }, - magnetbomb: { - inherit: true, - isNonstandard: null, - }, - captivate: { - inherit: true, - isNonstandard: null, - }, - chatter: { - inherit: true, - isNonstandard: null, - }, - healorder: { - inherit: true, - isNonstandard: null, - }, - crushgrip: { - inherit: true, - isNonstandard: null, - }, - darkvoid: { - inherit: true, - isNonstandard: null, - }, - seedflare: { - inherit: true, - isNonstandard: null, - }, - ominouswind: { - inherit: true, - isNonstandard: null, - }, - autotomize: { - inherit: true, - isNonstandard: null, - }, - telekinesis: { - inherit: true, - isNonstandard: null, - }, - stormthrow: { - inherit: true, - isNonstandard: null, - }, - flameburst: { - inherit: true, - isNonstandard: null, - }, - synchronoise: { - inherit: true, - isNonstandard: null, - }, - chipaway: { - inherit: true, - isNonstandard: null, - }, - skydrop: { - inherit: true, - isNonstandard: null, - }, - bestow: { - inherit: true, - isNonstandard: null, - }, - dualchop: { - inherit: true, - isNonstandard: null, - }, - heartstamp: { - inherit: true, - isNonstandard: null, - }, - leaftornado: { - inherit: true, - isNonstandard: null, - }, - steamroller: { - inherit: true, - isNonstandard: null, - }, - headcharge: { - inherit: true, - isNonstandard: null, - }, - geargrind: { - inherit: true, - isNonstandard: null, - }, - searingshot: { - inherit: true, - isNonstandard: null, - }, - technoblast: { - inherit: true, - isNonstandard: null, - }, - secretsword: { - inherit: true, - isNonstandard: null, - }, - glaciate: { - inherit: true, - isNonstandard: null, - }, - boltstrike: { - inherit: true, - isNonstandard: null, - }, - blueflare: { - inherit: true, - isNonstandard: null, - }, - freezeshock: { - inherit: true, - isNonstandard: null, - }, - iceburn: { - inherit: true, - isNonstandard: null, - }, - fusionflare: { - inherit: true, - isNonstandard: null, - }, - fusionbolt: { - inherit: true, - isNonstandard: null, - }, - matblock: { - inherit: true, - isNonstandard: null, - }, - rototiller: { - inherit: true, - isNonstandard: null, - }, - trickortreat: { - inherit: true, - isNonstandard: null, - }, - iondeluge: { - inherit: true, - isNonstandard: null, - }, - forestscurse: { - inherit: true, - isNonstandard: null, - }, - topsyturvy: { - inherit: true, - isNonstandard: null, - }, - craftyshield: { - inherit: true, - isNonstandard: null, - }, - flowershield: { - inherit: true, - isNonstandard: null, - }, - electrify: { - inherit: true, - isNonstandard: null, - }, - kingsshield: { - inherit: true, - isNonstandard: null, - }, - venomdrench: { - inherit: true, - isNonstandard: null, - }, - powder: { - inherit: true, - isNonstandard: null, - }, - geomancy: { - inherit: true, - isNonstandard: null, - }, - poweruppunch: { - inherit: true, - isNonstandard: null, - }, - oblivionwing: { - inherit: true, - isNonstandard: null, - }, - thousandarrows: { - inherit: true, - isNonstandard: null, - }, - thousandwaves: { - inherit: true, - isNonstandard: null, - }, - landswrath: { - inherit: true, - isNonstandard: null, - }, - lightofruin: { - inherit: true, - isNonstandard: null, - }, - sparklingaria: { - inherit: true, - isNonstandard: null, - }, - floralhealing: { - inherit: true, - isNonstandard: null, - }, - spotlight: { - inherit: true, - isNonstandard: null, - }, - toxicthread: { - inherit: true, - isNonstandard: null, - }, - laserfocus: { - inherit: true, - isNonstandard: null, - }, - gearup: { - inherit: true, - isNonstandard: null, - }, - anchorshot: { - inherit: true, - isNonstandard: null, - }, - purify: { - inherit: true, - isNonstandard: null, - }, - coreenforcer: { - inherit: true, - isNonstandard: null, - }, - beakblast: { - inherit: true, - isNonstandard: null, - }, - clangingscales: { - inherit: true, - isNonstandard: null, - }, - dragonhammer: { - inherit: true, - isNonstandard: null, - }, - shelltrap: { - inherit: true, - isNonstandard: null, - }, - shadowbone: { - inherit: true, - isNonstandard: null, - }, - prismaticlaser: { - inherit: true, - isNonstandard: null, - }, - spectralthief: { - inherit: true, - isNonstandard: null, - }, - sunsteelstrike: { - inherit: true, - isNonstandard: null, - }, - moongeistbeam: { - inherit: true, - isNonstandard: null, - }, - naturesmadness: { - inherit: true, - isNonstandard: null, - }, - multiattack: { - inherit: true, - isNonstandard: null, - }, - mindblown: { - inherit: true, - isNonstandard: null, - }, - plasmafists: { - inherit: true, - isNonstandard: null, - }, - photongeyser: { - inherit: true, - isNonstandard: null, - }, - doubleironbash: { - inherit: true, - isNonstandard: null, - }, - maxguard: { - inherit: true, - isNonstandard: null, - }, - octolock: { - inherit: true, - isNonstandard: null, - }, - boltbeak: { - inherit: true, - isNonstandard: null, - }, - fishiousrend: { - inherit: true, - isNonstandard: null, - }, - clangoroussoul: { - inherit: true, - isNonstandard: null, - }, - decorate: { - inherit: true, - isNonstandard: null, - }, - snaptrap: { - inherit: true, - isNonstandard: null, - }, - aurawheel: { - inherit: true, - isNonstandard: null, - }, - strangesteam: { - inherit: true, - isNonstandard: null, - }, - obstruct: { - inherit: true, - isNonstandard: null, - }, - meteorassault: { - inherit: true, - isNonstandard: null, - }, - eternabeam: { - inherit: true, - isNonstandard: null, - }, -}; diff --git a/data/mods/scootopiav2/pokedex.ts b/data/mods/scootopiav2/pokedex.ts deleted file mode 100644 index 52f1bcbacd..0000000000 --- a/data/mods/scootopiav2/pokedex.ts +++ /dev/null @@ -1,551 +0,0 @@ -export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = { - arbrella: { - num: 2001, - name: "Arbrella", - types: ["Grass", "Ground"], - baseStats: { hp: 80, atk: 115, def: 100, spa: 80, spd: 80, spe: 75 }, - abilities: { 0: "Overgrow", H: "Tough Claws" }, - weightkg: 211, - eggGroups: ["Undiscovered"], - }, - krachiten: { - num: 2002, - name: "Krachiten", - types: ["Water", "Bug"], - baseStats: { hp: 90, atk: 120, def: 70, spa: 78, spd: 60, spe: 112 }, - abilities: { 0: "Torrent", H: "Sniper" }, - weightkg: 59, - eggGroups: ["Undiscovered"], - }, - scalaron: { - num: 2003, - name: "Scalaron", - types: ["Fire", "Flying"], - baseStats: { hp: 90, atk: 70, def: 90, spa: 100, spd: 105, spe: 75 }, - abilities: { 0: "Blaze", H: "Filter" }, - weightkg: 70, - eggGroups: ["Undiscovered"], - }, - rantler: { - num: 2004, - name: "Rantler", - types: ["Normal", "Ice"], - baseStats: { hp: 68, atk: 118, def: 94, spa: 43, spd: 79, spe: 73 }, - abilities: { 0: "Intimidate", 1: "Slush Rush", H: "Tough Claws" }, - weightkg: 67, - eggGroups: ["Undiscovered"], - }, - woolora: { - num: 2005, - name: "Woolora", - types: ["Fairy"], - baseStats: { hp: 70, atk: 75, def: 70, spa: 95, spd: 115, spe: 70 }, - abilities: { 0: "Fluffy", 1: "Rattled", H: "Pastel Veil" }, - weightkg: 50.3, - eggGroups: ["Undiscovered"], - }, - albatrygon: { - num: 2006, - name: "Albatrygon", - types: ["Flying"], - baseStats: { hp: 80, atk: 105, def: 70, spa: 65, spd: 60, spe: 95 }, - abilities: { 0: "Prankster", 1: "Klutz", H: "Unburden" }, - weightkg: 10.1, - eggGroups: ["Undiscovered"], - }, - orchile: { - num: 2007, - name: "Orchile", - types: ["Grass", "Fairy"], - baseStats: { hp: 65, atk: 60, def: 75, spa: 110, spd: 121, spe: 64 }, - abilities: { 0: "Sweet Veil", 1: "Aroma Veil", H: "Flower Veil" }, - weightkg: 45, - eggGroups: ["Undiscovered"], - }, - embuck: { - num: 2008, - name: "Embuck", - types: ["Fire", "Fighting"], - baseStats: { hp: 90, atk: 125, def: 80, spa: 83, spd: 65, spe: 82 }, - abilities: { 0: "Intimidate", H: "Flash Fire" }, - weightkg: 113, - eggGroups: ["Undiscovered"], - }, - cindoe: { - num: 2009, - name: "Cindoe", - types: ["Fire", "Dark"], - baseStats: { hp: 80, atk: 74, def: 55, spa: 110, spd: 100, spe: 106 }, - abilities: { 0: "Natural Cure", H: "Flash Fire" }, - weightkg: 67, - eggGroups: ["Undiscovered"], - }, - cobracotta: { - num: 2010, - name: "Cobracotta", - types: ["Grass", "Poison"], - baseStats: { hp: 80, atk: 90, def: 95, spa: 80, spd: 115, spe: 35 }, - abilities: { 0: "Mold Breaker", 1: "Weak Armor", H: "Heatproof" }, - weightkg: 68, - eggGroups: ["Undiscovered"], - }, - minillow: { - num: 2011, - name: "Minillow", - types: ["Water", "Fairy"], - baseStats: { hp: 70, atk: 64, def: 75, spa: 90, spd: 95, spe: 81 }, - abilities: { 0: "Swift Swim", 1: "Dazzling", H: "Adaptability" }, - weightkg: 22, - eggGroups: ["Undiscovered"], - }, - crossont: { - num: 2012, - name: "Crossont", - types: ["Bug", "Fighting"], - baseStats: { hp: 80, atk: 125, def: 100, spa: 60, spd: 80, spe: 80 }, - abilities: { 0: "Sniper", 1: "Long Reach", H: "Gooey" }, - weightkg: 121, - eggGroups: ["Undiscovered"], - }, - torgeist: { - num: 2013, - name: "Torgeist", - types: ["Ghost", "Flying"], - baseStats: { hp: 55, atk: 65, def: 95, spa: 115, spd: 100, spe: 105 }, - abilities: { 0: "Cursed Body", 1: "Clear Body", H: "Merciless" }, - weightkg: 9.7, - eggGroups: ["Undiscovered"], - }, - platypad: { - num: 2014, - name: "Platypad", - types: ["Grass", "Water"], - baseStats: { hp: 120, atk: 100, def: 80, spa: 100, spd: 80, spe: 40 }, - abilities: { 0: "Thick Fat", 1: "Triage", H: "Flower Veil" }, - weightkg: 89, - eggGroups: ["Undiscovered"], - }, - lumoth: { - num: 2015, - name: "Lumoth", - types: ["Bug", "Ghost"], - baseStats: { hp: 60, atk: 55, def: 91, spa: 110, spd: 85, spe: 94 }, - abilities: { 0: "Levitate" }, - weightkg: 0.5, - eggGroups: ["Undiscovered"], - }, - aurorowl: { - num: 2016, - name: "Aurorowl", - types: ["Ice", "Flying"], - baseStats: { hp: 70, atk: 70, def: 65, spa: 95, spd: 95, spe: 115 }, - abilities: { 0: "Snow Cloak", H: "Technician" }, - weightkg: 15, - eggGroups: ["Undiscovered"], - }, - carapex: { - num: 2017, - name: "Carapex", - types: ["Bug", "Flying"], - baseStats: { hp: 75, atk: 105, def: 155, spa: 55, spd: 90, spe: 60 }, - abilities: { 0: "Wind Rider", 1: "Mold Breaker", H: "Sturdy" }, - weightkg: 135, - eggGroups: ["Undiscovered"], - }, - dojodo: { - num: 2018, - name: "Dojodo", - types: ["Fighting"], - baseStats: { hp: 90, atk: 115, def: 80, spa: 65, spd: 100, spe: 80 }, - abilities: { 0: "Iron Fist", 1: "Stamina", H: "Supreme Overlord" }, - weightkg: 53, - eggGroups: ["Undiscovered"], - }, - nunopod: { - num: 2019, - name: "Nunopod", - types: ["Ground", "Bug"], - baseStats: { hp: 80, atk: 110, def: 125, spa: 68, spd: 75, spe: 67 }, - abilities: { 0: "Earth Eater", H: "Opportunist" }, - weightkg: 68, - eggGroups: ["Undiscovered"], - }, - zeploom: { - num: 2020, - name: "Zeploom", - types: ["Grass", "Ground"], - baseStats: { hp: 55, atk: 55, def: 145, spa: 65, spd: 150, spe: 45 }, - abilities: { 0: "Wind Rider", H: "Levitate" }, - weightkg: 5, - eggGroups: ["Undiscovered"], - }, - brawnkey: { - num: 2021, - name: "Brawnkey", - types: ["Steel", "Fighting"], - baseStats: { hp: 95, atk: 105, def: 105, spa: 85, spd: 80, spe: 50 }, - abilities: { 0: "Levitate" }, - weightkg: 85, - eggGroups: ["Undiscovered"], - }, - salamalix: { - num: 2022, - name: "Salamalix", - types: ["Rock", "Steel"], - baseStats: { hp: 70, atk: 120, def: 120, spa: 45, spd: 65, spe: 90 }, - abilities: { 0: "No Guard", 1: "Mold Breaker", H: "Intimidate" }, - weightkg: 85, - eggGroups: ["Undiscovered"], - }, - cinnastar: { - num: 2023, - name: "Cinnastar", - types: ["Rock", "Poison"], - baseStats: { hp: 110, atk: 95, def: 80, spa: 95, spd: 80, spe: 80 }, - abilities: { 0: "Liquid Ooze", H: "Regenerator" }, - weightkg: 56, - eggGroups: ["Undiscovered"], - }, - muabboa: { - num: 2024, - name: "MuabBoa", - types: ["Ground", "Fighting"], - baseStats: { hp: 65, atk: 100, def: 75, spa: 55, spd: 65, spe: 120 }, - abilities: { 0: "Anticipation", 1: "Sand Rush", H: "Inner Focus" }, - weightkg: 25, - eggGroups: ["Undiscovered"], - }, - volvolpa: { - num: 2025, - name: "Volvolpa", - types: ["Electric", "Ice"], - baseStats: { hp: 76, atk: 97, def: 64, spa: 70, spd: 102, spe: 121 }, - abilities: { 0: "Slush Rush", 1: "Volt Absorb", H: "Strong Jaw" }, - weightkg: 27, - eggGroups: ["Undiscovered"], - }, - harzodia: { - num: 2026, - name: "Harzodia", - types: ["Psychic"], - baseStats: { hp: 65, atk: 55, def: 75, spa: 125, spd: 75, spe: 95 }, - abilities: { 0: "Prankster", 1: "Unburden", H: "Solar Power" }, - weightkg: 35, - eggGroups: ["Undiscovered"], - }, - cyllindrake: { - num: 2027, - name: "Cyllindrake", - types: ["Steel", "Dragon"], - baseStats: { hp: 70, atk: 85, def: 115, spa: 95, spd: 70, spe: 110 }, - abilities: { 0: "Heavy Metal", 1: "Punk Rock", H: "Scrappy" }, - weightkg: 180, - eggGroups: ["Undiscovered"], - }, - kodokai: { - num: 2028, - name: "Kodokai", - types: ["Ghost", "Fire"], - baseStats: { hp: 110, atk: 65, def: 100, spa: 110, spd: 90, spe: 30 }, - abilities: { 0: "White Smoke", H: "Aroma Veil" }, - weightkg: 50, - eggGroups: ["Undiscovered"], - }, - electangle: { - num: 2029, - name: "Electangle", - types: ["Steel", "Electric"], - baseStats: { hp: 120, atk: 90, def: 110, spa: 90, spd: 90, spe: 25 }, - abilities: { 0: "Filter" }, - weightkg: 190, - eggGroups: ["Undiscovered"], - }, - dolphena: { - num: 2030, - name: "Dolphena", - types: ["Water", "Dragon"], - baseStats: { hp: 95, atk: 125, def: 80, spa: 84, spd: 75, spe: 81 }, - abilities: { 0: "Anger Point", H: "Mythical Presence" }, - weightkg: 271, - eggGroups: ["Undiscovered"], - }, - elemadillo: { - num: 2035, - name: "Elemadillo", - types: ["Steel", "Electric"], - baseStats: { hp: 67, atk: 94, def: 73, spa: 103, spd: 64, spe: 129 }, - abilities: { 0: "Weak Armor", 1: "Motor Drive", H: "Stalwart" }, - weightkg: 58, - eggGroups: ["Undiscovered"], - }, - axolacred: { - num: 2036, - name: "Axolacred", - types: ["Dragon"], - baseStats: { hp: 85, atk: 90, def: 85, spa: 95, spd: 95, spe: 65 }, - abilities: { 0: "Magic Guard", H: "Purifying Salt" }, - weightkg: 33, - eggGroups: ["Undiscovered"], - }, - roscenti: { - num: 2037, - name: "Roscenti", - types: ["Bug", "Grass"], - baseStats: { hp: 80, atk: 115, def: 100, spa: 75, spd: 80, spe: 100 }, - abilities: { 0: "Sheer Force", 1: "Chlorophyll", H: "Skill Link" }, - eggGroups: ["Undiscovered"], - weightkg: 37, - }, - blunderbusk: { - num: 2038, - name: "Blunderbusk", - types: ["Water"], - baseStats: { hp: 73, atk: 67, def: 124, spa: 128, spd: 89, spe: 24 }, - abilities: { 0: "Mega Launcher", H: "Shell Bunker" }, - weightkg: 86, - eggGroups: ["Undiscovered"], - }, - barracoth: { - num: 2039, - name: "Barracoth", - types: ["Ice", "Water"], - baseStats: { hp: 140, atk: 115, def: 110, spa: 55, spd: 65, spe: 35 }, - abilities: { 0: "Filter", 1: "Thick Fat", H: "Multiscale" }, - weightkg: 356, - eggGroups: ["Undiscovered"], - }, - jamborai: { - num: 2040, - name: "Jamborai", - types: ["Poison", "Psychic"], - baseStats: { hp: 75, atk: 55, def: 125, spa: 120, spd: 85, spe: 65 }, - abilities: { 0: "Clear Body", 1: "Gooey", H: "Water Absorb" }, - weightkg: 84, - eggGroups: ["Undiscovered"], - }, - dracoil: { - num: 2041, - name: "Dracoil", - types: ["Dragon", "Flying"], - baseStats: { hp: 105, atk: 106, def: 85, spa: 96, spd: 60, spe: 78 }, - abilities: { 0: "Mythical Presence", 1: "Gluttony", H: "Marvel Scale" }, - weightkg: 428, - eggGroups: ["Undiscovered"], - }, - celespirit: { - num: 2042, - name: "Celespirit", - types: ["Ghost"], - baseStats: { hp: 75, atk: 61, def: 73, spa: 117, spd: 135, spe: 69 }, - abilities: { 0: "Levitate", H: "Power Spot" }, - weightkg: 25.8, - eggGroups: ["Undiscovered"], - }, - noxtrice: { - num: 2043, - name: "Noxtrice", - types: ["Poison", "Fire"], - baseStats: { hp: 65, atk: 118, def: 75, spa: 63, spd: 80, spe: 114 }, - abilities: { 0: "Poison Touch", H: "Flash Fire" }, - weightkg: 73.7, - eggGroups: ["Undiscovered"], - }, - sturgard: { - num: 2055, - name: "Sturgard", - types: ["Water", "Ground"], - baseStats: { hp: 105, atk: 110, def: 105, spa: 65, spd: 70, spe: 70 }, - abilities: { 0: "Rock Head", 1: "Battle Armor", H: "Mold Breaker" }, - weightkg: 143, - eggGroups: ["Undiscovered"], - }, - avastar: { - num: 2034, - name: "Avastar", - types: ["Psychic", "Steel"], - baseStats: { hp: 75, atk: 85, def: 110, spa: 115, spd: 100, spe: 60 }, - abilities: { 0: "Stalwart", 1: "Heavy Metal", H: "Shell Bunker" }, - weightkg: 999.9, - eggGroups: ["Undiscovered"], - }, - faerenheit: { - num: 2044, - name: "Faerenheit", - types: ["Fire", "Fairy"], - baseStats: { hp: 71, atk: 83, def: 127, spa: 97, spd: 109, spe: 83 }, - abilities: { 0: "Beast Boost" }, - weightkg: 2.1, - eggGroups: ["Undiscovered"], - }, - cellsius: { - num: 2045, - name: "Cellsius", - types: ["Water", "Fairy"], - baseStats: { hp: 71, atk: 83, def: 83, spa: 109, spd: 127, spe: 97 }, - abilities: { 0: "Beast Boost" }, - weightkg: 2.4, - eggGroups: ["Undiscovered"], - }, - kelven: { - num: 2046, - name: "Kelven", - types: ["Ice", "Fairy"], - baseStats: { hp: 71, atk: 127, def: 109, spa: 83, spd: 83, spe: 97 }, - abilities: { 0: "Beast Boost" }, - weightkg: 2.8, - eggGroups: ["Undiscovered"], - }, - salaos: { - num: 2047, - name: "Salaos", - types: ["Dark"], - baseStats: { hp: 75, atk: 85, def: 90, spa: 110, spd: 130, spe: 90 }, - abilities: { 0: "Good as Gold" }, - weightkg: 74, - eggGroups: ["Undiscovered"], - }, - morndos: { - num: 2048, - name: "Morndos", - types: ["Dark", "Flying"], - baseStats: { hp: 110, atk: 90, def: 75, spa: 90, spd: 85, spe: 130 }, - abilities: { 0: "Synchronize" }, - weightkg: 56, - eggGroups: ["Undiscovered"], - }, - pythos: { - num: 2049, - name: "Pythos", - types: ["Dark"], - baseStats: { hp: 90, atk: 110, def: 130, spa: 85, spd: 90, spe: 75 }, - abilities: { 0: "Guts" }, - weightkg: 178, - eggGroups: ["Undiscovered"], - }, - corundell: { - num: 2050, - name: "Corundell", - types: ["Rock", "Electric"], - baseStats: { hp: 75, atk: 100, def: 130, spa: 105, spd: 80, spe: 110 }, - abilities: { 0: "Lightning Rod", H: "Protosynthesis" }, - weightkg: 137, - eggGroups: ["Undiscovered"], - }, - quadringo: { - num: 2051, - name: "Quadringo", - types: ["Fairy", "Dragon"], - baseStats: { hp: 80, atk: 120, def: 95, spa: 100, spd: 120, spe: 85 }, - abilities: { 0: "Hydration", 1: "Pastel Veil", H: "Inner Focus" }, - weightkg: 156, - eggGroups: ["Undiscovered"], - }, - saphor: { - num: 2052, - name: "Saphor", - types: ["Ground", "Normal"], - baseStats: { hp: 95, atk: 100, def: 105, spa: 100, spd: 105, spe: 95 }, - abilities: { 0: "Thick Fat", 1: "Crystal Heart" }, - weightkg: 638, - eggGroups: ["Undiscovered"], - }, - fenreil: { - num: 2053, - name: "Fenreil", - types: ["Dark", "Normal"], - baseStats: { hp: 80, atk: 105, def: 97, spa: 105, spd: 97, spe: 116 }, - abilities: { 0: "Natural Cure", 1: "Wild Heart" }, - weightkg: 232, - eggGroups: ["Undiscovered"], - }, - soleron: { - num: 2031, - name: "Soleron", - types: ["Electric", "Flying"], - baseStats: { hp: 70, atk: 75, def: 65, spa: 115, spd: 75, spe: 115 }, - abilities: { 0: "Battle Bond" }, - otherFormes: ["Soleron-Awakened"], - formeOrder: ["Soleron", "Soleron-Awakened"], - weightkg: 12, - eggGroups: ["Undiscovered"], - }, - soleronawakened: { - num: 2031, - name: "Soleron-Awakened", - baseSpecies: "Soleron", - forme: "Awakened", - types: ["Electric", "Flying"], - baseStats: { hp: 70, atk: 105, def: 85, spa: 135, spd: 95, spe: 125 }, - abilities: { 0: "Battle Bond" }, - requiredAbility: "Battle Bond", - battleOnly: "Soleron", - weightkg: 24, - eggGroups: ["Undiscovered"], - }, - efflor: { - num: 2032, - name: "Efflor", - types: ["Rock", "Grass"], - baseStats: { hp: 80, atk: 85, def: 110, spa: 105, spd: 110, spe: 25 }, - abilities: { 0: "Solid Rock", 1: "Unaware", H: "Seed Sower" }, - weightkg: 113, - eggGroups: ["Undiscovered"], - }, - pictagon: { - num: 2055, - name: "Pictagon", - types: ["Dragon", "Ghost"], - baseStats: { hp: 105, atk: 105, def: 60, spa: 80, spd: 85, spe: 95 }, - abilities: { 0: "Clear Body", 1: "Infiltrator", H: "No Guard" }, - weightkg: 113, - eggGroups: ["Undiscovered"], - }, - jaegorm: { - num: 2033, - name: "Jaegorm", - types: ["Bug", "Psychic"], - baseStats: { hp: 60, atk: 65, def: 40, spa: 130, spd: 40, spe: 130 }, - abilities: { 0: "Schooling" }, - otherFormes: ["Jaegorm-Collective"], - formeOrder: ["Jaegorm", "Jaegorm-Collective"], - weightkg: 10, - eggGroups: ["Undiscovered"], - }, - jaegormcollective: { - num: 2033, - name: "Jaegorm-Collective", - baseSpecies: "Jaegorm", - forme: "Collective", - types: ["Bug", "Psychic"], - baseStats: { hp: 60, atk: 145, def: 130, spa: 100, spd: 130, spe: 80 }, - abilities: { 0: "Schooling" }, - requiredAbility: "Schooling", - battleOnly: "Jaegorm", - weightkg: 122, - eggGroups: ["Undiscovered"], - }, - flocura: { - num: 2054, - name: "Flocura", - types: ["Grass", "Psychic"], - baseStats: { hp: 55, atk: 85, def: 55, spa: 107, spd: 180, spe: 118 }, - abilities: { 0: "Levitate", H: "Power Construct" }, - otherFormes: ["Flocura-Nexus"], - formeOrder: ["Flocura", "Flocura-Nexus"], - weightkg: 7.1, - eggGroups: ["Undiscovered"], - }, - flocuranexus: { - num: 2054, - name: "Flocura-Nexus", - baseSpecies: "Flocura", - forme: "Nexus", - types: ["Grass", "Psychic"], - baseStats: { hp: 105, atk: 125, def: 105, spa: 137, spd: 180, spe: 48 }, - abilities: { 0: "Levitate", H: "Power Construct" }, - requiredAbility: "Power Construct", - battleOnly: "Flocura", - weightkg: 999, - eggGroups: ["Undiscovered"], - }, -}; diff --git a/data/mods/scootopiav2/rulesets.ts b/data/mods/scootopiav2/rulesets.ts deleted file mode 100644 index 35ce7bd003..0000000000 --- a/data/mods/scootopiav2/rulesets.ts +++ /dev/null @@ -1,38 +0,0 @@ -export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = { - supertypemovesrule: { - effectType: 'Rule', - name: 'Super Type Moves Rule', - desc: 'Prevents pokemon from using Crystal or Feral moves unless they have a matching type.', - onBeforeMove(pokemon, target, move) { - move = { - ...this.dex.moves.get(move), - hit: move.hit, - }; - if (move.type === "Crystal" && !pokemon.hasType("Crystal")) return false; - if (move.type === "Feral" && !pokemon.hasType("Feral")) return false; - }, - onDisableMove(pokemon) { - for (const moveSlot of pokemon.moveSlots) { - const move = this.dex.moves.get(moveSlot.id); - if ((move.type === "Crystal" && !pokemon.hasType("Crystal")) || (move.type === "Feral" && !pokemon.hasType("Feral"))) { - pokemon.disableMove(moveSlot.id, false); - } - } - }, - }, - spriteviewer: { - effectType: 'ValidatorRule', - name: 'Sprite Viewer', - desc: "Displays a fakemon's sprite in chat when it is switched in for the first time", - onBegin() { - this.add('rule', 'Sprite Viewer: Displays sprites in chat'); - }, - onSwitchIn(pokemon) { - if (!this.effectState[pokemon.species.id]) { - this.add('-message', `${pokemon.species.name}'s Sprite:`); - this.add(`raw|`); - this.effectState[pokemon.species.id] = true; - } - }, - }, -}; diff --git a/data/mods/scootopiav2/typechart.ts b/data/mods/scootopiav2/typechart.ts deleted file mode 100644 index 3b253d0eff..0000000000 --- a/data/mods/scootopiav2/typechart.ts +++ /dev/null @@ -1,530 +0,0 @@ -export const TypeChart: import('../../../sim/dex-data').ModdedTypeDataTable = { - bug: { - damageTaken: { - Bug: 0, - Dark: 0, - Dragon: 0, - Electric: 0, - Fairy: 0, - Fighting: 2, - Fire: 1, - Flying: 1, - Ghost: 0, - Grass: 2, - Ground: 2, - Ice: 0, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 1, - Steel: 0, - Water: 0, - Crystal: 0, - Feral: 0, - }, - HPivs: { atk: 30, def: 30, spd: 30 }, - HPdvs: { atk: 13, def: 13 }, - }, - dark: { - damageTaken: { - prankster: 3, - Bug: 1, - Dark: 2, - Dragon: 0, - Electric: 0, - Fairy: 1, - Fighting: 1, - Fire: 0, - Flying: 0, - Ghost: 2, - Grass: 0, - Ground: 0, - Ice: 0, - Normal: 0, - Poison: 0, - Psychic: 3, - Rock: 0, - Steel: 0, - Water: 0, - Crystal: 1, - Feral: 0, - }, - HPivs: {}, - }, - dragon: { - damageTaken: { - Bug: 0, - Dark: 0, - Dragon: 1, - Electric: 2, - Fairy: 1, - Fighting: 0, - Fire: 2, - Flying: 0, - Ghost: 0, - Grass: 2, - Ground: 0, - Ice: 1, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 0, - Steel: 0, - Water: 2, - Crystal: 0, - Feral: 2, - }, - HPivs: { atk: 30 }, - HPdvs: { def: 14 }, - }, - electric: { - damageTaken: { - par: 3, - Bug: 0, - Dark: 0, - Dragon: 0, - Electric: 2, - Fairy: 0, - Fighting: 0, - Fire: 0, - Flying: 2, - Ghost: 0, - Grass: 0, - Ground: 1, - Ice: 0, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 0, - Steel: 2, - Water: 0, - Crystal: 2, - Feral: 0, - }, - HPivs: { spa: 30 }, - HPdvs: { atk: 14 }, - }, - fairy: { - damageTaken: { - Bug: 2, - Dark: 2, - Dragon: 3, - Electric: 0, - Fairy: 0, - Fighting: 2, - Fire: 0, - Flying: 0, - Ghost: 0, - Grass: 0, - Ground: 0, - Ice: 0, - Normal: 0, - Poison: 1, - Psychic: 0, - Rock: 0, - Steel: 1, - Water: 0, - Crystal: 0, - Feral: 1, - }, - }, - fighting: { - damageTaken: { - Bug: 2, - Dark: 2, - Dragon: 0, - Electric: 0, - Fairy: 1, - Fighting: 0, - Fire: 0, - Flying: 1, - Ghost: 0, - Grass: 0, - Ground: 0, - Ice: 0, - Normal: 0, - Poison: 0, - Psychic: 1, - Rock: 2, - Steel: 0, - Water: 0, - Crystal: 2, - Feral: 0, - }, - HPivs: { def: 30, spa: 30, spd: 30, spe: 30 }, - HPdvs: { atk: 12, def: 12 }, - }, - fire: { - damageTaken: { - brn: 3, - Bug: 2, - Dark: 0, - Dragon: 0, - Electric: 0, - Fairy: 2, - Fighting: 0, - Fire: 2, - Flying: 0, - Ghost: 0, - Grass: 2, - Ground: 1, - Ice: 2, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 1, - Steel: 2, - Water: 1, - Crystal: 1, - Feral: 2, - }, - HPivs: { atk: 30, spa: 30, spe: 30 }, - HPdvs: { atk: 14, def: 12 }, - }, - flying: { - damageTaken: { - Bug: 2, - Dark: 0, - Dragon: 0, - Electric: 1, - Fairy: 0, - Fighting: 2, - Fire: 0, - Flying: 0, - Ghost: 0, - Grass: 2, - Ground: 3, - Ice: 1, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 1, - Steel: 0, - Water: 0, - Crystal: 0, - Feral: 1, - }, - HPivs: { hp: 30, atk: 30, def: 30, spa: 30, spd: 30 }, - HPdvs: { atk: 12, def: 13 }, - }, - ghost: { - damageTaken: { - trapped: 3, - Bug: 2, - Dark: 1, - Dragon: 0, - Electric: 0, - Fairy: 0, - Fighting: 3, - Fire: 0, - Flying: 0, - Ghost: 1, - Grass: 0, - Ground: 0, - Ice: 0, - Normal: 3, - Poison: 2, - Psychic: 0, - Rock: 0, - Steel: 0, - Water: 0, - Crystal: 1, - Feral: 2, - }, - HPivs: { def: 30, spd: 30 }, - HPdvs: { atk: 13, def: 14 }, - }, - grass: { - damageTaken: { - powder: 3, - Bug: 1, - Dark: 0, - Dragon: 0, - Electric: 2, - Fairy: 0, - Fighting: 0, - Fire: 1, - Flying: 1, - Ghost: 0, - Grass: 2, - Ground: 2, - Ice: 1, - Normal: 0, - Poison: 1, - Psychic: 0, - Rock: 0, - Steel: 0, - Water: 2, - Crystal: 0, - Feral: 1, - }, - HPivs: { atk: 30, spa: 30 }, - HPdvs: { atk: 14, def: 14 }, - }, - ground: { - damageTaken: { - sandstorm: 3, - Bug: 0, - Dark: 0, - Dragon: 0, - Electric: 3, - Fairy: 0, - Fighting: 0, - Fire: 0, - Flying: 0, - Ghost: 0, - Grass: 1, - Ground: 0, - Ice: 1, - Normal: 0, - Poison: 2, - Psychic: 0, - Rock: 2, - Steel: 0, - Water: 1, - Crystal: 0, - Feral: 0, - }, - HPivs: { spa: 30, spd: 30 }, - HPdvs: { atk: 12 }, - }, - ice: { - damageTaken: { - hail: 3, - frz: 3, - Bug: 0, - Dark: 0, - Dragon: 0, - Electric: 0, - Fairy: 0, - Fighting: 1, - Fire: 1, - Flying: 0, - Ghost: 0, - Grass: 0, - Ground: 0, - Ice: 2, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 1, - Steel: 1, - Water: 0, - Crystal: 0, - Feral: 0, - }, - HPivs: { atk: 30, def: 30 }, - HPdvs: { def: 13 }, - }, - normal: { - damageTaken: { - Bug: 0, - Dark: 0, - Dragon: 0, - Electric: 0, - Fairy: 0, - Fighting: 1, - Fire: 0, - Flying: 0, - Ghost: 3, - Grass: 0, - Ground: 0, - Ice: 0, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 0, - Steel: 0, - Water: 0, - Crystal: 0, - Feral: 1, - }, - }, - poison: { - damageTaken: { - psn: 3, - tox: 3, - Bug: 2, - Dark: 0, - Dragon: 0, - Electric: 0, - Fairy: 2, - Fighting: 2, - Fire: 0, - Flying: 0, - Ghost: 0, - Grass: 2, - Ground: 1, - Ice: 0, - Normal: 0, - Poison: 2, - Psychic: 1, - Rock: 0, - Steel: 0, - Water: 0, - Crystal: 0, - Feral: 2, - }, - HPivs: { def: 30, spa: 30, spd: 30 }, - HPdvs: { atk: 12, def: 14 }, - }, - psychic: { - damageTaken: { - Bug: 1, - Dark: 1, - Dragon: 0, - Electric: 0, - Fairy: 0, - Fighting: 2, - Fire: 0, - Flying: 0, - Ghost: 1, - Grass: 0, - Ground: 0, - Ice: 0, - Normal: 0, - Poison: 0, - Psychic: 2, - Rock: 0, - Steel: 0, - Water: 0, - Crystal: 0, - Feral: 0, - }, - HPivs: { atk: 30, spe: 30 }, - HPdvs: { def: 12 }, - }, - rock: { - damageTaken: { - sandstorm: 3, - Bug: 0, - Dark: 0, - Dragon: 0, - Electric: 0, - Fairy: 0, - Fighting: 1, - Fire: 2, - Flying: 2, - Ghost: 0, - Grass: 1, - Ground: 1, - Ice: 0, - Normal: 2, - Poison: 2, - Psychic: 0, - Rock: 0, - Steel: 1, - Water: 1, - Crystal: 0, - Feral: 0, - }, - HPivs: { def: 30, spd: 30, spe: 30 }, - HPdvs: { atk: 13, def: 12 }, - }, - steel: { - damageTaken: { - psn: 3, - tox: 3, - sandstorm: 3, - Bug: 2, - Dark: 0, - Dragon: 2, - Electric: 0, - Fairy: 2, - Fighting: 1, - Fire: 1, - Flying: 2, - Ghost: 0, - Grass: 2, - Ground: 1, - Ice: 2, - Normal: 2, - Poison: 3, - Psychic: 2, - Rock: 2, - Steel: 2, - Water: 0, - Crystal: 2, - Feral: 0, - }, - HPivs: { spd: 30 }, - HPdvs: { atk: 13 }, - }, - water: { - damageTaken: { - Bug: 0, - Dark: 0, - Dragon: 0, - Electric: 1, - Fairy: 0, - Fighting: 0, - Fire: 2, - Flying: 0, - Ghost: 0, - Grass: 1, - Ground: 0, - Ice: 2, - Normal: 0, - Poison: 0, - Psychic: 0, - Rock: 0, - Steel: 2, - Water: 2, - Crystal: 0, - Feral: 1, - }, - HPivs: { atk: 30, def: 30, spa: 30 }, - HPdvs: { atk: 14, def: 13 }, - }, - crystal: { - damageTaken: { - brn: 3, - sandstorm: 3, - Bug: 0, - Dark: 2, - Dragon: 0, - Electric: 1, - Fairy: 0, - Fighting: 1, - Fire: 2, - Flying: 0, - Ghost: 0, - Grass: 0, - Ground: 2, - Ice: 0, - Normal: 2, - Poison: 0, - Psychic: 0, - Rock: 2, - Steel: 1, - Water: 2, - Crystal: 2, - Feral: 2, - }, - }, - feral: { - damageTaken: { - slp: 3, - Bug: 0, - Dark: 0, - Dragon: 1, - Electric: 0, - Fairy: 2, - Fighting: 0, - Fire: 1, - Flying: 0, - Ghost: 2, - Grass: 0, - Ground: 0, - Ice: 2, - Normal: 0, - Poison: 1, - Psychic: 0, - Rock: 0, - Steel: 0, - Water: 0, - Crystal: 0, - Feral: 0, - }, - }, -}; diff --git a/data/mods/sixbysix/formats-data.ts b/data/mods/sixbysix/formats-data.ts new file mode 100644 index 0000000000..40e510453d --- /dev/null +++ b/data/mods/sixbysix/formats-data.ts @@ -0,0 +1,113 @@ +export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = { + kingdraclassic: { + tier: "OU", + }, + kingdrabrinepool: { + tier: "OU", + }, + kingdradruid: { + tier: "OU", + }, + kingdrabard: { + tier: "OU", + }, + kingdragourmet: { + tier: "OU", + }, + kingdraancient: { + tier: "OU", + }, + nidoqueenclassic: { + tier: "OU", + }, + nidoqueenerudite: { + tier: "OU", + }, + nidoqueenvolcanic: { + tier: "OU", + }, + nidoqueenrosegold: { + tier: "OU", + }, + nidoqueenshaman: { + tier: "OU", + }, + nidoqueenjasper: { + tier: "OU", + }, + bisharpcenturion: { + tier: "OU", + }, + bisharpsavage: { + tier: "OU", + }, + bisharpronin: { + tier: "OU", + }, + bisharpmantis: { + tier: "OU", + }, + bisharprevenant: { + tier: "OU", + }, + bisharpassassin: { + tier: "OU", + }, + corviknightthunderbird: { + tier: "OU", + }, + corviknightgenie: { + tier: "OU", + }, + corviknightyeti: { + tier: "OU", + }, + corviknightanalytical: { + tier: "OU", + }, + corviknightmartian: { + tier: "OU", + }, + corviknightfalcon: { + tier: "OU", + }, + krookodileinfernal: { + tier: "OU", + }, + krookodileabyssal: { + tier: "OU", + }, + krookodilewetlander: { + tier: "OU", + }, + krookodilecavedweller: { + tier: "OU", + }, + krookodilecliffside: { + tier: "OU", + }, + krookodilequantum: { + tier: "OU", + }, + ogerponmuerta: { + tier: "OU", + }, + ogerponeaster: { + tier: "OU", + }, + ogerponankh: { + tier: "OU", + }, + ogerponeid: { + tier: "OU", + }, + ogerponvessel: { + tier: "OU", + }, + ogerponkitsune: { + tier: "OU", + }, + ogerpontealtera: { + tier: "Illegal", + }, +}; diff --git a/data/mods/sixbysix/items.ts b/data/mods/sixbysix/items.ts new file mode 100644 index 0000000000..df1a3f90c0 --- /dev/null +++ b/data/mods/sixbysix/items.ts @@ -0,0 +1,32 @@ +export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { + cornerstonemask: { + name: "Cornerstone Mask", + spritenum: 758, + fling: { + basePower: 60, + }, + num: 2406, + gen: 9, + desc: "No competitive use.", + }, + hearthflamemask: { + name: "Hearthflame Mask", + spritenum: 760, + fling: { + basePower: 60, + }, + desc: "No competitive use.", + num: 2408, + gen: 9, + }, + wellspringmask: { + name: "Wellspring Mask", + spritenum: 759, + fling: { + basePower: 60, + }, + desc: "No competitive use.", + num: 2407, + gen: 9, + }, +}; diff --git a/data/mods/sixbysix/learnsets.ts b/data/mods/sixbysix/learnsets.ts new file mode 100644 index 0000000000..593627bd62 --- /dev/null +++ b/data/mods/sixbysix/learnsets.ts @@ -0,0 +1,2580 @@ +export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTable = { + kingdraclassic: { + learnset: { + aquajet: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + dragonhammer: ["9L1"], + dragontail: ["9L1"], + facade: ["9L1"], + flipturn: ["9L1"], + knockoff: ["9L1"], + liquidation: ["9L1"], + outrage: ["9L1"], + waterfall: ["9L1"], + wavecrash: ["9L1"], + breakingswipe: ["9L1"], + dragonrush: ["9L1"], + flail: ["9L1"], + gigaimpact: ["9L1"], + scaleshot: ["9L1"], + takedown: ["9L1"], + blizzard: ["9L1"], + clearsmog: ["9L1"], + dracometeor: ["9L1"], + dragonpulse: ["9L1"], + hydropump: ["9L1"], + icebeam: ["9L1"], + scald: ["9L1"], + surf: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + aurorabeam: ["9L1"], + bubblebeam: ["9L1"], + chillingwater: ["9L1"], + dragonbreath: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + muddywater: ["9L1"], + swift: ["9L1"], + twister: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + agility: ["9L1"], + disable: ["9L1"], + dragondance: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + dragoncheer: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + scaryface: ["9L1"], + smokescreen: ["9L1"], + snowscape: ["9L1"], + splash: ["9L1"], + yawn: ["9L1"], + }, + }, + kingdrabrinepool: { + learnset: { + gunkshot: ["9L1"], + mortalspin: ["9L1"], + sludgebomb: ["9L1"], + sludgewave: ["9L1"], + toxic: ["9L1"], + watershuriken: ["9L1"], + acid: ["9L1"], + acidspray: ["9L1"], + aquaring: ["9L1"], + sludge: ["9L1"], + venoshock: ["9L1"], + aquajet: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + dragontail: ["9L1"], + facade: ["9L1"], + flipturn: ["9L1"], + knockoff: ["9L1"], + liquidation: ["9L1"], + waterfall: ["9L1"], + wavecrash: ["9L1"], + flail: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + clearsmog: ["9L1"], + hydropump: ["9L1"], + scald: ["9L1"], + surf: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + bubblebeam: ["9L1"], + chillingwater: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + muddywater: ["9L1"], + swift: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + agility: ["9L1"], + disable: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + scaryface: ["9L1"], + smokescreen: ["9L1"], + snowscape: ["9L1"], + splash: ["9L1"], + yawn: ["9L1"], + }, + }, + nidoqueenclassic: { + learnset: { + aquatail: ["9L1"], + barbbarrage: ["9L1"], + bodyslam: ["9L1"], + brickbreak: ["9L1"], + counter: ["9L1"], + crunch: ["9L1"], + dragontail: ["9L1"], + drillrun: ["9L1"], + earthquake: ["9L1"], + facade: ["9L1"], + firepunch: ["9L1"], + focuspunch: ["9L1"], + highhorsepower: ["9L1"], + icepunch: ["9L1"], + outrage: ["9L1"], + poisonjab: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + seismictoss: ["9L1"], + shadowclaw: ["9L1"], + smackdown: ["9L1"], + stoneedge: ["9L1"], + suckerpunch: ["9L1"], + superfang: ["9L1"], + superpower: ["9L1"], + throatchop: ["9L1"], + thunderpunch: ["9L1"], + aerialace: ["9L1"], + beatup: ["9L1"], + bite: ["9L1"], + bulldoze: ["9L1"], + cut: ["9L1"], + dig: ["9L1"], + doublekick: ["9L1"], + dynamicpunch: ["9L1"], + fissure: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + furyswipes: ["9L1"], + gigaimpact: ["9L1"], + headbutt: ["9L1"], + horndrill: ["9L1"], + irontail: ["9L1"], + megakick: ["9L1"], + payday: ["9L1"], + poisonfang: ["9L1"], + poisonsting: ["9L1"], + poisontail: ["9L1"], + rocksmash: ["9L1"], + rocktomb: ["9L1"], + sandtomb: ["9L1"], + scratch: ["9L1"], + stompingtantrum: ["9L1"], + strength: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + blizzard: ["9L1"], + dragonpulse: ["9L1"], + earthpower: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + focusblast: ["9L1"], + hex: ["9L1"], + icebeam: ["9L1"], + shadowball: ["9L1"], + sludgebomb: ["9L1"], + sludgewave: ["9L1"], + surf: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + bubblebeam: ["9L1"], + echoedvoice: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + incinerate: ["9L1"], + mudshot: ["9L1"], + mudslap: ["9L1"], + round: ["9L1"], + shockwave: ["9L1"], + snore: ["9L1"], + uproar: ["9L1"], + venoshock: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + disable: ["9L1"], + honeclaws: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roar: ["9L1"], + slackoff: ["9L1"], + sleeptalk: ["9L1"], + spikes: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + toxicspikes: ["9L1"], + wish: ["9L1"], + attract: ["9L1"], + charm: ["9L1"], + confide: ["9L1"], + defensecurl: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + flatter: ["9L1"], + focusenergy: ["9L1"], + growl: ["9L1"], + helpinghand: ["9L1"], + mimic: ["9L1"], + quash: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + sunnyday: ["9L1"], + supersonic: ["9L1"], + swagger: ["9L1"], + tailwhip: ["9L1"], + torment: ["9L1"], + }, + }, + nidoqueenerudite: { + learnset: { + calmmind: ["9L1"], + chillyreception: ["9L1"], + expandingforce: ["9L1"], + futuresight: ["9L1"], + psychic: ["9L1"], + psychicnoise: ["9L1"], + psyshock: ["9L1"], + trickroom: ["9L1"], + zenheadbutt: ["9L1"], + amnesia: ["9L1"], + confusion: ["9L1"], + healpulse: ["9L1"], + imprison: ["9L1"], + magicroom: ["9L1"], + psybeam: ["9L1"], + psychicterrain: ["9L1"], + skillswap: ["9L1"], + wonderroom: ["9L1"], + aquatail: ["9L1"], + bodyslam: ["9L1"], + counter: ["9L1"], + crunch: ["9L1"], + dragontail: ["9L1"], + drillrun: ["9L1"], + earthquake: ["9L1"], + facade: ["9L1"], + firepunch: ["9L1"], + highhorsepower: ["9L1"], + icepunch: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + seismictoss: ["9L1"], + shadowclaw: ["9L1"], + smackdown: ["9L1"], + stoneedge: ["9L1"], + superfang: ["9L1"], + throatchop: ["9L1"], + thunderpunch: ["9L1"], + aerialace: ["9L1"], + beatup: ["9L1"], + bite: ["9L1"], + bulldoze: ["9L1"], + cut: ["9L1"], + dig: ["9L1"], + doublekick: ["9L1"], + fissure: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + furyswipes: ["9L1"], + gigaimpact: ["9L1"], + headbutt: ["9L1"], + horndrill: ["9L1"], + irontail: ["9L1"], + megakick: ["9L1"], + payday: ["9L1"], + rocksmash: ["9L1"], + rocktomb: ["9L1"], + sandtomb: ["9L1"], + scratch: ["9L1"], + stompingtantrum: ["9L1"], + strength: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + blizzard: ["9L1"], + dragonpulse: ["9L1"], + earthpower: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + focusblast: ["9L1"], + icebeam: ["9L1"], + shadowball: ["9L1"], + surf: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + bubblebeam: ["9L1"], + echoedvoice: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + incinerate: ["9L1"], + mudshot: ["9L1"], + mudslap: ["9L1"], + round: ["9L1"], + shockwave: ["9L1"], + snore: ["9L1"], + uproar: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + disable: ["9L1"], + honeclaws: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roar: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + wish: ["9L1"], + attract: ["9L1"], + charm: ["9L1"], + confide: ["9L1"], + defensecurl: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + flatter: ["9L1"], + focusenergy: ["9L1"], + growl: ["9L1"], + helpinghand: ["9L1"], + mimic: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + sunnyday: ["9L1"], + supersonic: ["9L1"], + tailwhip: ["9L1"], + }, + }, + bisharpcenturion: { + learnset: { + bodypress: ["9L1"], + brickbreak: ["9L1"], + bulletpunch: ["9L1"], + drainpunch: ["9L1"], + facade: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + hammerarm: ["9L1"], + ironhead: ["9L1"], + lowkick: ["9L1"], + nightslash: ["9L1"], + poisonjab: ["9L1"], + shadowclaw: ["9L1"], + superpower: ["9L1"], + xscissor: ["9L1"], + bulldoze: ["9L1"], + dig: ["9L1"], + dynamicpunch: ["9L1"], + falseswipe: ["9L1"], + feint: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + gigaimpact: ["9L1"], + guillotine: ["9L1"], + headbutt: ["9L1"], + lowsweep: ["9L1"], + metalburst: ["9L1"], + metalclaw: ["9L1"], + retaliate: ["9L1"], + reversal: ["9L1"], + scratch: ["9L1"], + slash: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + upperhand: ["9L1"], + airslash: ["9L1"], + flashcannon: ["9L1"], + focusblast: ["9L1"], + grassknot: ["9L1"], + steelbeam: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + hyperbeam: ["9L1"], + bulkup: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + irondefense: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + swordsdance: ["9L1"], + taunt: ["9L1"], + thunderwave: ["9L1"], + coaching: ["9L1"], + endure: ["9L1"], + leer: ["9L1"], + meanlook: ["9L1"], + metalsound: ["9L1"], + sandstorm: ["9L1"], + sunnyday: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + torment: ["9L1"], + wideguard: ["9L1"], + }, + }, + bisharpsavage: { + learnset: { + knockoff: ["9L1"], + powerwhip: ["9L1"], + leafblade: ["9L1"], + bulletseed: ["9L1"], + grassyglide: ["9L1"], + seedbomb: ["9L1"], + leechseed: ["9L1"], + vinewhip: ["9L1"], + branchpoke: ["9L1"], + leafage: ["9L1"], + megadrain: ["9L1"], + absorb: ["9L1"], + grassyterrain: ["9L1"], + razorleaf: ["9L1"], + bodypress: ["9L1"], + brickbreak: ["9L1"], + bulletpunch: ["9L1"], + facade: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + ironhead: ["9L1"], + nightslash: ["9L1"], + poisonjab: ["9L1"], + superpower: ["9L1"], + xscissor: ["9L1"], + bulldoze: ["9L1"], + dig: ["9L1"], + dynamicpunch: ["9L1"], + falseswipe: ["9L1"], + feint: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + gigaimpact: ["9L1"], + guillotine: ["9L1"], + headbutt: ["9L1"], + lowsweep: ["9L1"], + metalburst: ["9L1"], + metalclaw: ["9L1"], + retaliate: ["9L1"], + reversal: ["9L1"], + scratch: ["9L1"], + slash: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + flashcannon: ["9L1"], + grassknot: ["9L1"], + steelbeam: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + hyperbeam: ["9L1"], + bulkup: ["9L1"], + curse: ["9L1"], + irondefense: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + thunderwave: ["9L1"], + coaching: ["9L1"], + endure: ["9L1"], + leer: ["9L1"], + meanlook: ["9L1"], + metalsound: ["9L1"], + sandstorm: ["9L1"], + sunnyday: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + torment: ["9L1"], + wideguard: ["9L1"], + }, + }, + corviknightthunderbird: { + learnset: { + acrobatics: ["9L1"], + bodypress: ["9L1"], + bodyslam: ["9L1"], + bravebird: ["9L1"], + doubleedge: ["9L1"], + drillpeck: ["9L1"], + facade: ["9L1"], + supercellslam: ["9L1"], + uturn: ["9L1"], + aerialace: ["9L1"], + dualwingbeat: ["9L1"], + fly: ["9L1"], + furyattack: ["9L1"], + gigaimpact: ["9L1"], + peck: ["9L1"], + pluck: ["9L1"], + powertrip: ["9L1"], + skyattack: ["9L1"], + spark: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + wildcharge: ["9L1"], + airslash: ["9L1"], + discharge: ["9L1"], + heatwave: ["9L1"], + hurricane: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + voltswitch: ["9L1"], + aircutter: ["9L1"], + chargebeam: ["9L1"], + electroball: ["9L1"], + hyperbeam: ["9L1"], + swift: ["9L1"], + thundershock: ["9L1"], + zapcannon: ["9L1"], + agility: ["9L1"], + curse: ["9L1"], + defog: ["9L1"], + honeclaws: ["9L1"], + irondefense: ["9L1"], + lightscreen: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roost: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + tailwind: ["9L1"], + electricterrain: ["9L1"], + endure: ["9L1"], + faketears: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + sandattack: ["9L1"], + scaryface: ["9L1"], + screech: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + }, + }, + corviknightgenie: { + learnset: { + calmmind: ["9L1"], + earthpower: ["9L1"], + earthquake: ["9L1"], + powergem: ["9L1"], + sandsearstorm: ["9L1"], + scorchingsands: ["9L1"], + stealthrock: ["9L1"], + dig: ["9L1"], + sandstorm: ["9L1"], + acrobatics: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + facade: ["9L1"], + uturn: ["9L1"], + aerialace: ["9L1"], + dualwingbeat: ["9L1"], + fly: ["9L1"], + furyattack: ["9L1"], + gigaimpact: ["9L1"], + peck: ["9L1"], + pluck: ["9L1"], + powertrip: ["9L1"], + skyattack: ["9L1"], + spark: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + heatwave: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + voltswitch: ["9L1"], + aircutter: ["9L1"], + chargebeam: ["9L1"], + electroball: ["9L1"], + hyperbeam: ["9L1"], + swift: ["9L1"], + thundershock: ["9L1"], + agility: ["9L1"], + curse: ["9L1"], + defog: ["9L1"], + honeclaws: ["9L1"], + irondefense: ["9L1"], + lightscreen: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + tailwind: ["9L1"], + electricterrain: ["9L1"], + endure: ["9L1"], + faketears: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + sandattack: ["9L1"], + scaryface: ["9L1"], + screech: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + }, + }, + krookodileinfernal: { + learnset: { + bodyslam: ["9L1"], + brickbreak: ["9L1"], + counter: ["9L1"], + crunch: ["9L1"], + doubleedge: ["9L1"], + dragonclaw: ["9L1"], + dragontail: ["9L1"], + endeavor: ["9L1"], + facade: ["9L1"], + firefang: ["9L1"], + firelash: ["9L1"], + flamecharge: ["9L1"], + flareblitz: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + gunkshot: ["9L1"], + knockoff: ["9L1"], + lashout: ["9L1"], + outrage: ["9L1"], + shadowclaw: ["9L1"], + throatchop: ["9L1"], + aerialace: ["9L1"], + bite: ["9L1"], + breakingswipe: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + powertrip: ["9L1"], + scaleshot: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + thrash: ["9L1"], + darkpulse: ["9L1"], + dragonpulse: ["9L1"], + eruption: ["9L1"], + fierywrath: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + heatwave: ["9L1"], + magmastorm: ["9L1"], + overheat: ["9L1"], + sludgebomb: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + burningjealousy: ["9L1"], + ember: ["9L1"], + firespin: ["9L1"], + hyperbeam: ["9L1"], + incinerate: ["9L1"], + inferno: ["9L1"], + snarl: ["9L1"], + curse: ["9L1"], + encore: ["9L1"], + partingshot: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + taunt: ["9L1"], + willowisp: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + leer: ["9L1"], + memento: ["9L1"], + sunnyday: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + torment: ["9L1"], + }, + }, + krookodileabyssal: { + learnset: { + dragondance: ["9L1"], + earthquake: ["9L1"], + hydropump: ["9L1"], + liquidation: ["9L1"], + stoneedge: ["9L1"], + bodyslam: ["9L1"], + brickbreak: ["9L1"], + counter: ["9L1"], + crunch: ["9L1"], + doubleedge: ["9L1"], + dragonclaw: ["9L1"], + dragontail: ["9L1"], + endeavor: ["9L1"], + facade: ["9L1"], + flamecharge: ["9L1"], + flareblitz: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + gunkshot: ["9L1"], + knockoff: ["9L1"], + lashout: ["9L1"], + outrage: ["9L1"], + shadowclaw: ["9L1"], + throatchop: ["9L1"], + aerialace: ["9L1"], + bite: ["9L1"], + breakingswipe: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + powertrip: ["9L1"], + scaleshot: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + thrash: ["9L1"], + dragonpulse: ["9L1"], + sludgebomb: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + burningjealousy: ["9L1"], + ember: ["9L1"], + firespin: ["9L1"], + hyperbeam: ["9L1"], + incinerate: ["9L1"], + inferno: ["9L1"], + snarl: ["9L1"], + curse: ["9L1"], + encore: ["9L1"], + partingshot: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + taunt: ["9L1"], + willowisp: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + leer: ["9L1"], + memento: ["9L1"], + sunnyday: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + torment: ["9L1"], + }, + }, + ogerponmuerta: { + learnset: { + facade: ["9L1"], + knockoff: ["9L1"], + lashout: ["9L1"], + poltergeist: ["9L1"], + quickattack: ["9L1"], + shadowclaw: ["9L1"], + shadowsneak: ["9L1"], + throatchop: ["9L1"], + uturn: ["9L1"], + astonish: ["9L1"], + falseswipe: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + phantomforce: ["9L1"], + retaliate: ["9L1"], + rocktomb: ["9L1"], + slam: ["9L1"], + takedown: ["9L1"], + dazzlinggleam: ["9L1"], + drainingkiss: ["9L1"], + fleurcannon: ["9L1"], + hex: ["9L1"], + nightshade: ["9L1"], + shadowball: ["9L1"], + taunt: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + disarmingvoice: ["9L1"], + icywind: ["9L1"], + hyperbeam: ["9L1"], + batonpass: ["9L1"], + curse: ["9L1"], + destinybond: ["9L1"], + disable: ["9L1"], + perishsong: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + thunderwave: ["9L1"], + trick: ["9L1"], + trickroom: ["9L1"], + willowisp: ["9L1"], + babydolleyes: ["9L1"], + charm: ["9L1"], + confuseray: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + followme: ["9L1"], + gravity: ["9L1"], + growth: ["9L1"], + helpinghand: ["9L1"], + imprison: ["9L1"], + magicroom: ["9L1"], + metronome: ["9L1"], + mistyterrain: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + }, + }, + ogerponeaster: { + learnset: { + bodyslam: ["9L1"], + calmmind: ["9L1"], + hypervoice: ["9L1"], + moonblast: ["9L1"], + mysticalfire: ["9L1"], + playrough: ["9L1"], + softboiled: ["9L1"], + springtidestorm: ["9L1"], + stealthrock: ["9L1"], + aromaticmist: ["9L1"], + celebrate: ["9L1"], + confide: ["9L1"], + covet: ["9L1"], + decorate: ["9L1"], + feint: ["9L1"], + playnice: ["9L1"], + safeguard: ["9L1"], + snore: ["9L1"], + stuffcheeks: ["9L1"], + sweetkiss: ["9L1"], + uproar: ["9L1"], + facade: ["9L1"], + knockoff: ["9L1"], + quickattack: ["9L1"], + throatchop: ["9L1"], + uturn: ["9L1"], + falseswipe: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + phantomforce: ["9L1"], + retaliate: ["9L1"], + rocktomb: ["9L1"], + slam: ["9L1"], + takedown: ["9L1"], + dazzlinggleam: ["9L1"], + drainingkiss: ["9L1"], + taunt: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + disarmingvoice: ["9L1"], + icywind: ["9L1"], + hyperbeam: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + thunderwave: ["9L1"], + trick: ["9L1"], + babydolleyes: ["9L1"], + charm: ["9L1"], + confuseray: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + followme: ["9L1"], + gravity: ["9L1"], + growth: ["9L1"], + helpinghand: ["9L1"], + imprison: ["9L1"], + metronome: ["9L1"], + mistyterrain: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + }, + }, + ogerponankh: { + learnset: { + swordsdance: ["9L1"], + earthquake: ["9L1"], + earthpower: ["9L1"], + darkpulse: ["9L1"], + stoneedge: ["9L1"], + powergem: ["9L1"], + facade: ["9L1"], + knockoff: ["9L1"], + poltergeist: ["9L1"], + shadowclaw: ["9L1"], + throatchop: ["9L1"], + uturn: ["9L1"], + astonish: ["9L1"], + falseswipe: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + phantomforce: ["9L1"], + retaliate: ["9L1"], + rocktomb: ["9L1"], + slam: ["9L1"], + takedown: ["9L1"], + dazzlinggleam: ["9L1"], + hex: ["9L1"], + shadowball: ["9L1"], + taunt: ["9L1"], + terablast: ["9L1"], + disarmingvoice: ["9L1"], + icywind: ["9L1"], + hyperbeam: ["9L1"], + batonpass: ["9L1"], + destinybond: ["9L1"], + perishsong: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + trick: ["9L1"], + babydolleyes: ["9L1"], + charm: ["9L1"], + confuseray: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + followme: ["9L1"], + gravity: ["9L1"], + growth: ["9L1"], + helpinghand: ["9L1"], + imprison: ["9L1"], + magicroom: ["9L1"], + metronome: ["9L1"], + mistyterrain: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + }, + }, + kingdradruid: { + learnset: { + bodyslam: ["9L1"], + doubleedge: ["9L1"], + dragontail: ["9L1"], + facade: ["9L1"], + ironhead: ["9L1"], + outrage: ["9L1"], + scaleshot: ["9L1"], + smartstrike: ["9L1"], + breakingswipe: ["9L1"], + dragonrush: ["9L1"], + flail: ["9L1"], + gigaimpact: ["9L1"], + hardpress: ["9L1"], + metalburst: ["9L1"], + steelwing: ["9L1"], + takedown: ["9L1"], + doomdesire: ["9L1"], + dracometeor: ["9L1"], + dragonpulse: ["9L1"], + flamethrower: ["9L1"], + flashcannon: ["9L1"], + hydropump: ["9L1"], + icebeam: ["9L1"], + steelbeam: ["9L1"], + tachyoncutter: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + aurorabeam: ["9L1"], + bubblebeam: ["9L1"], + chillingwater: ["9L1"], + dragonbreath: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + swift: ["9L1"], + twister: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + calmmind: ["9L1"], + disable: ["9L1"], + partingshot: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + substitute: ["9L1"], + dragoncheer: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + leer: ["9L1"], + metalsound: ["9L1"], + raindance: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + smokescreen: ["9L1"], + snowscape: ["9L1"], + splash: ["9L1"], + yawn: ["9L1"], + }, + }, + nidoqueenvolcanic: { + learnset: { + bodyslam: ["9L1"], + brickbreak: ["9L1"], + crunch: ["9L1"], + dragontail: ["9L1"], + drillrun: ["9L1"], + dynamicpunch: ["9L1"], + earthquake: ["9L1"], + facade: ["9L1"], + firepunch: ["9L1"], + flareblitz: ["9L1"], + focuspunch: ["9L1"], + headbutt: ["9L1"], + heatcrash: ["9L1"], + highhorsepower: ["9L1"], + outrage: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + seismictoss: ["9L1"], + stoneedge: ["9L1"], + suckerpunch: ["9L1"], + superfang: ["9L1"], + superpower: ["9L1"], + temperflare: ["9L1"], + throatchop: ["9L1"], + thunderpunch: ["9L1"], + aerialace: ["9L1"], + beatup: ["9L1"], + bite: ["9L1"], + bulldoze: ["9L1"], + counter: ["9L1"], + dig: ["9L1"], + doublekick: ["9L1"], + fissure: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + furyswipes: ["9L1"], + gigaimpact: ["9L1"], + horndrill: ["9L1"], + irontail: ["9L1"], + megakick: ["9L1"], + payday: ["9L1"], + poisontail: ["9L1"], + rocksmash: ["9L1"], + sandtomb: ["9L1"], + scratch: ["9L1"], + stompingtantrum: ["9L1"], + strength: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + dragonpulse: ["9L1"], + earthpower: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + focusblast: ["9L1"], + icebeam: ["9L1"], + lavaplume: ["9L1"], + meteorbeam: ["9L1"], + overheat: ["9L1"], + powergem: ["9L1"], + shadowball: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + echoedvoice: ["9L1"], + ember: ["9L1"], + firespin: ["9L1"], + hyperbeam: ["9L1"], + incinerate: ["9L1"], + mudshot: ["9L1"], + mudslap: ["9L1"], + round: ["9L1"], + shockwave: ["9L1"], + snore: ["9L1"], + uproar: ["9L1"], + curse: ["9L1"], + disable: ["9L1"], + honeclaws: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roar: ["9L1"], + stealthrock: ["9L1"], + spikes: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + willowisp: ["9L1"], + wish: ["9L1"], + attract: ["9L1"], + charm: ["9L1"], + confide: ["9L1"], + defensecurl: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + flatter: ["9L1"], + focusenergy: ["9L1"], + followme: ["9L1"], + growl: ["9L1"], + helpinghand: ["9L1"], + mimic: ["9L1"], + quash: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + sleeptalk: ["9L1"], + sunnyday: ["9L1"], + supersonic: ["9L1"], + swagger: ["9L1"], + tailwhip: ["9L1"], + torment: ["9L1"], + }, + }, + bisharpronin: { + learnset: { + barbbarrage: ["9L1"], + bodypress: ["9L1"], + brickbreak: ["9L1"], + drainpunch: ["9L1"], + dynamicpunch: ["9L1"], + facade: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + headbutt: ["9L1"], + lowkick: ["9L1"], + mortalspin: ["9L1"], + nightslash: ["9L1"], + poisonjab: ["9L1"], + sacredsword: ["9L1"], + shadowclaw: ["9L1"], + uturn: ["9L1"], + xscissor: ["9L1"], + bulldoze: ["9L1"], + crosspoison: ["9L1"], + dig: ["9L1"], + falseswipe: ["9L1"], + feint: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + gigaimpact: ["9L1"], + guillotine: ["9L1"], + lowsweep: ["9L1"], + poisonsting: ["9L1"], + retaliate: ["9L1"], + reversal: ["9L1"], + scratch: ["9L1"], + slash: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + upperhand: ["9L1"], + airslash: ["9L1"], + focusblast: ["9L1"], + sludgebomb: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + acid: ["9L1"], + acidspray: ["9L1"], + hyperbeam: ["9L1"], + venoshock: ["9L1"], + detect: ["9L1"], + encore: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + toxicspikes: ["9L1"], + coaching: ["9L1"], + endure: ["9L1"], + leer: ["9L1"], + meanlook: ["9L1"], + poisongas: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + sunnyday: ["9L1"], + torment: ["9L1"], + wideguard: ["9L1"], + }, + }, + corviknightyeti: { + learnset: { + acrobatics: ["9L1"], + bravebird: ["9L1"], + doubleedge: ["9L1"], + drillpeck: ["9L1"], + dualwingbeat: ["9L1"], + facade: ["9L1"], + iceshard: ["9L1"], + icespinner: ["9L1"], + iciclespear: ["9L1"], + aerialace: ["9L1"], + fly: ["9L1"], + furyattack: ["9L1"], + gigaimpact: ["9L1"], + peck: ["9L1"], + pluck: ["9L1"], + skyattack: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + airslash: ["9L1"], + bleakwindstorm: ["9L1"], + blizzard: ["9L1"], + hurricane: ["9L1"], + icebeam: ["9L1"], + terablast: ["9L1"], + voltswitch: ["9L1"], + weatherball: ["9L1"], + aircutter: ["9L1"], + chillingwater: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + powdersnow: ["9L1"], + swift: ["9L1"], + waterpulse: ["9L1"], + curse: ["9L1"], + defog: ["9L1"], + encore: ["9L1"], + haze: ["9L1"], + lightscreen: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roost: ["9L1"], + substitute: ["9L1"], + tailwind: ["9L1"], + endure: ["9L1"], + faketears: ["9L1"], + leer: ["9L1"], + mist: ["9L1"], + sandattack: ["9L1"], + scaryface: ["9L1"], + screech: ["9L1"], + sleeptalk: ["9L1"], + snowscape: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + }, + }, + krookodilewetlander: { + learnset: { + aquajet: ["9L1"], + bodyslam: ["9L1"], + brickbreak: ["9L1"], + bulletseed: ["9L1"], + crunch: ["9L1"], + doubleedge: ["9L1"], + dragonclaw: ["9L1"], + dragontail: ["9L1"], + endeavor: ["9L1"], + facade: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + gunkshot: ["9L1"], + knockoff: ["9L1"], + lashout: ["9L1"], + leafblade: ["9L1"], + liquidation: ["9L1"], + rapidspin: ["9L1"], + scaleshot: ["9L1"], + waterfall: ["9L1"], + wavecrash: ["9L1"], + woodhammer: ["9L1"], + aerialace: ["9L1"], + bite: ["9L1"], + breakingswipe: ["9L1"], + counter: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + thrash: ["9L1"], + dragonpulse: ["9L1"], + gigadrain: ["9L1"], + inferno: ["9L1"], + sludgebomb: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + hyperbeam: ["9L1"], + megadrain: ["9L1"], + snarl: ["9L1"], + whirlpool: ["9L1"], + curse: ["9L1"], + encore: ["9L1"], + leechseed: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + strengthsap: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + synthesis: ["9L1"], + taunt: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + leer: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + torment: ["9L1"], + }, + }, + krookodilecavedweller: { + learnset: { + bodyslam: ["9L1"], + doubleedge: ["9L1"], + dragonclaw: ["9L1"], + earthquake: ["9L1"], + endeavor: ["9L1"], + explosion: ["9L1"], + facade: ["9L1"], + firefang: ["9L1"], + firelash: ["9L1"], + flamecharge: ["9L1"], + flareblitz: ["9L1"], + knockoff: ["9L1"], + rapidspin: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + scaleshot: ["9L1"], + stoneedge: ["9L1"], + aerialace: ["9L1"], + breakingswipe: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + thrash: ["9L1"], + dragonpulse: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + heatwave: ["9L1"], + inferno: ["9L1"], + overheat: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + burningjealousy: ["9L1"], + ember: ["9L1"], + firespin: ["9L1"], + hyperbeam: ["9L1"], + incinerate: ["9L1"], + curse: ["9L1"], + encore: ["9L1"], + lightscreen: ["9L1"], + memento: ["9L1"], + partingshot: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + taunt: ["9L1"], + willowisp: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + leer: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + tarshot: ["9L1"], + torment: ["9L1"], + }, + }, + ogerponeid: { + learnset: { + knockoff: ["9L1"], + liquidation: ["9L1"], + rapidspin: ["9L1"], + shadowclaw: ["9L1"], + wavecrash: ["9L1"], + astonish: ["9L1"], + falseswipe: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + lick: ["9L1"], + retaliate: ["9L1"], + slam: ["9L1"], + takedown: ["9L1"], + hex: ["9L1"], + moonblast: ["9L1"], + surf: ["9L1"], + shadowball: ["9L1"], + chillingwater: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + watergun: ["9L1"], + waterpledge: ["9L1"], + waterpulse: ["9L1"], + batonpass: ["9L1"], + healbell: ["9L1"], + lunarblessing: ["9L1"], + lunardance: ["9L1"], + protect: ["9L1"], + recover: ["9L1"], + rest: ["9L1"], + spikes: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + thunderwave: ["9L1"], + toxic: ["9L1"], + aquaring: ["9L1"], + babydolleyes: ["9L1"], + celebrate: ["9L1"], + confuseray: ["9L1"], + cosmicpower: ["9L1"], + decorate: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + followme: ["9L1"], + gravity: ["9L1"], + growth: ["9L1"], + helpinghand: ["9L1"], + imprison: ["9L1"], + instruct: ["9L1"], + lifedew: ["9L1"], + magicroom: ["9L1"], + metronome: ["9L1"], + mistyterrain: ["9L1"], + raindance: ["9L1"], + sleeptalk: ["9L1"], + stuffcheeks: ["9L1"], + }, + }, + corviknightanalytical: { + learnset: { + acrobatics: ["9L1"], + bodypress: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + facade: ["9L1"], + supercellslam: ["9L1"], + uturn: ["9L1"], + zenheadbutt: ["9L1"], + aerialace: ["9L1"], + dualwingbeat: ["9L1"], + fly: ["9L1"], + furyattack: ["9L1"], + gigaimpact: ["9L1"], + peck: ["9L1"], + pluck: ["9L1"], + skyattack: ["9L1"], + spark: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + wildcharge: ["9L1"], + discharge: ["9L1"], + heatwave: ["9L1"], + psychic: ["9L1"], + psyshock: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + voltswitch: ["9L1"], + chargebeam: ["9L1"], + electroball: ["9L1"], + hyperbeam: ["9L1"], + swift: ["9L1"], + thundershock: ["9L1"], + psybeam: ["9L1"], + zapcannon: ["9L1"], + agility: ["9L1"], + calmmind: ["9L1"], + curse: ["9L1"], + lightscreen: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roost: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + electricterrain: ["9L1"], + endure: ["9L1"], + faketears: ["9L1"], + leer: ["9L1"], + psychicterrain: ["9L1"], + raindance: ["9L1"], + sandattack: ["9L1"], + scaryface: ["9L1"], + screech: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + }, + }, + bisharpmantis: { + learnset: { + ceaselessedge: ["9L1"], + facade: ["9L1"], + bitterblade: ["9L1"], + firstimpression: ["9L1"], + foulplay: ["9L1"], + leechlife: ["9L1"], + lowkick: ["9L1"], + nightslash: ["9L1"], + poisonjab: ["9L1"], + shadowclaw: ["9L1"], + suckerpunch: ["9L1"], + knockoff: ["9L1"], + xscissor: ["9L1"], + bulldoze: ["9L1"], + dig: ["9L1"], + falseswipe: ["9L1"], + feint: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + gigaimpact: ["9L1"], + guillotine: ["9L1"], + retaliate: ["9L1"], + reversal: ["9L1"], + scratch: ["9L1"], + slash: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + solarblade: ["9L1"], + darkpulse: ["9L1"], + bugbuzz: ["9L1"], + snarl: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + hyperbeam: ["9L1"], + agility: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + swordsdance: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + endure: ["9L1"], + leer: ["9L1"], + meanlook: ["9L1"], + stringshot: ["9L1"], + sunnyday: ["9L1"], + scaryface: ["9L1"], + spite: ["9L1"], + torment: ["9L1"], + wideguard: ["9L1"], + }, + }, + nidoqueenrosegold: { + learnset: { + aquatail: ["9L1"], + bodyslam: ["9L1"], + brickbreak: ["9L1"], + crunch: ["9L1"], + dragontail: ["9L1"], + drillrun: ["9L1"], + dynamicpunch: ["9L1"], + facade: ["9L1"], + firepunch: ["9L1"], + focuspunch: ["9L1"], + headbutt: ["9L1"], + icepunch: ["9L1"], + poisonjab: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + seismictoss: ["9L1"], + shadowclaw: ["9L1"], + stoneedge: ["9L1"], + suckerpunch: ["9L1"], + superfang: ["9L1"], + superpower: ["9L1"], + throatchop: ["9L1"], + aerialace: ["9L1"], + beatup: ["9L1"], + bite: ["9L1"], + bulldoze: ["9L1"], + counter: ["9L1"], + dig: ["9L1"], + doublekick: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + furyswipes: ["9L1"], + gigaimpact: ["9L1"], + horndrill: ["9L1"], + irontail: ["9L1"], + megakick: ["9L1"], + payday: ["9L1"], + poisonfang: ["9L1"], + poisonsting: ["9L1"], + poisontail: ["9L1"], + rocksmash: ["9L1"], + sandtomb: ["9L1"], + scratch: ["9L1"], + stompingtantrum: ["9L1"], + strength: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + blizzard: ["9L1"], + dragonpulse: ["9L1"], + energyball: ["9L1"], + flamethrower: ["9L1"], + focusblast: ["9L1"], + gigadrain: ["9L1"], + hex: ["9L1"], + leafstorm: ["9L1"], + shadowball: ["9L1"], + sludgebomb: ["9L1"], + sludgewave: ["9L1"], + surf: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + earthpower: ["9L1"], + absorb: ["9L1"], + bubblebeam: ["9L1"], + echoedvoice: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + incinerate: ["9L1"], + mudslap: ["9L1"], + round: ["9L1"], + shockwave: ["9L1"], + snore: ["9L1"], + uproar: ["9L1"], + venoshock: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + disable: ["9L1"], + honeclaws: ["9L1"], + leechseed: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roar: ["9L1"], + slackoff: ["9L1"], + spikes: ["9L1"], + spikyshield: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + toxicspikes: ["9L1"], + wish: ["9L1"], + attract: ["9L1"], + charm: ["9L1"], + confide: ["9L1"], + defensecurl: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + flatter: ["9L1"], + focusenergy: ["9L1"], + growl: ["9L1"], + helpinghand: ["9L1"], + mimic: ["9L1"], + quash: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + sleeptalk: ["9L1"], + sunnyday: ["9L1"], + supersonic: ["9L1"], + swagger: ["9L1"], + tailwhip: ["9L1"], + torment: ["9L1"], + }, + }, + kingdrabard: { + learnset: { + aquajet: ["9L1"], + bodyslam: ["9L1"], + doubleedge: ["9L1"], + facade: ["9L1"], + flipturn: ["9L1"], + knockoff: ["9L1"], + waterfall: ["9L1"], + liquidation: ["9L1"], + spiritbreak: ["9L1"], + breakingswipe: ["9L1"], + flail: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + alluringvoice: ["9L1"], + blizzard: ["9L1"], + clearsmog: ["9L1"], + hydropump: ["9L1"], + icebeam: ["9L1"], + moonblast: ["9L1"], + psychicnoise: ["9L1"], + scald: ["9L1"], + surf: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + aurorabeam: ["9L1"], + bubblebeam: ["9L1"], + chillingwater: ["9L1"], + dragonbreath: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + muddywater: ["9L1"], + swift: ["9L1"], + twister: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + agility: ["9L1"], + disable: ["9L1"], + moonlight: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + substitute: ["9L1"], + dragoncheer: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + smokescreen: ["9L1"], + snowscape: ["9L1"], + splash: ["9L1"], + yawn: ["9L1"], + }, + }, + kingdragourmet: { + learnset: { + bodyslam: ["9L1"], + doubleedge: ["9L1"], + dragontail: ["9L1"], + facade: ["9L1"], + fakeout: ["9L1"], + flipturn: ["9L1"], + knockoff: ["9L1"], + orderup: ["9L1"], + outrage: ["9L1"], + rapidspin: ["9L1"], + scaleshot: ["9L1"], + breakingswipe: ["9L1"], + dragonrush: ["9L1"], + flail: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + clearsmog: ["9L1"], + dracometeor: ["9L1"], + terablast: ["9L1"], + chillingwater: ["9L1"], + dragonbreath: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + swift: ["9L1"], + twister: ["9L1"], + whirlpool: ["9L1"], + banefulbunker: ["9L1"], + defog: ["9L1"], + disable: ["9L1"], + glare: ["9L1"], + healbell: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + substitute: ["9L1"], + toxic: ["9L1"], + whirlwind: ["9L1"], + wish: ["9L1"], + dragoncheer: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + smokescreen: ["9L1"], + snowscape: ["9L1"], + splash: ["9L1"], + yawn: ["9L1"], + }, + }, + nidoqueenshaman: { + learnset: { + bodyslam: ["9L1"], + brickbreak: ["9L1"], + drillrun: ["9L1"], + dynamicpunch: ["9L1"], + earthquake: ["9L1"], + facade: ["9L1"], + focuspunch: ["9L1"], + headbutt: ["9L1"], + poisonjab: ["9L1"], + poltergeist: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + seismictoss: ["9L1"], + shadowclaw: ["9L1"], + shadowsneak: ["9L1"], + superfang: ["9L1"], + superpower: ["9L1"], + aerialace: ["9L1"], + beatup: ["9L1"], + bite: ["9L1"], + bulldoze: ["9L1"], + dig: ["9L1"], + doublekick: ["9L1"], + fissure: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + furyswipes: ["9L1"], + gigaimpact: ["9L1"], + horndrill: ["9L1"], + irontail: ["9L1"], + lick: ["9L1"], + megakick: ["9L1"], + payday: ["9L1"], + poisonfang: ["9L1"], + poisonsting: ["9L1"], + poisontail: ["9L1"], + rocksmash: ["9L1"], + sandtomb: ["9L1"], + scratch: ["9L1"], + stompingtantrum: ["9L1"], + strength: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + earthpower: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + focusblast: ["9L1"], + hex: ["9L1"], + icebeam: ["9L1"], + shadowball: ["9L1"], + sludgebomb: ["9L1"], + sludgewave: ["9L1"], + surf: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + bubblebeam: ["9L1"], + echoedvoice: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + incinerate: ["9L1"], + mudshot: ["9L1"], + mudslap: ["9L1"], + round: ["9L1"], + shockwave: ["9L1"], + snore: ["9L1"], + uproar: ["9L1"], + venoshock: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + disable: ["9L1"], + honeclaws: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roar: ["9L1"], + slackoff: ["9L1"], + spikes: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + toxicspikes: ["9L1"], + willowisp: ["9L1"], + wish: ["9L1"], + attract: ["9L1"], + charm: ["9L1"], + confide: ["9L1"], + defensecurl: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + flatter: ["9L1"], + focusenergy: ["9L1"], + growl: ["9L1"], + helpinghand: ["9L1"], + mimic: ["9L1"], + quash: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + sleeptalk: ["9L1"], + sunnyday: ["9L1"], + supersonic: ["9L1"], + swagger: ["9L1"], + tailwhip: ["9L1"], + torment: ["9L1"], + }, + }, + bisharprevenant: { + learnset: { + behemothblade: ["9L1"], + brickbreak: ["9L1"], + drainpunch: ["9L1"], + facade: ["9L1"], + foulplay: ["9L1"], + headbutt: ["9L1"], + ironhead: ["9L1"], + nightslash: ["9L1"], + poisonjab: ["9L1"], + poltergeist: ["9L1"], + sacredsword: ["9L1"], + shadowclaw: ["9L1"], + shadowsneak: ["9L1"], + superpower: ["9L1"], + xscissor: ["9L1"], + bulldoze: ["9L1"], + dig: ["9L1"], + falseswipe: ["9L1"], + feint: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + gigaimpact: ["9L1"], + guillotine: ["9L1"], + lowsweep: ["9L1"], + metalburst: ["9L1"], + metalclaw: ["9L1"], + phantomforce: ["9L1"], + retaliate: ["9L1"], + reversal: ["9L1"], + scratch: ["9L1"], + slash: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + upperhand: ["9L1"], + flashcannon: ["9L1"], + focusblast: ["9L1"], + hex: ["9L1"], + nightshade: ["9L1"], + shadowball: ["9L1"], + steelbeam: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + hyperbeam: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + irondefense: ["9L1"], + protect: ["9L1"], + recover: ["9L1"], + rest: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + swordsdance: ["9L1"], + thunderwave: ["9L1"], + coaching: ["9L1"], + endure: ["9L1"], + leer: ["9L1"], + meanlook: ["9L1"], + metalsound: ["9L1"], + sandstorm: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + sunnyday: ["9L1"], + torment: ["9L1"], + wideguard: ["9L1"], + }, + }, + corviknightmartian: { + learnset: { + bodypress: ["9L1"], + bodyslam: ["9L1"], + ironhead: ["9L1"], + zenheadbutt: ["9L1"], + aerialace: ["9L1"], + dualwingbeat: ["9L1"], + fly: ["9L1"], + gigaimpact: ["9L1"], + gyroball: ["9L1"], + hardpress: ["9L1"], + psychocut: ["9L1"], + takedown: ["9L1"], + thunderbolt: ["9L1"], + psychic: ["9L1"], + doomdesire: ["9L1"], + flashcannon: ["9L1"], + psychicnoise: ["9L1"], + steelbeam: ["9L1"], + storedpower: ["9L1"], + chargebeam: ["9L1"], + hyperbeam: ["9L1"], + swift: ["9L1"], + psybeam: ["9L1"], + calmmind: ["9L1"], + defog: ["9L1"], + irondefense: ["9L1"], + lightscreen: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + sleeptalk: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + teleport: ["9L1"], + trickroom: ["9L1"], + electricterrain: ["9L1"], + endure: ["9L1"], + gravity: ["9L1"], + leer: ["9L1"], + psychicterrain: ["9L1"], + raindance: ["9L1"], + scaryface: ["9L1"], + screech: ["9L1"], + skillswap: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + }, + }, + krookodilecliffside: { + learnset: { + bodyslam: ["9L1"], + crunch: ["9L1"], + doubleedge: ["9L1"], + dragonclaw: ["9L1"], + dragontail: ["9L1"], + endeavor: ["9L1"], + facade: ["9L1"], + firefang: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + gunkshot: ["9L1"], + knockoff: ["9L1"], + powertrip: ["9L1"], + scaleshot: ["9L1"], + throatchop: ["9L1"], + aerialace: ["9L1"], + bite: ["9L1"], + breakingswipe: ["9L1"], + counter: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + thrash: ["9L1"], + darkpulse: ["9L1"], + dracometeor: ["9L1"], + dragonpulse: ["9L1"], + flamethrower: ["9L1"], + flashcannon: ["9L1"], + focusblast: ["9L1"], + inferno: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + burningjealousy: ["9L1"], + ember: ["9L1"], + firespin: ["9L1"], + hyperbeam: ["9L1"], + incinerate: ["9L1"], + snarl: ["9L1"], + curse: ["9L1"], + defog: ["9L1"], + encore: ["9L1"], + memento: ["9L1"], + partingshot: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + roost: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + leer: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + torment: ["9L1"], + }, + }, + ogerponvessel: { + learnset: { + axekick: ["9L1"], + explosion: ["9L1"], + knockoff: ["9L1"], + leechlife: ["9L1"], + lunge: ["9L1"], + rocktomb: ["9L1"], + sacredsword: ["9L1"], + thunderouskick: ["9L1"], + uturn: ["9L1"], + gigaimpact: ["9L1"], + highjumpkick: ["9L1"], + retaliate: ["9L1"], + skittersmack: ["9L1"], + slam: ["9L1"], + takedown: ["9L1"], + terablast: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + defog: ["9L1"], + destinybond: ["9L1"], + disable: ["9L1"], + encore: ["9L1"], + lightscreen: ["9L1"], + perishsong: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + spikes: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + trick: ["9L1"], + endure: ["9L1"], + gravity: ["9L1"], + growth: ["9L1"], + helpinghand: ["9L1"], + imprison: ["9L1"], + metronome: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + topsyturvy: ["9L1"], + }, + }, + kingdraancient: { + learnset: { + bodyslam: ["9L1"], + doubleedge: ["9L1"], + facade: ["9L1"], + flareblitz: ["9L1"], + flipturn: ["9L1"], + knockoff: ["9L1"], + liquidation: ["9L1"], + outrage: ["9L1"], + scaleshot: ["9L1"], + seedbomb: ["9L1"], + breakingswipe: ["9L1"], + dragonrush: ["9L1"], + flail: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + clearsmog: ["9L1"], + energyball: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + gigadrain: ["9L1"], + hydropump: ["9L1"], + leafstorm: ["9L1"], + overheat: ["9L1"], + scald: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + aurorabeam: ["9L1"], + bubblebeam: ["9L1"], + chillingwater: ["9L1"], + dragonbreath: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + muddywater: ["9L1"], + swift: ["9L1"], + twister: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + agility: ["9L1"], + disable: ["9L1"], + leechseed: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + substitute: ["9L1"], + synthesis: ["9L1"], + dragoncheer: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + smokescreen: ["9L1"], + snowscape: ["9L1"], + splash: ["9L1"], + yawn: ["9L1"], + }, + }, + nidoqueenjasper: { + learnset: { + accelerock: ["9L1"], + aquatail: ["9L1"], + bodyslam: ["9L1"], + brickbreak: ["9L1"], + crunch: ["9L1"], + dragontail: ["9L1"], + drillrun: ["9L1"], + dynamicpunch: ["9L1"], + earthquake: ["9L1"], + facade: ["9L1"], + firepunch: ["9L1"], + focuspunch: ["9L1"], + gunkshot: ["9L1"], + headbutt: ["9L1"], + highhorsepower: ["9L1"], + icepunch: ["9L1"], + outrage: ["9L1"], + poisonjab: ["9L1"], + rockblast: ["9L1"], + rockslide: ["9L1"], + rocktomb: ["9L1"], + saltcure: ["9L1"], + seismictoss: ["9L1"], + shadowclaw: ["9L1"], + stoneedge: ["9L1"], + superfang: ["9L1"], + superpower: ["9L1"], + throatchop: ["9L1"], + thunderpunch: ["9L1"], + aerialace: ["9L1"], + beatup: ["9L1"], + bite: ["9L1"], + bulldoze: ["9L1"], + counter: ["9L1"], + dig: ["9L1"], + doublekick: ["9L1"], + fissure: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + furyswipes: ["9L1"], + gigaimpact: ["9L1"], + horndrill: ["9L1"], + irontail: ["9L1"], + megakick: ["9L1"], + payday: ["9L1"], + poisonfang: ["9L1"], + poisonsting: ["9L1"], + poisontail: ["9L1"], + rocksmash: ["9L1"], + sandtomb: ["9L1"], + scratch: ["9L1"], + stompingtantrum: ["9L1"], + strength: ["9L1"], + tackle: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + blizzard: ["9L1"], + dragonpulse: ["9L1"], + earthpower: ["9L1"], + fireblast: ["9L1"], + flamethrower: ["9L1"], + focusblast: ["9L1"], + icebeam: ["9L1"], + shadowball: ["9L1"], + sludgebomb: ["9L1"], + terablast: ["9L1"], + thunder: ["9L1"], + thunderbolt: ["9L1"], + bubblebeam: ["9L1"], + echoedvoice: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + incinerate: ["9L1"], + mudshot: ["9L1"], + mudslap: ["9L1"], + round: ["9L1"], + shockwave: ["9L1"], + snore: ["9L1"], + uproar: ["9L1"], + venoshock: ["9L1"], + watergun: ["9L1"], + waterpulse: ["9L1"], + whirlpool: ["9L1"], + curse: ["9L1"], + disable: ["9L1"], + glare: ["9L1"], + honeclaws: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roar: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + toxic: ["9L1"], + attract: ["9L1"], + charm: ["9L1"], + confide: ["9L1"], + defensecurl: ["9L1"], + doubleteam: ["9L1"], + endure: ["9L1"], + flatter: ["9L1"], + focusenergy: ["9L1"], + growl: ["9L1"], + helpinghand: ["9L1"], + mimic: ["9L1"], + quash: ["9L1"], + raindance: ["9L1"], + sandstorm: ["9L1"], + sleeptalk: ["9L1"], + sunnyday: ["9L1"], + supersonic: ["9L1"], + swagger: ["9L1"], + tailwhip: ["9L1"], + torment: ["9L1"], + }, + }, + bisharpassassin: { + learnset: { + bodypress: ["9L1"], + brickbreak: ["9L1"], + drainpunch: ["9L1"], + dynamicpunch: ["9L1"], + facade: ["9L1"], + focuspunch: ["9L1"], + foulplay: ["9L1"], + hammerarm: ["9L1"], + headbutt: ["9L1"], + iceshard: ["9L1"], + icespinner: ["9L1"], + lowkick: ["9L1"], + machpunch: ["9L1"], + nightslash: ["9L1"], + poisonjab: ["9L1"], + sacredsword: ["9L1"], + shadowclaw: ["9L1"], + tripleaxel: ["9L1"], + xscissor: ["9L1"], + bulldoze: ["9L1"], + dig: ["9L1"], + falseswipe: ["9L1"], + feint: ["9L1"], + fling: ["9L1"], + furycutter: ["9L1"], + gigaimpact: ["9L1"], + guillotine: ["9L1"], + lowsweep: ["9L1"], + metalburst: ["9L1"], + metalclaw: ["9L1"], + retaliate: ["9L1"], + reversal: ["9L1"], + scratch: ["9L1"], + slash: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + upperhand: ["9L1"], + blizzard: ["9L1"], + focusblast: ["9L1"], + grassknot: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + hyperbeam: ["9L1"], + auroraveil: ["9L1"], + curse: ["9L1"], + detect: ["9L1"], + partingshot: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + taunt: ["9L1"], + coaching: ["9L1"], + endure: ["9L1"], + leer: ["9L1"], + meanlook: ["9L1"], + metalsound: ["9L1"], + sandstorm: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + sunnyday: ["9L1"], + torment: ["9L1"], + wideguard: ["9L1"], + }, + }, + corviknightfalcon: { + learnset: { + acrobatics: ["9L1"], + bodypress: ["9L1"], + bodyslam: ["9L1"], + bravebird: ["9L1"], + closecombat: ["9L1"], + doubleedge: ["9L1"], + drillpeck: ["9L1"], + dualwingbeat: ["9L1"], + facade: ["9L1"], + knockoff: ["9L1"], + lowkick: ["9L1"], + powertrip: ["9L1"], + uturn: ["9L1"], + wildcharge: ["9L1"], + aerialace: ["9L1"], + fly: ["9L1"], + flyingpress: ["9L1"], + furyattack: ["9L1"], + gigaimpact: ["9L1"], + highjumpkick: ["9L1"], + peck: ["9L1"], + pluck: ["9L1"], + skyattack: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + airslash: ["9L1"], + focusblast: ["9L1"], + heatwave: ["9L1"], + hurricane: ["9L1"], + terablast: ["9L1"], + aircutter: ["9L1"], + hyperbeam: ["9L1"], + swift: ["9L1"], + agility: ["9L1"], + curse: ["9L1"], + defog: ["9L1"], + lightscreen: ["9L1"], + protect: ["9L1"], + reflect: ["9L1"], + rest: ["9L1"], + roost: ["9L1"], + substitute: ["9L1"], + tailwind: ["9L1"], + taunt: ["9L1"], + endure: ["9L1"], + faketears: ["9L1"], + leer: ["9L1"], + raindance: ["9L1"], + sandattack: ["9L1"], + scaryface: ["9L1"], + screech: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + swagger: ["9L1"], + }, + }, + krookodilequantum: { + learnset: { + bodyslam: ["9L1"], + brickbreak: ["9L1"], + doubleshock: ["9L1"], + doubleedge: ["9L1"], + dragontail: ["9L1"], + earthquake: ["9L1"], + endeavor: ["9L1"], + facade: ["9L1"], + flamecharge: ["9L1"], + focuspunch: ["9L1"], + headsmash: ["9L1"], + knockoff: ["9L1"], + powertrip: ["9L1"], + rockblast: ["9L1"], + scaleshot: ["9L1"], + stoneedge: ["9L1"], + volttackle: ["9L1"], + aerialace: ["9L1"], + bite: ["9L1"], + breakingswipe: ["9L1"], + counter: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + takedown: ["9L1"], + thief: ["9L1"], + thrash: ["9L1"], + discharge: ["9L1"], + dragonpulse: ["9L1"], + electroshot: ["9L1"], + flamethrower: ["9L1"], + inferno: ["9L1"], + meteorbeam: ["9L1"], + powergem: ["9L1"], + sludgebomb: ["9L1"], + terablast: ["9L1"], + thunderbolt: ["9L1"], + voltswitch: ["9L1"], + weatherball: ["9L1"], + burningjealousy: ["9L1"], + electroball: ["9L1"], + ember: ["9L1"], + firespin: ["9L1"], + hyperbeam: ["9L1"], + incinerate: ["9L1"], + snarl: ["9L1"], + curse: ["9L1"], + encore: ["9L1"], + memento: ["9L1"], + partingshot: ["9L1"], + protect: ["9L1"], + recover: ["9L1"], + rest: ["9L1"], + stealthrock: ["9L1"], + substitute: ["9L1"], + switcheroo: ["9L1"], + taunt: ["9L1"], + thunderwave: ["9L1"], + charge: ["9L1"], + conversion: ["9L1"], + conversion2: ["9L1"], + eerieimpulse: ["9L1"], + electricterrain: ["9L1"], + endure: ["9L1"], + helpinghand: ["9L1"], + leer: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + sunnyday: ["9L1"], + swagger: ["9L1"], + torment: ["9L1"], + }, + }, + ogerponkitsune: { + learnset: { + aquastep: ["9L1"], + blazekick: ["9L1"], + facade: ["9L1"], + knockoff: ["9L1"], + powerwhip: ["9L1"], + rocktomb: ["9L1"], + shadowsneak: ["9L1"], + uturn: ["9L1"], + zingzap: ["9L1"], + astonish: ["9L1"], + falseswipe: ["9L1"], + fling: ["9L1"], + gigaimpact: ["9L1"], + phantomforce: ["9L1"], + retaliate: ["9L1"], + slam: ["9L1"], + takedown: ["9L1"], + aurasphere: ["9L1"], + dazzlinggleam: ["9L1"], + earthpower: ["9L1"], + flashcannon: ["9L1"], + powergem: ["9L1"], + shadowball: ["9L1"], + terablast: ["9L1"], + weatherball: ["9L1"], + disarmingvoice: ["9L1"], + hyperbeam: ["9L1"], + icywind: ["9L1"], + protect: ["9L1"], + rest: ["9L1"], + substitute: ["9L1"], + transform: ["9L1"], + trickroom: ["9L1"], + babydolleyes: ["9L1"], + charm: ["9L1"], + confuseray: ["9L1"], + endure: ["9L1"], + focusenergy: ["9L1"], + followme: ["9L1"], + gravity: ["9L1"], + growth: ["9L1"], + helpinghand: ["9L1"], + imprison: ["9L1"], + magicroom: ["9L1"], + metronome: ["9L1"], + mistyterrain: ["9L1"], + scaryface: ["9L1"], + sleeptalk: ["9L1"], + spite: ["9L1"], + }, + }, +}; diff --git a/data/mods/sixbysix/pokedex.ts b/data/mods/sixbysix/pokedex.ts new file mode 100644 index 0000000000..a06fef7146 --- /dev/null +++ b/data/mods/sixbysix/pokedex.ts @@ -0,0 +1,542 @@ +export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = { + kingdra: { + inherit: true, + otherFormes: ["Kingdra-Classic", "Kingdra-Brinepool", "Kingdra-Druid", "Kingdra-Bard", "Kingdra-Gourmet", "Kingdra-Ancient"], + formeOrder: ["Kingdra", "Kingdra-Classic", "Kingdra-Brinepool", "Kingdra-Druid", "Kingdra-Bard", "Kingdra-Gourmet", "Kingdra-Ancient"], + }, + kingdraclassic: { + num: 230, + name: "Kingdra-Classic", + baseSpecies: "Kingdra", + forme: "Classic", + types: ["Water", "Dragon"], + baseStats: { hp: 90, atk: 70, def: 80, spa: 130, spd: 90, spe: 90 }, + abilities: { 0: "Berserk", 1: "Heatproof", H: "Dry Skin" }, + heightm: 1.8, + weightkg: 152, + color: "Blue", + prevo: '', + eggGroups: ["Water 1", "Dragon"], + }, + kingdrabrinepool: { + num: 230, + name: "Kingdra-Brinepool", + baseSpecies: "Kingdra", + forme: "Brinepool", + types: ["Water", "Poison"], + baseStats: { hp: 130, atk: 35, def: 105, spa: 130, spd: 85, spe: 65 }, + abilities: { 0: "Storm Drain", 1: "Purifying Salt", H: "Dry Skin" }, + heightm: 1.8, + weightkg: 152, + color: "Blue", + prevo: '', + eggGroups: ["Water 1", "Dragon"], + }, + kingdradruid: { + num: 230, + name: "Kingdra-Druid", + baseSpecies: "Kingdra", + forme: "Druid", + types: ["Steel", "Dragon"], + baseStats: { hp: 105, atk: 65, def: 90, spa: 120, spd: 120, spe: 50 }, + abilities: { 0: "Berserk", 1: "Heatproof", H: "Water Absorb" }, + heightm: 1.8, + weightkg: 152, + color: "Blue", + prevo: '', + eggGroups: ["Water 1", "Dragon"], + }, + kingdrabard: { + num: 230, + name: "Kingdra-Bard", + baseSpecies: "Kingdra", + forme: "Bard", + types: ["Water", "Fairy"], + baseStats: { hp: 90, atk: 70, def: 80, spa: 130, spd: 100, spe: 80 }, + abilities: { 0: "Punk Rock", 1: "Cute Charm", H: "Dancer" }, + heightm: 1.8, + weightkg: 152, + color: "Blue", + prevo: '', + eggGroups: ["Water 1", "Dragon"], + }, + kingdragourmet: { + num: 230, + name: "Kingdra-Gourmet", + baseSpecies: "Kingdra", + forme: "Gourmet", + types: ["Normal", "Dragon"], + baseStats: { hp: 110, atk: 110, def: 80, spa: 90, spd: 100, spe: 60 }, + abilities: { 0: "Emergency Exit", 1: "Thick Fat", H: "Poison Heal" }, + heightm: 1.8, + weightkg: 152, + color: "Blue", + prevo: '', + eggGroups: ["Water 1", "Dragon"], + }, + kingdraancient: { + num: 230, + name: "Kingdra-Ancient", + baseSpecies: "Kingdra", + forme: "Ancient", + types: ["Fire", "Grass"], + baseStats: { hp: 89, atk: 89, def: 91, spa: 111, spd: 91, spe: 79 }, + abilities: { 0: "Competitive", 1: "Heatproof", H: "Protosynthesis" }, + heightm: 1.8, + weightkg: 152, + color: "Blue", + prevo: '', + eggGroups: ["Water 1", "Dragon"], + }, + nidoqueen: { + inherit: true, + otherFormes: ["Nidoqueen-Classic", "Nidoqueen-Erudite", "Nidoqueen-Volcanic", "Nidoqueen-Rosegold", "Nidoqueen-Shaman", "Nidoqueen-Jasper"], + formeOrder: ["Nidoqueen", "Nidoqueen-Classic", "Nidoqueen-Erudite", "Nidoqueen-Volcanic", "Nidoqueen-Rosegold", "Nidoqueen-Shaman", "Nidoqueen-Jasper"], + }, + nidoqueenclassic: { + num: 31, + name: "Nidoqueen-Classic", + baseSpecies: "Nidoqueen", + forme: "Classic", + types: ["Poison", "Ground"], + gender: "F", + baseStats: { hp: 135, atk: 115, def: 60, spa: 90, spd: 85, spe: 55 }, + abilities: { 0: "Poison Point", 1: "Cheek Pouch", H: "Serene Grace" }, + heightm: 1.3, + weightkg: 60, + color: "Blue", + prevo: '', + eggGroups: ["Undiscovered"], + }, + nidoqueenerudite: { + num: 31, + name: "Nidoqueen-Erudite", + baseSpecies: "Nidoqueen", + forme: "Erudite", + types: ["Psychic", "Ground"], + gender: "F", + baseStats: { hp: 95, atk: 100, def: 80, spa: 115, spd: 110, spe: 40 }, + abilities: { 0: "Cute Charm", 1: "Regenerator", H: "Serene Grace" }, + heightm: 1.3, + weightkg: 60, + color: "Blue", + prevo: '', + eggGroups: ["Undiscovered"], + }, + nidoqueenvolcanic: { + num: 31, + name: "Nidoqueen-Volcanic", + baseSpecies: "Nidoqueen", + forme: "Volcanic", + types: ["Fire", "Ground"], + gender: "F", + baseStats: { hp: 125, atk: 75, def: 100, spa: 110, spd: 75, spe: 55 }, + abilities: { 0: "Flame Body", 1: "Cheek Pouch", H: "Sheer Force" }, + heightm: 1.3, + weightkg: 60, + color: "Blue", + prevo: '', + eggGroups: ["Undiscovered"], + }, + nidoqueenrosegold: { + num: 31, + name: "Nidoqueen-Rosegold", + baseSpecies: "Nidoqueen", + forme: "Rosegold", + types: ["Poison", "Grass"], + gender: "F", + baseStats: { hp: 125, atk: 70, def: 100, spa: 100, spd: 85, spe: 60 }, + abilities: { 0: "Rough Skin", 1: "Cheek Pouch", H: "Shield Dust" }, + heightm: 1.3, + weightkg: 60, + color: "Blue", + prevo: '', + eggGroups: ["Undiscovered"], + }, + nidoqueenshaman: { + num: 31, + name: "Nidoqueen-Shaman", + baseSpecies: "Nidoqueen", + forme: "Shaman", + types: ["Poison", "Ghost"], + gender: "F", + baseStats: { hp: 95, atk: 120, def: 60, spa: 90, spd: 80, spe: 95 }, + abilities: { 0: "Toxic Chain", 1: "Regenerator", H: "Sheer Force" }, + heightm: 1.3, + weightkg: 60, + color: "Blue", + prevo: '', + eggGroups: ["Undiscovered"], + }, + nidoqueenjasper: { + num: 31, + name: "Nidoqueen-Jasper", + baseSpecies: "Nidoqueen", + forme: "Jasper", + types: ["Poison", "Rock"], + gender: "F", + baseStats: { hp: 135, atk: 125, def: 70, spa: 80, spd: 85, spe: 45 }, + abilities: { 0: "Clear Body", 1: "Earth Eater", H: "Sand Stream" }, + heightm: 1.3, + weightkg: 60, + color: "Blue", + prevo: '', + eggGroups: ["Undiscovered"], + }, + bisharp: { + inherit: true, + otherFormes: ["Bisharp-Centurion", "Bisharp-Savage", "Bisharp-Ronin", "Bisharp-Mantis", "Bisharp-Revenant", "Bisharp-Assassin"], + formeOrder: ["Bisharp", "Bisharp-Centurion", "Bisharp-Savage", "Bisharp-Ronin", "Bisharp-Mantis", "Bisharp-Revenant", "Bisharp-Assassin"], + }, + bisharpcenturion: { + num: 625, + name: "Bisharp-Centurion", + baseSpecies: "Bisharp", + forme: "Centurion", + types: ["Fighting", "Steel"], + baseStats: { hp: 70, atk: 140, def: 115, spa: 55, spd: 70, spe: 70 }, + abilities: { 0: "Overcoat", 1: "Technician", H: "Solar Power" }, + heightm: 1.6, + weightkg: 70, + color: "Red", + prevo: '', + eggGroups: ["Human-Like"], + }, + bisharpsavage: { + num: 625, + name: "Bisharp-Savage", + baseSpecies: "Bisharp", + forme: "Savage", + types: ["Grass", "Steel"], + baseStats: { hp: 90, atk: 110, def: 135, spa: 40, spd: 80, spe: 65 }, + abilities: { 0: "Bulletproof", 1: "Technician", H: "Leaf Guard" }, + heightm: 1.6, + weightkg: 70, + color: "Red", + prevo: '', + eggGroups: ["Human-Like"], + }, + bisharpronin: { + num: 625, + name: "Bisharp-Ronin", + baseSpecies: "Bisharp", + forme: "Ronin", + types: ["Fighting", "Poison"], + baseStats: { hp: 70, atk: 115, def: 110, spa: 45, spd: 70, spe: 110 }, + abilities: { 0: "Overcoat", 1: "Technician", H: "Dry Skin" }, + heightm: 1.6, + weightkg: 70, + color: "Red", + prevo: '', + eggGroups: ["Human-Like"], + }, + bisharpmantis: { + num: 625, + name: "Bisharp-Mantis", + baseSpecies: "Bisharp", + forme: "Mantis", + types: ["Dark", "Bug"], + baseStats: { hp: 80, atk: 120, def: 105, spa: 45, spd: 85, spe: 85 }, + abilities: { 0: "Overcoat", 1: "Sharpness", H: "Orichalcum Pulse" }, + heightm: 1.6, + weightkg: 70, + color: "Red", + prevo: '', + eggGroups: ["Human-Like"], + }, + bisharprevenant: { + num: 625, + name: "Bisharp-Revenant", + baseSpecies: "Bisharp", + forme: "Revenant", + types: ["Ghost", "Steel"], + baseStats: { hp: 80, atk: 135, def: 120, spa: 45, spd: 70, spe: 70 }, + abilities: { 0: "Magic Bounce", 1: "Mirror Armor", H: "Justified" }, + heightm: 1.6, + weightkg: 70, + color: "Red", + prevo: '', + eggGroups: ["Human-Like"], + }, + bisharpassassin: { + num: 625, + name: "Bisharp-Assassin", + baseSpecies: "Bisharp", + forme: "Assassin", + types: ["Fighting", "Ice"], + baseStats: { hp: 80, atk: 130, def: 110, spa: 55, spd: 70, spe: 75 }, + abilities: { 0: "Dazzling", 1: "No Guard", H: "Slush Rush" }, + heightm: 1.6, + weightkg: 70, + color: "Red", + prevo: '', + eggGroups: ["Human-Like"], + }, + corviknight: { + inherit: true, + otherFormes: ["Corviknight-Thunderbird", "Corviknight-Genie", "Corviknight-Yeti", "Corviknight-Analytical", "Corviknight-Martian", "Corviknight-Falcon"], + formeOrder: ["Corviknight", "Corviknight-Thunderbird", "Corviknight-Genie", "Corviknight-Yeti", "Corviknight-Analytical", "Corviknight-Martian", "Corviknight-Falcon"], + }, + corviknightthunderbird: { + num: 823, + name: "Corviknight-Thunderbird", + baseSpecies: "Corviknight", + forme: "Thunderbird", + types: ["Flying", "Electric"], + baseStats: { hp: 85, atk: 55, def: 105, spa: 115, spd: 85, spe: 85 }, + abilities: { 0: "Pickpocket", 1: "Quick Feet", H: "Drizzle" }, + heightm: 2.2, + weightkg: 75, + color: "Purple", + prevo: '', + eggGroups: ["Flying"], + }, + corviknightgenie: { + num: 823, + name: "Corviknight-Genie", + baseSpecies: "Corviknight", + forme: "Genie", + types: ["Flying", "Ground"], + baseStats: { hp: 89, atk: 45, def: 95, spa: 120, spd: 90, spe: 91 }, + abilities: { 0: "Intimidate", 1: "Sand Force", H: "Prankster" }, + heightm: 2.2, + weightkg: 75, + color: "Purple", + prevo: '', + eggGroups: ["Flying"], + }, + corviknightyeti: { + num: 823, + name: "Corviknight-Yeti", + baseSpecies: "Corviknight", + forme: "Yeti", + types: ["Flying", "Ice"], + baseStats: { hp: 85, atk: 55, def: 80, spa: 95, spd: 110, spe: 110 }, + abilities: { 0: "Mummy", 1: "Quick Feet", H: "Snow Warning" }, + heightm: 2.2, + weightkg: 75, + color: "Purple", + prevo: '', + eggGroups: ["Flying"], + }, + corviknightanalytical: { + num: 823, + name: "Corviknight-Analytical", + baseSpecies: "Corviknight", + forme: "Analytical", + types: ["Psychic", "Electric"], + baseStats: { hp: 85, atk: 55, def: 80, spa: 110, spd: 85, spe: 115 }, + abilities: { 0: "Pickpocket", 1: "Flare Boost", H: "Psychic Surge" }, + heightm: 2.2, + weightkg: 75, + color: "Purple", + prevo: '', + eggGroups: ["Flying"], + }, + corviknightmartian: { + num: 823, + name: "Corviknight-Martian", + baseSpecies: "Corviknight", + forme: "Martian", + types: ["Psychic", "Steel"], + baseStats: { hp: 95, atk: 45, def: 120, spa: 100, spd: 105, spe: 65 }, + abilities: { 0: "Iron Barbs", 1: "Quick Feet", H: "Hadron Engine" }, + heightm: 2.2, + weightkg: 75, + color: "Purple", + prevo: '', + eggGroups: ["Flying"], + }, + corviknightfalcon: { + num: 823, + name: "Corviknight-Falcon", + baseSpecies: "Corviknight", + forme: "Falcon", + types: ["Flying", "Fighting"], + baseStats: { hp: 86, atk: 95, def: 75, spa: 75, spd: 85, spe: 114 }, + abilities: { 0: "Pickpocket", 1: "Guts", H: "Delta Stream" }, + heightm: 2.2, + weightkg: 75, + color: "Purple", + prevo: '', + eggGroups: ["Flying"], + }, + krookodile: { + inherit: true, + otherFormes: ["Krookodile-Infernal", "Krookodile-Abyssal", "Krookodile-Wetlander", "Krookodile-Cave Dweller", "Krookodile-Cliffside", "Krookodile-Quantum"], + formeOrder: ["Krookodile", "Krookodile-Infernal", "Krookodile-Abyssal", "Krookodile-Wetlander", "Krookodile-Cave Dweller", "Krookodile-Cliffside", "Krookodile-Quantum"], + }, + krookodileinfernal: { + num: 553, + name: "Krookodile-Infernal", + baseSpecies: "Krookodile", + forme: "Infernal", + types: ["Fire", "Dark"], + baseStats: { hp: 90, atk: 80, def: 85, spa: 105, spd: 90, spe: 100 }, + abilities: { 0: "Magic Guard", 1: "Wonder Skin", H: "Sturdy" }, + heightm: 1.5, + weightkg: 96.3, + color: "Red", + prevo: '', + eggGroups: ["Field"], + }, + krookodileabyssal: { + num: 553, + name: "Krookodile-Abyssal", + baseSpecies: "Krookodile", + forme: "Abyssal", + types: ["Ground", "Dark"], + baseStats: { hp: 90, atk: 120, def: 85, spa: 75, spd: 90, spe: 90 }, + abilities: { 0: "Rock Head", 1: "Wonder Skin", H: "Multiscale" }, + heightm: 1.5, + weightkg: 96.3, + color: "Red", + prevo: '', + eggGroups: ["Field"], + }, + krookodilewetlander: { + num: 553, + name: "Krookodile-Wetlander", + baseSpecies: "Krookodile", + forme: "Wetlander", + types: ["Grass", "Water"], + baseStats: { hp: 100, atk: 100, def: 75, spa: 85, spd: 110, spe: 80 }, + abilities: { 0: "Rock Head", 1: "Wonder Skin", H: "Wind Rider" }, + heightm: 1.5, + weightkg: 96.3, + color: "Red", + prevo: '', + eggGroups: ["Field"], + }, + krookodilecavedweller: { + num: 553, + name: "Krookodile-Cave Dweller", + baseSpecies: "Krookodile", + forme: "Cave Dweller", + types: ["Fire", "Rock"], + baseStats: { hp: 80, atk: 110, def: 75, spa: 85, spd: 80, spe: 120 }, + abilities: { 0: "Magic Guard", 1: "Wonder Skin", H: "Sturdy" }, + heightm: 1.5, + weightkg: 96.3, + color: "Red", + prevo: '', + eggGroups: ["Field"], + }, + krookodilecliffside: { + num: 553, + name: "Krookodile-Cliffside", + baseSpecies: "Krookodile", + forme: "Cliffside", + types: ["Dragon", "Dark"], + baseStats: { hp: 90, atk: 70, def: 85, spa: 115, spd: 80, spe: 110 }, + abilities: { 0: "Intimidate", 1: "Merciless", H: "Mold Breaker" }, + heightm: 1.5, + weightkg: 96.3, + color: "Red", + prevo: '', + eggGroups: ["Field"], + }, + krookodilequantum: { + num: 553, + name: "Krookodile-Quantum", + baseSpecies: "Krookodile", + forme: "Quantum", + types: ["Electric", "Rock"], + baseStats: { hp: 95, atk: 100, def: 85, spa: 85, spd: 85, spe: 100 }, + abilities: { 0: "Rock Head", 1: "Prankster", H: "Sturdy" }, + heightm: 1.5, + weightkg: 96.3, + color: "Red", + prevo: '', + eggGroups: ["Field"], + }, + ogerpon: { + inherit: true, + otherFormes: ["Ogerpon-Muerta", "Ogerpon-Easter", "Ogerpon-Ankh", "Ogerpon-Eid", "Ogerpon-Vessel", "Ogerpon-Kitsune"], + formeOrder: ["Ogerpon", "Ogerpon-Muerta", "Ogerpon-Easter", "Ogerpon-Ankh", "Ogerpon-Eid", "Ogerpon-Vessel", "Ogerpon-Kitsune"], + }, + ogerponmuerta: { + num: 1017, + name: "Ogerpon-Muerta", + baseSpecies: "Ogerpon", + forme: "Muerta", + types: ["Fairy", "Ghost"], + gender: "F", + baseStats: { hp: 90, atk: 120, def: 70, spa: 100, spd: 90, spe: 130 }, + abilities: { 0: "Wandering Spirit" }, + heightm: 1.2, + weightkg: 39.8, + color: "Green", + eggGroups: ["Undiscovered"], + }, + ogerponeaster: { + num: 1017, + name: "Ogerpon-Easter", + baseSpecies: "Ogerpon", + forme: "Easter", + types: ["Fairy", "Normal"], + gender: "F", + baseStats: { hp: 105, atk: 95, def: 95, spa: 110, spd: 80, spe: 115 }, + abilities: { 0: "Pickpocket" }, + heightm: 1.2, + weightkg: 39.8, + color: "Green", + eggGroups: ["Undiscovered"], + }, + ogerponankh: { + num: 1017, + name: "Ogerpon-Ankh", + baseSpecies: "Ogerpon", + forme: "Ankh", + types: ["Ghost"], + gender: "F", + baseStats: { hp: 85, atk: 130, def: 70, spa: 130, spd: 90, spe: 95 }, + abilities: { 0: "Mummy", H: "Good as Gold" }, + heightm: 1.2, + weightkg: 39.8, + color: "Green", + eggGroups: ["Undiscovered"], + }, + ogerponeid: { + num: 1017, + name: "Ogerpon-Eid", + baseSpecies: "Ogerpon", + forme: "Eid", + types: ["Water", "Ghost"], + gender: "F", + baseStats: { hp: 95, atk: 98, def: 100, spa: 105, spd: 110, spe: 92 }, + abilities: { 0: "Tangling Hair" }, + heightm: 1.2, + weightkg: 39.8, + color: "Green", + eggGroups: ["Undiscovered"], + }, + ogerponvessel: { + num: 1017, + name: "Ogerpon-Vessel", + baseSpecies: "Ogerpon", + forme: "Vessel", + types: ["Bug", "Fighting"], + gender: "F", + baseStats: { hp: 95, atk: 115, def: 80, spa: 80, spd: 80, spe: 150 }, + abilities: { 0: "Trace" }, + heightm: 1.2, + weightkg: 39.8, + color: "Green", + eggGroups: ["Undiscovered"], + }, + ogerponkitsune: { + num: 1017, + name: "Ogerpon-Kitsune", + baseSpecies: "Ogerpon", + forme: "Kitsune", + types: ["Fairy"], + gender: "F", + baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 }, + abilities: { 0: "Protean" }, + heightm: 1.2, + weightkg: 39.8, + color: "Green", + eggGroups: ["Undiscovered"], + }, +}; diff --git a/data/mods/sixbysix/rulesets.ts b/data/mods/sixbysix/rulesets.ts new file mode 100644 index 0000000000..6b2be5e210 --- /dev/null +++ b/data/mods/sixbysix/rulesets.ts @@ -0,0 +1,17 @@ +export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = { + spriteviewer: { + effectType: 'ValidatorRule', + name: 'Sprite Viewer', + desc: "Displays a fakemon's sprite in chat when it is switched in for the first time", + onBegin() { + this.add('rule', 'Sprite Viewer: Displays sprites in chat'); + }, + onSwitchIn(pokemon) { + if (!this.effectState[pokemon.species.id]) { + this.add('-message', `${pokemon.species.name}'s Sprite:`); + this.add(`raw|`); + this.effectState[pokemon.species.id] = true; + } + }, + }, +}; diff --git a/data/mods/scootopiav2/scripts.ts b/data/mods/sixbysix/scripts.ts similarity index 95% rename from data/mods/scootopiav2/scripts.ts rename to data/mods/sixbysix/scripts.ts index 49611260ed..4346dd0db2 100644 --- a/data/mods/scootopiav2/scripts.ts +++ b/data/mods/sixbysix/scripts.ts @@ -1,3 +1,3 @@ -export const Scripts: ModdedBattleScriptsData = { - gen: 9, -}; +export const Scripts: ModdedBattleScriptsData = { + gen: 9, +}; diff --git a/data/random-battles/scootopiav2/random-sets.json b/data/random-battles/scootopiav2/random-sets.json deleted file mode 100644 index 1812a60a0b..0000000000 --- a/data/random-battles/scootopiav2/random-sets.json +++ /dev/null @@ -1,856 +0,0 @@ -{ - "albatrygon": { - "level": 100, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Sticky Web", "Taunt", "Encore", "Brave Bird", "Memento", "Parting Shot"], - "abilities": ["Prankster"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Tidy Up", "Brave Bird", "Drill Peck", "Feral Rush", "Feral Bite", "Sacred Sword"], - "abilities": ["Prankster"] - } - ] - }, - "aurorowl": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Frost Breath", "Air Cutter", "Focus Blast", "Nasty Plot"], - "abilities": ["Technician"] - } - ] - }, - "arbrella": { - "level": 100, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Earthquake", "Wood Hammer", "Swords Dance", "Synthesis", "Stone Edge", "Superpower"], - "abilities": ["Tough Claws"] - }, - { - "role": "Choice Scarf", - "movepool": ["Earthquake", "Wood Hammer", "Stone Edge", "Superpower"], - "abilities": ["Tough Claws"] - } - ] - }, - "avastar": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Thunder Wave", "Heavy Slam", "Psychic", "Recover", "Teleport"], - "abilities": ["Shell Bunker"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Calm Mind", "Psychic", "Flash Cannon", "Recover", "Thunderbolt"], - "abilities": ["Shell Bunker"] - } - ] - }, - "axolacred": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Dragon Tail", "Roost", "Core Enforcer", "Scald", "Defog", "Shed Tail"], - "abilities": ["Magic Guard"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Feral Rush", "Core Enforcer", "Flip Turn", "Recover"], - "abilities": ["Magic Guard"] - } - ] - }, - "barracoth": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Sheer Cold", "Flip Turn", "Triple Axel", "Slack Off"], - "abilities": ["Multiscale", "Filter"] - } - ] - }, - "blunderbusk": { - "level": 100, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Hydro Pump", "Aura Sphere", "Ice Beam", "Dark Pulse", "Dragon Pulse"], - "abilities": ["Mega Launcher"] - } - ] - }, - "brawnkey": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Drain Punch", "Iron Head", "Chilly Reception", "Spikes"], - "abilities": ["Levitate"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Iron Defense", "Body Press", "Iron Head", "Stealth Rock"], - "abilities": ["Levitate"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Bulk Up", "Drain Punch", "Iron Head", "Stealth Rock"], - "abilities": ["Levitate"] - } - ] - }, - "carapex": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Tailwind", "Acrobatics", "Earthquake", "Stone Edge"], - "abilities": ["Wind Rider"] - }, - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Roost", "Body Press", "Knock Off", "Crystal Bash", "U-Turn"], - "abilities": ["Wind Rider"] - } - ] - }, - "celespirit": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Sheer Cold", "Moonlight", "Hex", "Ice Beam", "Moonblast"], - "abilities": ["Levitate"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Calm Mind", "Crystal Burst", "Shadow Ball", "Moonlight"], - "abilities": ["Levitate"] - } - ] - }, - "cellsius": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Calm Mind", "Hydro Pump", "Moonblast", "Ice Beam", "Psychic"], - "abilities": ["Beast Boost"] - }, - { - "role": "Fast Attacker", - "movepool": ["Hydro Pump", "Moonblast", "Ice Beam", "Flip Turn", "Psychic"], - "abilities": ["Beast Boost"] - } - ] - }, - "cindoe": { - "level": 100, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Overheat", "Fiery Wrath", "Parting Shot", "Morning Sun"], - "abilities": ["Natural Cure"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Nasty Plot", "Fiery Wrath", "Fire Blast", "Morning Sun"], - "abilities": ["Natural Cure"] - }, - { - "role": "Setup Sweeper", - - "movepool": ["Nasty Plot", "Fiery Wrath", "Crystal Burst", "Morning Sun"], - "abilities": ["Natural Cure"] - } - ] - }, - "cinnastar": { - "level": 100, - "sets": [ - { - "role": "AV Pivot", - "movepool": ["Sludge Bomb", "Earth Power", "Focus Blast", "Mortal Spin"], - "abilities": ["Regenerator"] - }, - { - "role": "Bulky Support", - "movepool": ["Earth Power", "Mortal Spin", "Recover", "Stealth Rock", "Power Gem"], - "abilities": ["Regenerator"] - } - ] - }, - "cobracotta": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Poison Fang", "Leech Seed", "Knock Off", "Synthesis", "Stealth Rock", "Power Whip"], - "abilities": ["Heatproof"] - } - ] - }, - "corundell": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Meteor Beam", "Power Gem", "Overheat", "Earth Power", "Volt Switch", "Energy Ball"], - "abilities": ["Lightning Rod"] - } - ] - }, - "crossont": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Spikes", "Recover", "Knock Off", "Circle Throw"], - "abilities": ["Mold Breaker", "Sniper"] - }, - { - "role": "Bulky Attacker", - - "movepool": ["Crystal Cutter", "Close Combat", "Bulk Up", "Substitute"], - "abilities": ["Sniper"] - } - ] - }, - "cyllindrake": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Body Press", "Rapid Spin", "Morning Sun", "Stealth Rock", "Boomburst"], - "abilities": ["Scrappy"] - }, - { - "role": "Fast Support", - "movepool": ["Stealth Rock", "Rapid Spin", "Steel Beam", "Fire Blast"], - "abilities": ["Scrappy"] - }, - { - "role": "Fast Attacker", - - "movepool": ["Feral Shriek", "Flash Cannon", "Earth Power", "Feral Spray", "Rapid Spin"], - "abilities": ["Punk Rock"] - } - ] - }, - "dojodo": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Bulk Up", "Drain Punch", "Jet Punch", "Knock Off", "Substitute"], - "abilities": ["Supreme Overlord"] - }, - { - "role": "Setup Sweeper", - - "movepool": ["Bulk Up", "Drain Punch", "Crystal Bash", "Jet Punch", "Crystal Healing"], - "abilities": ["Supreme Overlord"] - } - ] - }, - "dolphena": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Coil", "Scale Shot", "Iron Tail", "Liquidation"], - "abilities": ["Mythical Presence"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Scale Shot", "Liquidation", "Iron Head", "Substitute"], - "abilities": ["Mythical Presence"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Coil", "Scale Shot", "Iron Tail", "Liquidation"], - - "abilities": ["Mythical Presence"] - }, - { - "role": "Bulky Support", - "movepool": ["Defog", "Flip Turn", "Moonlight", "Dragon Tail"], - "abilities": ["Mythical Presence"] - } - ] - }, - "dracoil": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Defog", "Roost", "U-Turn", "Hurricane", "Fire Blast", "Glare", "Draco Meteor", "Earthquake"], - "abilities": ["Mythical Presence"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Acrobatics", "Substitute", "Earthquake"], - "abilities": ["Gluttony"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Dragon Rush", "Coil", "Earthquake", "Dual Wingbeat"], - "abilities": ["Mythical Presence"] - }, - { - "role": "Bulky Support", - "movepool": ["Feral Bite", "Dragon Tail", "Roost", "Glare", "Defog"], - "abilities": ["Mythical Presence"] - } - ] - }, - "efflor": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Giga Drain", "Leech Seed", "Rapid Spin", "Stealth Rock", "Chilly Reception"], - "abilities": ["Seed Sower"] - }, - { - "role": "Bulky Setup", - "movepool": ["Curse", "Stone Edge", "Body Press", "Synthesis"], - "abilities": ["Unaware"] - } - ] - }, - "electangle": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Gyro Ball", "Stealth Rock", "Body Press", "Volt Switch", "Discharge"], - "abilities": ["Filter"] - } - ] - }, - "elemadillo": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Flash Cannon", "Thunderbolt", "Volt Switch", "Energy Ball"], - "abilities": ["Motor Drive", "Weak Armor"] - }, - { - "role": "Fast Attacker", - - "movepool": ["Feral Power", "Flash Cannon", "Earth Power", "Feral Resilience"], - "abilities": ["Motor Drive", "Weak Armor"] - } - ] - }, - "embuck": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Blaze Kick", "Will-o-Wisp", "Morning Sun", "U-Turn", "Close Combat"], - "abilities": ["Intimidate"] - }, - { - "role": "Bulky Support", - - "movepool": ["Blaze Kick", "Crystal Bash", "Will-o-Wisp", "Morning Sun", "U-Turn"], - "abilities": ["Intimidate"] - }, - { - "role": "Fast Attacker", - "movepool": ["Flare Blitz", "Wild Charge", "U-Turn", "Close Combat"], - "abilities": ["Intimidate"] - } - ] - }, - "faerenheit": { - "level": 100, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Lava Plume", "Moonblast", "Morning Sun"], - "abilities": ["Beast Boost"] - }, - { - "role": "Bulky Setup", - - "movepool": ["Calm Mind", "Lava Plume", "Crystal Cage", "Morning Sun"], - "abilities": ["Beast Boost"] - } - ] - }, - "fenreil": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Double Edge", "Knock Off", "Superpower", "U-Turn"], - "abilities": ["Natural Cure"] - }, - { - "role": "Fast Attacker", - - "movepool": ["Feral Bite", "Knock Off", "Iron Head", "Feral Shred"], - "abilities": ["Natural Cure"] - } - ] - }, - "flocura": { - "level": 100, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Stealth Rock", "Thunder Wave", "U-Turn", "Leaf Storm"], - "abilities": ["Power Construct"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Nasty Plot", "Giga Drain", "Psychic", "Earth Power"], - "abilities": ["Levitate"] - }, - { - "role": "Setup Sweeper", - - "movepool": ["Nasty Plot", "Giga Drain", "Feral Power", "Earth Power"], - "abilities": ["Levitate"] - }, - { - "role": "Fast Attacker", - "movepool": ["Leaf Storm", "U-Turn", "Psychic", "Earth Power"], - "abilities": ["Levitate"] - }, - { - "role": "Bulky Support", - "movepool": ["Leech Seed", "U-Turn", "Thunder Wave", "Psychic", "Giga Drain", "Stealth Rock"], - "abilities": ["Power Construct"] - } - ] - }, - "harzodia": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Light Screen", "Reflect", "Teleport", "Thunder Wave", "Psychic"], - "abilities": ["Prankster"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Meteor Beam", "Psychic", "Shadow Ball", "Calm Mind", "Focus Blast"], - "abilities": ["Unburden"] - } - ] - }, - "jaegorm": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["First Impression", "U-Turn", "Photon Ray", "Knock Off", "Superpower", "Earthquake"], - "abilities": ["Schooling"] - } - ] - }, - "jamborai": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Mortal Spin", "Recover", "Pyschic", "Scald", "Teleport"], - "abilities": ["Water Absorb"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Recover", "Pyschic", "Scald", "Sludge Bomb", "Stored Power"], - "abilities": ["Water Absorb"] - }, - { - "role": "Bulky Support", - - "movepool": ["Mortal Spin", "Recover", "Crystal Cage", "Crystal Healing", "Teleport"], - "abilities": ["Gooey"] - }, - { - "role": "Bulky Setup", - - "movepool": ["Crystal Fortification", "Recover", "Stored Power", "Crystal Beam"], - "abilities": ["Gooey"] - } - ] - }, - "kodokai": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - - "movepool": ["Crystal Cage", "Hex", "Will-o-Wisp", "Moonlight"], - "abilities": ["Aroma Veil"] - }, - { - "role": "Bulky Support", - "movepool": ["Wish", "Hex", "Will-o-Wisp", "Moonlight"], - "abilities": ["Aroma Veil"] - } - ] - }, - "krachiten": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["First Impression", "U-Turn", "Liquidation", "Rapid Spin"], - "abilities": ["Torrent"] - }, - { - "role": "Fast Attacker", - - "movepool": ["Crystal Cutter", "U-Turn", "Aqua Cutter", "Superpower", "Rapid Spin"], - "abilities": ["Sniper"] - } - ] - }, - "lumoth": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Quiver Dance", "Hex", "Sleep Powder", "Bug Buzz"], - "abilities": ["Levitate"] - } - ] - }, - "minillow": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Nasty Plot", "Agility", "Hydro Pump", "Moonblast", "Substitute"], - "abilities": ["Adaptability"] - } - ] - }, - "muabboa": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Earthquake", "U-Turn", "Close Combat", "Knock Off"], - "abilities": ["Inner Focus"] - }, - { - "role": "Setup Sweeper", - - "movepool": ["Swords Dance", "Earthquake", "Feral Rush", "Close Combat"], - "abilities": ["Inner Focus"] - } - ] - }, - "noxtrice": { - "level": 100, - "sets": [ - { - "role": "Fast Support", - "movepool": ["Poison Jab", "Flare Blitz", "Roost", "U-Turn"], - "abilities": ["Poison Touch"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Gunk Shot", "Flare Blitz", "Earthquake", "Dragon Dance"], - "abilities": ["Poison Touch"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Gunk Shot", "Feral Rush", "Earthquake", "Dragon Dance"], - "abilities": ["Flash Fire"] - } - ] - }, - "nunopod": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Earthquake", "Body Press", "Triple Axel", "Flip Turn", "Stealth Rock", "Rapid Spin", "Recover"], - "abilities": ["Opportunist"] - }, - { - "role": "Bulky Support", - - "movepool": ["Crystal Bash", "Body Press", "Earthquake", "Flip Turn", "Stealth Rock", "Rapid Spin", "Recover"], - "abilities": ["Opportunist"] - } - ] - }, - "orchile": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Moonblast", "Earth Power", "Will-o-Wisp", "Strength Sap", "Spikes"], - "abilities": ["Flower Veil"] - }, - { - "role": "Bulky Setup", - "movepool": ["Moonblast", "Earth Power", "Calm Mind", "Strength Sap"], - "abilities": ["Flower Veil"] - } - ] - }, - "platypad": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Revival Blessing", "Wave Crash", "Flip Turn", "Synthesis"], - "abilities": ["Flower Veil"] - }, - { - "role": "Bulky Setup", - - "movepool": ["Feral Resilience", "Feral Breath", "Giga Drain", "Synthesis"], - "abilities": ["Triage"] - } - ] - }, - "pythos": { - "level": 100, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Coil", "Knock Off", "Iron Tail", "Sucker Punch", "Superpower", "Facade"], - "abilities": ["Guts"] - } - ] - }, - "quadringo": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Defog", "Roost", "Dragon Tail", "Earthquake", "Moonblast"], - "abilities": ["Pastel Veil"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Moonblast", "Mystical Fire", "Roost"], - "abilities": ["Pastel Veil"] - }, - { - "role": "Fast Attacker", - "movepool": ["Moonblast", "Draco Meteor", "Mystical Fire", "Earthquake"], - "abilities": ["Pastel Veil"] - }, - { - "role": "Fast Attacker", - - "movepool": ["Feral Rush", "Earthquake", "Feral Shred", "Roost"], - "abilities": ["Pastel Veil"] - } - ] - }, - "rantler": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Double Edge", "Ice Spinner", "Superpower", "Earthquake"], - "abilities": ["Slush Rush"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Double Edge", "Ice Spinner", "Superpower", "Earthquake", "Quick Attack"], - "abilities": ["Slush Rush"] - }, - { - "role": "Fast Attacker", - "movepool": ["Double Edge", "Ice Spinner", "Superpower", "Quick Attack", "Fake Out"], - "abilities": ["Tough Claws"] - } - ] - }, - "roscenti": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["First Impression", "U-Turn", "Superpower", "Rock Blast", "Bullet Seed"], - "abilities": ["Skill Link"] - }, - { - "role": "Fast Attacker", - - "movepool": ["First Impression", "U-Turn", "Feral Rush", "Drill Run", "Iron Tail"], - "abilities": ["Sheer Force"] - }, - { - "role": "Fast Attacker", - - "movepool": ["First Impression", "U-Turn", "Crystal Tail", "Superpower", "Rock Slide"], - "abilities": ["Sheer Force"] - } - ] - }, - "salamalix": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Spikes", "Stone Edge", "Close Combat", "Iron Head"], - "abilities": ["Intimidate"] - }, - { - "role": "Bulky Setup", - "movepool": ["Swords Dance", "Iron Head", "Close Combat", "Accelerock"], - "abilities": ["Intimidate"] - } - ] - }, - "salaos": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Toxic", "Recover", "Fiery Wrath", "Scald", "Flamethrower", "Toxic Spikes"], - "abilities": ["Good as Gold"] - }, - { - "role": "Bulky Support", - - "movepool": ["Toxic", "Recover", "Crystal Cage", "Flamethrower", "Toxic Spikes"], - "abilities": ["Good as Gold"] - } - ] - }, - "saphor": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Stealth Rock", "Earthquake", "Body Slam", "Slack Off", "Roar", "Heal Bell"], - "abilities": ["Thick Fat"] - }, - { - "role": "Bulky Support", - - "movepool": ["Stealth Rock", "Crystal Tail", "Crystal Shard", "Slack Off", "Roar", "Crystal Healing"], - "abilities": ["Thick Fat"] - }, - { - "role": "Bulky Setup", - - "movepool": ["Bulk Up", "Crystal Cutter", "Slack Off", "Body Press"], - "abilities": ["Thick Fat"] - }, - { - "role": "Bulky Setup", - - "movepool": ["Calm Mind", "Crystal Cage", "Slack Off", "Focus Blast"], - "abilities": ["Thick Fat"] - }, - { - "role": "Fast Attacker", - "movepool": ["Headlong Rush", "Double Edge", "Heavy Slam", "Superpower", "Stone Edge"], - "abilities": ["Thick Fat"] - } - ] - }, - "scalaron": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Flamethrower", "Hurricane", "Roost", "U-Turn", "Defog", "Toxic", "Will-o-Wisp"], - "abilities": ["Filter"] - }, - { - "role": "Bulky Support", - - "movepool": ["Flamethrower", "Crystal Cage", "Roost", "U-Turn", "Defog", "Will-o-Wisp", "Crystal Shard"], - "abilities": ["Filter"] - } - ] - }, - "soleron": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Thunderbolt", "Hurricane", "Heat Wave", "U-Turn", "Air Slash", "Volt Switch", "Roost"], - "abilities": ["Battle Bond"] - }, - { - "role": "Fast Attacker", - "movepool": ["Thunderbolt", "Feral Power", "Feral Spray", "Volt Switch", "Roost"], - - "abilities": ["Battle Bond"] - }, - { - "role": "Fast Attacker", - "movepool": ["Thunderbolt", "Crystal Burst", "Heat Wave", "Volt Switch", "Hurricane"], - - "abilities": ["Battle Bond"] - } - ] - }, - "torgeist": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Toxic Thread", "Hex", "Hurricane", "Heat Wave", "Pain Split", "Taunt"], - "abilities": ["Merciless"] - }, - { - "role": "Fast Attacker", - - "movepool": ["Toxic Thread", "Hex", "Feral Power", "Pain Split", "Taunt", "Nasty Plot"], - "abilities": ["Merciless"] - }, - { - "role": "Setup Sweeper", - - "movepool": ["Will-o-Wisp", "Hex", "Feral Power", "Nasty Plot"], - "abilities": ["Cursed Body"] - } - ] - }, - "woolora": { - "level": 100, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Cotton Guard", "Stored Power", "Draining Kiss"], - "abilities": ["Fluffy", "Pastel Veil"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Moonlight", "Stored Power", "Moonblast"], - "abilities": ["Fluffy"] - } - ] - }, - "zeploom": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Energy Siphon", "Synthesis", "Stealth Rock", "U-Turn", "Defog", "Toxic", "Earth Power"], - "abilities": ["Wind Rider"] - } - ] - } -} diff --git a/data/random-battles/sixbysix/random-sets.json b/data/random-battles/sixbysix/random-sets.json new file mode 100644 index 0000000000..fe3959a1d6 --- /dev/null +++ b/data/random-battles/sixbysix/random-sets.json @@ -0,0 +1,557 @@ +{ + "kingdraancient": { + "level": 100, + "sets": [ + { + "role": "Fast Bulky Setup", + "movepool": ["Fire Blast", "Agility", "Energy Ball", "Hydro Pump"], + "abilities": ["Protosynthesis"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Giga Drain", "Fire Blast", "Flip Turn", "Synthesis"], + "abilities": ["Competitive"] + } + ] + }, + "kingdrabard": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Hydro Pump", "Agility", "Psychic Noise", "Alluring Voice"], + "abilities": ["Punk Rock"] + }, + { + "role": "Wallbreaker", + "movepool": ["Hydro Pump", "Flip Turn", "Psychic Noise", "Alluring Voice"], + "abilities": ["Punk Rock"] + } + ] + }, + "kingdrabrinepool": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Scald", "Protect", "Knock Off", "Mortal Spin"], + "abilities": ["Purifying Salt"] + }, + { + "role": "Wallbreaker", + "movepool": ["Hydro Pump", "Water Shuriken", "Sludge Wave", "Flip Turn"], + "abilities": ["Purifying Salt", "Storm Drain"] + } + ] + }, + "kingdraclassic": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Hydro Pump", "Draco Meteor", "Agility", "Ice Beam"], + "abilities": ["Berserk"] + }, + { + "role": "Wallbreaker", + "movepool": ["Hydro Pump", "Draco Meteor", "Flip Turn", "Ice Beam"], + "abilities": ["Berserk"] + } + ] + }, + "kingdradruid": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Tachyon Cutter", "Draco Meteor", "Flamethrower", "Ice Beam"], + "abilities": ["Berserk"] + }, + { + "role": "Bulky Setup", + "movepool": ["Tachyon Cutter", "Protect", "Flamethrower", "Calm Mind"], + "abilities": ["Berserk"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Doom Desire", "Parting Shot", "Draco Meteor", "Protect"], + "abilities": ["Berserk", "Heatproof"] + } + ] + }, + "kingdragourmet": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Facade", "Baneful Bunker", "Knock Off", "Toxic"], + "abilities": ["Poison Heal"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Facade", "Fake Out", "Knock Off", "Flip Turn"], + "abilities": ["Poison Heal"] + } + ] + }, + "nidoqueenclassic": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Barb Barrage", "Earthquake", "Spikes", "Slack Off"], + "abilities": ["Poison Point"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Poison Jab", "Earthquake", "Ice Punch", "Slack Off"], + "abilities": ["Sheer Force"] + } + ] + }, + "nidoqueenerudite": { + "level": 100, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Earth Power", "Psychic", "Slack Off"], + "abilities": ["Sheer Force"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Trick Room", "Earth Power", "Psychic", "Ice Beam"], + "abilities": ["Sheer Force"] + }, + { + "role": "Bulky Support", + "movepool": ["Future Sight", "Earth Power", "Roar", "Chilly Reception"], + "abilities": ["Regenerator"] + } + ] + }, + "nidoqueenjasper": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Salt Cure", "Earthquake", "Protect", "Glare"], + "abilities": ["Earth Eater"] + }, + { + "role": "Wallbreaker", + "movepool": ["Accelerock", "Earthquake", "Gunk Rock", "Stone Edge"], + "abilities": ["Earth Eater"] + } + ] + }, + "nidoqueenrosegold": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Slack Off", "Giga Drain", "Earth Power", "Toxic Spikes"], + "abilities": ["Rough Skin"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Spiky Shield", "Earth Power", "Sludge Bomb", "Leech Seed"], + "abilities": ["Rough Skin"] + } + ] + }, + "nidoqueenshaman": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Poltergeist", "Poison Jab", "Superpower", "Shadow Sneak"], + "abilities": ["Toxic Chain"] + }, + { + "role": "AV Pivot", + "movepool": ["Poltergeist", "Poison Jab", "Earthquake", "Shadow Sneak"], + "abilities": ["Regenerator"] + } + ] + }, + "nidoqueenvolcanic": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Protect", "Lava Plume", "Earth Power", "Wish"], + "abilities": ["Flame Body"] + }, + { + "role": "Wallbreaker", + "movepool": ["Thunderbolt", "Fire Blast", "Earth Power", "Ice Beam"], + "abilities": ["Sheer Force"] + }, + { + "role": "Bulky Attacker", + "movepool": ["Protect", "Fire Blast", "Earth Power", "Wish"], + "abilities": ["Sheer Force"] + } + ] + }, + "bisharpassassin": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Triple Axel", "Dynamic Punch", "Parting Shot", "Ice Shard"], + "abilities": ["No Guard"] + }, + { + "role": "Bulky Setup", + "movepool": ["Triple Axel", "Dynamic Punch", "Curse", "Ice Shard"], + "abilities": ["No Guard"] + } + ] + }, + "bisharpcenturion": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["Bullet Punch", "Superpower", "Switcheroo", "Iron Head"], + "abilities": ["Technician"] + }, + { + "role": "Wallbreaker", + "movepool": ["Bullet Punch", "Drain Punch", "Bulk Up", "Iron Head"], + "abilities": ["Technician"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Bullet Punch", "Drain Punch", "Swords Dance", "Iron Head"], + "abilities": ["Technician"] + } + ] + }, + "bisharpmantis": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Ceaseless Edge", "Leech Life", "First Impression", "Bitter Blade"], + "abilities": ["Orichalcum Pulse"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Sucker Punch", "Leech Life", "Swords Dance", "Bitter Blade"], + "abilities": ["Orichalcum Pulse"] + } + ] + }, + "bisharprevenant": { + "level": 100, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Recover", "Shadow Sneak", "Sacred Sword", "Poltergeist"], + "abilities": ["Magic Bounce"] + }, + { + "role": "Bulky Setup", + "movepool": ["Recover", "Shadow Sneak", "Swords Dance", "Behemoth Blade"], + "abilities": ["Magic Bounce"] + } + ] + }, + "bisharpronin": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Barb Barrage", "U-turn", "Sacred Sword", "Stealth Rock"], + "abilities": ["Technician"] + }, + { + "role": "Wallbreaker", + "movepool": ["Barb Barrage", "U-turn", "Sacred Sword", "Bulldoze"], + "abilities": ["Technician"] + } + ] + }, + "bisharpsavage": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["Leech Seed", "Bullet Punch", "Power Whip", "Thunder Wave"], + "abilities": ["Technician"] + }, + { + "role": "Bulky Setup", + "movepool": ["Bulk Up", "Bullet Punch", "Power Whip", "Body Press"], + "abilities": ["Technician"] + } + ] + }, + "corviknightanalytical": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Psychic", "Thunderbolt", "U-turn", "Heat Wave"], + "abilities": ["Psychic Surge"] + }, + { + "role": "Fast Support", + "movepool": ["Reflect", "Light Screen", "U-turn", "Psychic"], + "abilities": ["Psychic Surge"] + }, + { + "role": "Fast Bulky Setup", + "movepool": ["Psychic", "Thunderbolt", "Calm Mind", "Heat Wave"], + "abilities": ["Psychic Surge"] + } + ] + }, + "corviknightfalcon": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Brave Bird", "Close Combat", "U-turn", "Knock Off"], + "abilities": ["Guts"] + }, + { + "role": "Fast Support", + "movepool": ["Reflect", "Light Screen", "U-turn", "Taunt"], + "abilities": ["Delta Stream"] + } + ] + }, + "corviknightgenie": { + "level": 100, + "sets": [ + { + "role": "Fast Bulky Setup", + "movepool": ["Earth Power", "Calm Mind", "Heat Wave", "Rest"], + "abilities": ["Prankster"] + }, + { + "role": "AV Pivot", + "movepool": ["Scorching Sands", "U-turn", "Heat Wave", "Thunderbolt"], + "abilities": ["Intimidate"] + }, + { + "role": "Fast Support", + "movepool": ["Reflect", "Light Screen", "U-turn", "Earth Power"], + "abilities": ["Prankster"] + } + ] + }, + "corviknightmartian": { + "level": 100, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["Trick Room", "Teleport", "Thunderbolt", "Psychic"], + "abilities": ["Hadron Engine"] + }, + { + "role": "Bulky Support", + "movepool": ["Doom Desire", "Teleport", "Thunderbolt", "Psychic"], + "abilities": ["Hadron Engine"] + }, + { + "role": "Bulky Setup", + "movepool": ["Calm Mind", "Flash Cannon", "Thunderbolt", "Psychic Noise"], + "abilities": ["Hadron Engine"] + } + ] + }, + "corviknightthunderbird": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Thunder", "Hurricane", "U-turn", "Roost"], + "abilities": ["Drizzle"] + }, + { + "role": "Fast Support", + "movepool": ["Reflect", "Light Screen", "U-turn", "Hurricane"], + "abilities": ["Drizzle"] + } + ] + }, + "corviknightyeti": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Blizzard", "Bleakwind Storm", "Volt Switch", "Roost"], + "abilities": ["Snow Warning"] + }, + { + "role": "Fast Support", + "movepool": ["Reflect", "Light Screen", "U-turn", "Blizzard"], + "abilities": ["Snow Warning"] + } + ] + }, + "krookodileabyssal": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Dragon Dance", "Earthquake", "Knock Off", "Flare Blitz"], + "abilities": ["Multiscale"] + }, + { + "role": "Fast Attacker", + "movepool": ["Parting Shot", "Earthquake", "Knock Off", "Flare Blitz"], + "abilities": ["Multiscale"] + } + ] + }, + "krookodilecavedweller": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Parting Shot", "Earthquake", "Stone Edge", "Flare Blitz"], + "abilities": ["Magic Guard"] + }, + { + "role": "Wallbreaker", + "movepool": ["Explosion", "Earthquake", "Stone Edge", "Flare Blitz"], + "abilities": ["Magic Guard"] + } + ] + }, + "krookodilecliffside": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Parting Shot", "Dark Pulse", "Draco Meteor", "Flamethrower"], + "abilities": ["Intimidate"] + }, + { + "role": "Wallbreaker", + "movepool": ["Switcheroo", "Dark Pulse", "Draco Meteor", "Flamethrower"], + "abilities": ["Intimidate"] + } + ] + }, + "krookodileinfernal": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Parting Shot", "Magma Storm", "Fiery Wrath", "Eruption"], + "abilities": ["Magic Guard"] + }, + { + "role": "Fast Support", + "movepool": ["Parting Shot", "Fire Lash", "Knock Off", "Will-O-Wisp"], + "abilities": ["Magic Guard"] + } + ] + }, + "krookodilequantum": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Parting Shot", "Volt Tackle", "Head Smash", "Earthquake"], + "abilities": ["Rock Head"] + }, + { + "role": "Fast Support", + "movepool": ["Parting Shot", "Encore", "Head Smash", "Volt Tackle"], + "abilities": ["Prankster"] + } + ] + }, + "krookodilewetlander": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Synthesis", "Wave Crash", "Wood Hammer", "Knock Off"], + "abilities": ["Wind Rider", "Wonder Skin"] + }, + { + "role": "Wallbreaker", + "movepool": ["Parting Shot", "Wave Crash", "Wood Hammer", "Knock Off"], + "abilities": ["Wind Rider", "Wonder Skin"] + } + ] + }, + "ogerponankh": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["Swords Dance", "Poltergeist", "Earthquake", "Stone Edge"], + "abilities": ["Good as Gold"] + }, + { + "role": "Wallbreaker", + "movepool": ["U-turn", "Shadow Ball", "Earth Power", "Dazzling Gleam"], + "abilities": ["Good as Gold"] + } + ] + }, + "ogerponeaster": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["U-turn", "Moonblast", "Hyper Voice", "Mystical Fire"], + "abilities": ["Pickpocket"] + }, + { + "role": "Setup Sweeper", + "movepool": ["Calm Mind", "Moonblast", "Soft-Boiled", "Mystical Fire"], + "abilities": ["Pickpocket"] + } + ] + }, + "ogerponeid": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "Recover", "Surf", "Shadow Ball"], + "abilities": ["Tangling Hair"] + }, + { + "role": "Fast Support", + "movepool": ["Hex", "Recover", "Surf", "Toxic"], + "abilities": ["Tangling Hair"] + } + ] + }, + "ogerponkitsune": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Knock Off", "U-turn", "Earth Power", "Power Whip"], + "abilities": ["Protean"] + } + ] + }, + "ogerponmuerta": { + "level": 100, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["Poltergeist", "Moonblast", "U-turn", "Will-O-Wisp"], + "abilities": ["Wandering Spirit"] + }, + { + "role": "Wallbreaker", + "movepool": ["Poltergeist", "Moonblast", "U-turn", "Shadow Sneak"], + "abilities": ["Wandering Spirit"] + } + ] + } +} diff --git a/data/random-battles/scootopiav2/teams.ts b/data/random-battles/sixbysix/teams.ts similarity index 94% rename from data/random-battles/scootopiav2/teams.ts rename to data/random-battles/sixbysix/teams.ts index c03dcede03..e321ed1a71 100644 --- a/data/random-battles/scootopiav2/teams.ts +++ b/data/random-battles/sixbysix/teams.ts @@ -1,1001 +1,960 @@ -import { RandomTeams, type MoveCounter } from "../gen9/teams"; - -// Moves that restore HP: -const RECOVERY_MOVES = [ - 'healorder', 'milkdrink', 'moonlight', 'morningsun', 'recover', 'roost', 'shoreup', 'slackoff', 'softboiled', 'strengthsap', 'synthesis', -]; -// Moves that boost Attack: -const PHYSICAL_SETUP = [ - 'bellydrum', 'bulkup', 'coil', 'curse', 'dragondance', 'honeclaws', 'howl', 'meditate', 'poweruppunch', 'swordsdance', 'tidyup', 'victorydance', - 'filletaway', -]; -// Moves which boost Special Attack: -const SPECIAL_SETUP = [ - 'calmmind', 'chargebeam', 'geomancy', 'nastyplot', 'quiverdance', 'tailglow', 'takeheart', 'torchsong', 'filletaway', -]; -// Some moves that only boost Speed: -const SPEED_SETUP = [ - 'agility', 'autotomize', 'flamecharge', 'rockpolish', 'trailblaze', -]; -// Conglomerate for ease of access -const SETUP = [ - 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'dragondance', - 'filletaway', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', 'quiverdance', - 'rockpolish', 'shellsmash', 'shiftgear', 'swordsdance', 'tailglow', 'takeheart', 'tidyup', 'trailblaze', 'trickroom', 'workup', 'victorydance', - 'feralresilience', 'feralspray', 'crystalfortification', -]; -const SPEED_CONTROL = [ - 'electroweb', 'glare', 'icywind', 'lowsweep', 'quash', 'stringshot', 'tailwind', 'thunderwave', 'trickroom', -]; -// Hazard-setting moves -const HAZARDS = [ - 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', 'crystalshard', -]; -// Protect and its variants -const PROTECT_MOVES = [ - 'banefulbunker', 'burningbulwark', 'protect', 'silktrap', 'spikyshield', -]; -// Moves that switch the user out -const PIVOT_MOVES = [ - 'chillyreception', 'flipturn', 'partingshot', 'shedtail', 'teleport', 'uturn', 'voltswitch', -]; - -// Moves that should be paired together when possible -const MOVE_PAIRS = [ - ['lightscreen', 'reflect'], - ['sleeptalk', 'rest'], - ['protect', 'wish'], - ['spikyshield', 'wish'], - ['leechseed', 'protect'], - ['leechseed', 'substitute'], - ['moongeistbeam', 'moonlight'], - ['hex', 'willowisp'], - ['hex', 'toxic'], - ['hex', 'thunderwave'], - ['nightmare', 'willowisp'], - ['nightmare', 'toxic'], - ['nightmare', 'thunderwave'], -]; - -/** Pokemon who always want priority STAB, and are fine with it as its only STAB move of that type */ -const PRIORITY_POKEMON = [ - 'breloom', 'brutebonnet', 'cacturne', 'honchkrow', 'mimikyu', 'ragingbolt', 'scizor', -]; - -/** Pokemon who should never be in the lead slot */ -const NO_LEAD_POKEMON = [ - 'Zacian', 'Zamazenta', -]; -const DOUBLES_NO_LEAD_POKEMON = [ - 'Basculegion', 'Houndstone', 'Iron Bundle', 'Roaring Moon', 'Zacian', 'Zamazenta', -]; -export class RandomSCTeams extends RandomTeams { - override cullMovePool( - types: string[], - moves: Set, - abilities: string[], - counter: MoveCounter, - movePool: string[], - teamDetails: RandomTeamsTypes.TeamDetails, - species: Species, - isLead: boolean, - isDoubles: boolean, - teraType: string, - role: RandomTeamsTypes.Role, - ): void { - if (moves.size + movePool.length <= this.maxMoveCount) return; - // If we have two unfilled moves and only one unpaired move, cull the unpaired move. - if (moves.size === this.maxMoveCount - 2) { - const unpairedMoves = [...movePool]; - for (const pair of MOVE_PAIRS) { - if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { - this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0])); - this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1])); - } - } - if (unpairedMoves.length === 1) { - this.fastPop(movePool, movePool.indexOf(unpairedMoves[0])); - } - } - - // These moves are paired, and shouldn't appear if there is not room for them both. - if (moves.size === this.maxMoveCount - 1) { - for (const pair of MOVE_PAIRS) { - if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { - this.fastPop(movePool, movePool.indexOf(pair[0])); - this.fastPop(movePool, movePool.indexOf(pair[1])); - } - } - } - - // Develop additional move lists - const statusMoves = this.cachedStatusMoves; - - // Team-based move culls - if (teamDetails.screens) { - if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil')); - if (movePool.length >= this.maxMoveCount + 2) { - if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect')); - if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen')); - } - } - if (teamDetails.stickyWeb) { - if (movePool.includes('stickyweb')) this.fastPop(movePool, movePool.indexOf('stickyweb')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.stealthRock) { - if (movePool.includes('stealthrock')) this.fastPop(movePool, movePool.indexOf('stealthrock')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.defog || teamDetails.rapidSpin) { - if (movePool.includes('defog')) this.fastPop(movePool, movePool.indexOf('defog')); - if (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.toxicSpikes) { - if (movePool.includes('toxicspikes')) this.fastPop(movePool, movePool.indexOf('toxicspikes')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.spikes && teamDetails.spikes >= 2) { - if (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.statusCure) { - if (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - - if (isDoubles) { - const doublesIncompatiblePairs = [ - // In order of decreasing generalizability - [SPEED_CONTROL, SPEED_CONTROL], - [HAZARDS, HAZARDS], - ['rockslide', 'stoneedge'], - [SETUP, ['fakeout', 'helpinghand']], - [PROTECT_MOVES, 'wideguard'], - [['fierydance', 'fireblast'], 'heatwave'], - ['dazzlinggleam', ['fleurcannon', 'moonblast']], - ['poisongas', ['toxicspikes', 'willowisp']], - [RECOVERY_MOVES, ['healpulse', 'lifedew']], - ['healpulse', 'lifedew'], - ['haze', 'icywind'], - [['hydropump', 'muddywater'], ['muddywater', 'scald']], - ['disable', 'encore'], - ['freezedry', 'icebeam'], - ['energyball', 'leafstorm'], - ['earthpower', 'sandsearstorm'], - ['coaching', ['helpinghand', 'howl']], - ]; - - for (const pair of doublesIncompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); - - if (role !== 'Offensive Protect') this.incompatibleMoves(moves, movePool, PROTECT_MOVES, ['flipturn', 'uturn']); - } - - // General incompatibilities - const incompatiblePairs = [ - // These moves don't mesh well with other aspects of the set - [statusMoves, ['healingwish', 'switcheroo', 'trick']], - [SETUP, PIVOT_MOVES], - [SETUP, HAZARDS], - [SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']], - [PHYSICAL_SETUP, PHYSICAL_SETUP], - [SPECIAL_SETUP, 'thunderwave'], - ['substitute', PIVOT_MOVES], - [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']], - ['curse', ['irondefense', 'rapidspin']], - ['dragondance', 'dracometeor'], - ['yawn', 'roar'], - ['trick', 'uturn'], - - // These attacks are redundant with each other - [['psychic', 'psychicnoise'], ['psyshock', 'psychicnoise']], - ['surf', ['hydropump', 'scald']], - ['liquidation', 'wavecrash'], - ['aquajet', 'flipturn'], - ['gigadrain', 'leafstorm'], - ['powerwhip', 'hornleech'], - ['airslash', 'hurricane'], - ['knockoff', 'foulplay'], - ['throatchop', ['crunch', 'lashout']], - ['doubleedge', ['bodyslam', 'headbutt']], - [['fireblast', 'magmastorm'], ['fierydance', 'flamethrower', 'lavaplume']], - ['thunderpunch', 'wildcharge'], - ['thunderbolt', 'discharge'], - ['gunkshot', ['direclaw', 'poisonjab', 'sludgebomb']], - ['aurasphere', 'focusblast'], - ['closecombat', 'drainpunch'], - [['dragonpulse', 'spacialrend'], 'dracometeor'], - ['heavyslam', 'flashcannon'], - ['alluringvoice', 'dazzlinggleam'], - ['defog', 'rapidspin'], - - // These status moves are redundant with each other - ['taunt', 'disable'], - [['thunderwave', 'toxic'], ['thunderwave', 'willowisp']], - [['thunderwave', 'toxic', 'willowisp'], 'toxicspikes'], - - // This space reserved for assorted hardcodes that otherwise make little sense out of context - // Landorus and Thundurus - ['nastyplot', ['rockslide', 'knockoff']], - // Persian - ['switcheroo', 'fakeout'], - // Amoonguss, though this can work well as a general rule later - ['toxic', 'clearsmog'], - // Chansey and Blissey - ['healbell', 'stealthrock'], - // Araquanid and Magnezone - ['mirrorcoat', ['hydropump', 'bodypress']], - ]; - - for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); - - if (!types.includes('Ice')) this.incompatibleMoves(moves, movePool, 'icebeam', 'icywind'); - - if (!isDoubles) this.incompatibleMoves(moves, movePool, 'taunt', 'encore'); - - if (!types.includes('Dark') && teraType !== 'Dark') this.incompatibleMoves(moves, movePool, 'knockoff', 'suckerpunch'); - - if (!abilities.includes('Prankster')) this.incompatibleMoves(moves, movePool, 'thunderwave', 'yawn'); - - // This space reserved for assorted hardcodes that otherwise make little sense out of context: - // To force Close Combat on Barraskewda without locking it to Tera Fighting - if (species.id === 'barraskewda') { - this.incompatibleMoves(moves, movePool, ['psychicfangs', 'throatchop'], ['poisonjab', 'throatchop']); - } - // To force Toxic on Quagsire - if (species.id === 'quagsire') this.incompatibleMoves(moves, movePool, 'spikes', 'icebeam'); - // Taunt/Knock should be Cyclizar's flex moveslot - if (species.id === 'cyclizar') this.incompatibleMoves(moves, movePool, 'taunt', 'knockoff'); - // To force Stealth Rock on Camerupt - if (species.id === 'camerupt') this.incompatibleMoves(moves, movePool, 'roar', 'willowisp'); - // nothing else rolls these lol - if (species.id === 'coalossal') this.incompatibleMoves(moves, movePool, 'flamethrower', 'overheat'); - } - - override randomMoveset( - types: string[], - abilities: string[], - teamDetails: RandomTeamsTypes.TeamDetails, - species: Species, - isLead: boolean, - isDoubles: boolean, - movePool: string[], - teraType: string, - role: RandomTeamsTypes.Role, - ): Set { - const moves = new Set(); - if (this.getSuperType(moves)) types[1] = this.getSuperType(moves); - let counter = this.queryMoves(moves, species, teraType, abilities); - this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role); - - // If there are only four moves, add all moves and return early - if (movePool.length <= this.maxMoveCount) { - for (const moveid of movePool) { - moves.add(moveid); - } - return moves; - } - - const runEnforcementChecker = (checkerName: string) => { - if (!this.moveEnforcementCheckers[checkerName]) return false; - return this.moveEnforcementCheckers[checkerName]( - movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles, teraType, role - ); - }; - - if (role === 'Tera Blast user') { - counter = this.addMove('terablast', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - // Add required move (e.g. Relic Song for Meloetta-P) - if (species.requiredMove) { - const move = this.dex.moves.get(species.requiredMove).id; - counter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Add other moves you really want to have, e.g. STAB, recovery, setup. - - // Enforce Facade if Guts is a possible ability - if (movePool.includes('facade') && abilities.includes('Guts')) { - counter = this.addMove('facade', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Enforce Night Shade, Revelation Dance, Revival Blessing, and Sticky Web - for (const moveid of ['nightshade', 'revelationdance', 'revivalblessing', 'stickyweb']) { - if (movePool.includes(moveid)) { - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Trick Room on Doubles Wallbreaker - if (movePool.includes('trickroom') && role === 'Doubles Wallbreaker') { - counter = this.addMove('trickroom', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Enforce hazard removal on Bulky Support if the team doesn't already have it - if (role === 'Bulky Support' && !teamDetails.defog && !teamDetails.rapidSpin) { - if (movePool.includes('rapidspin')) { - counter = this.addMove('rapidspin', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - if (movePool.includes('defog')) { - counter = this.addMove('defog', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Knock Off on pure Normal- and Fighting-types in singles - if (!isDoubles && types.length === 1 && (types.includes('Normal') || types.includes('Fighting'))) { - if (movePool.includes('knockoff')) { - counter = this.addMove('knockoff', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Flip Turn on pure Water-type Wallbreakers - if (types.length === 1 && types.includes('Water') && - role === 'Wallbreaker' && movePool.includes('flipturn')) { - counter = this.addMove('flipturn', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Enforce Spore on Smeargle - if (species.id === 'smeargle') { - if (movePool.includes('spore')) { - counter = this.addMove('spore', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce moves in doubles - if (isDoubles) { - const doublesEnforcedMoves = ['auroraveil', 'mortalspin', 'spore']; - for (const moveid of doublesEnforcedMoves) { - if (movePool.includes(moveid)) { - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - // Enforce Fake Out on slow Pokemon - if (movePool.includes('fakeout') && species.baseStats.spe <= 50) { - counter = this.addMove('fakeout', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - // Enforce Tailwind on Prankster and Gale Wings users - if (movePool.includes('tailwind') && (abilities.includes('Prankster') || abilities.includes('Gale Wings'))) { - counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - // Enforce Thunder Wave on Prankster users as well - if (movePool.includes('thunderwave') && abilities.includes('Prankster')) { - counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce STAB priority - if ( - ['Bulky Attacker', 'Bulky Setup', 'Wallbreaker', 'Doubles Wallbreaker'].includes(role) || - PRIORITY_POKEMON.includes(species.id) - ) { - const priorityMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if ( - types.includes(moveType) && (move.priority > 0 || (moveid === 'grassyglide' && abilities.includes('Grassy Surge'))) && - (move.basePower || move.basePowerCallback) - ) { - priorityMoves.push(moveid); - } - } - if (priorityMoves.length) { - const moveid = this.sample(priorityMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce a single STAB for Moltres - if (species.id === 'moltres') { - const typeToEnforce = this.randomChance(1, 2) ? 'Fire' : 'Flying'; - - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && typeToEnforce === moveType) { - stabMoves.push(moveid); - } - } - while (runEnforcementChecker(typeToEnforce)) { - if (!stabMoves.length) break; - const moveid = this.sampleNoReplace(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce STAB - for (const type of types) { - // Moltres already has STAB, so ignore this block - if (species.id === 'moltres') break; - // prevents Meowscarada from being enforced stab moves - if (species.id === 'meowscarada') break; - // Check if a STAB move of that type should be required - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) { - stabMoves.push(moveid); - } - } - while (runEnforcementChecker(type)) { - if (!stabMoves.length) break; - const moveid = this.sampleNoReplace(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Tera STAB - // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care) - if (!counter.get('stabtera') && !['Bulky Support', 'Doubles Support'].includes(role) && - !abilities.includes('Protean')) { - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && teraType === moveType) { - stabMoves.push(moveid); - } - } - if (stabMoves.length) { - const moveid = this.sample(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // If no STAB move was added, add a STAB move - // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care) - if (!counter.get('stab') && !abilities.includes('Protean')) { - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) { - stabMoves.push(moveid); - } - } - if (stabMoves.length) { - const moveid = this.sample(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce recovery - if (['Bulky Support', 'Bulky Attacker', 'Bulky Setup'].includes(role)) { - const recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid)); - if (recoveryMoves.length) { - const moveid = this.sample(recoveryMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce setup - if (role.includes('Setup') || role === 'Tera Blast user') { - // First, try to add a non-Speed setup move - const nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && !SPEED_SETUP.includes(moveid)); - if (nonSpeedSetupMoves.length) { - const moveid = this.sample(nonSpeedSetupMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } else { - // No non-Speed setup moves, so add any (Speed) setup move - const setupMoves = movePool.filter(moveid => SETUP.includes(moveid)); - if (setupMoves.length) { - const moveid = this.sample(setupMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - - // Enforce redirecting moves and Fake Out on Doubles Support - if (role === 'Doubles Support') { - for (const moveid of ['fakeout', 'followme', 'ragepowder']) { - if (movePool.includes(moveid)) { - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - - // Enforce Protect - if (role.includes('Protect')) { - const protectMoves = movePool.filter(moveid => PROTECT_MOVES.includes(moveid)); - if (protectMoves.length) { - const moveid = this.sample(protectMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce a move not on the noSTAB list - if (!counter.damagingMoves.size) { - // Choose an attacking move - const attackingMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - if (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid); - } - if (attackingMoves.length) { - const moveid = this.sample(attackingMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce coverage move - if (!['AV Pivot', 'Fast Support', 'Bulky Support', 'Bulky Protect', 'Doubles Support'].includes(role)) { - if (counter.damagingMoves.size === 1) { - // Find the type of the current attacking move - const currentAttackType = counter.damagingMoves.values().next().value!.type; - // Choose an attacking move that is of different type to the current single attack - const coverageMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback)) { - if (currentAttackType !== moveType) coverageMoves.push(moveid); - } - } - if (coverageMoves.length) { - const moveid = this.sample(coverageMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - - // Add (moves.size < this.maxMoveCount) as a condition if moves is getting larger than 4 moves. - // If you want moves to be favored but not required, add something like && this.randomChance(1, 2) to your condition. - - // Choose remaining moves randomly from movepool and add them to moves list: - while (moves.size < this.maxMoveCount && movePool.length) { - if (moves.size + movePool.length <= this.maxMoveCount) { - for (const moveid of movePool) { - moves.add(moveid); - } - break; - } - const moveid = this.sample(movePool); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - for (const pair of MOVE_PAIRS) { - if (moveid === pair[0] && movePool.includes(pair[1])) { - counter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - if (moveid === pair[1] && movePool.includes(pair[0])) { - counter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - return moves; - } - - override getPriorityItem( - ability: string, - types: string[], - moves: Set, - counter: MoveCounter, - teamDetails: RandomTeamsTypes.TeamDetails, - species: Species, - isLead: boolean, - isDoubles: boolean, - teraType: string, - role: RandomTeamsTypes.Role, - ) { - if (this.getSuperType(moves)) return this.getSuperType(moves) + " Orb"; - if (!isDoubles) { - if (role === 'Fast Bulky Setup' && (ability === 'Quark Drive' || ability === 'Protosynthesis')) { - return 'Booster Energy'; - } - if (species.id === 'lokix') { - return (role === 'Fast Attacker') ? 'Silver Powder' : 'Life Orb'; - } - } - if (species.requiredItems) { - // Z-Crystals aren't available in Gen 9, so require Plates - if (species.baseSpecies === 'Arceus') { - return species.requiredItems[0]; - } - return this.sample(species.requiredItems); - } - if (role === 'AV Pivot') return 'Assault Vest'; - // Super Type hardcodes - if (species.id === 'cyllindrake' && moves.has('shiftgear')) return 'Throat Spray'; - if (species.id === 'albatrygon' && moves.has('acrobatics')) return 'Sitrus Berry'; - if (species.id === 'yiankutku' && moves.has('facade') || species.id === 'bluekutku' && moves.has('facade')) { - return 'Frost Orb'; - } - if (species.id === 'xenojiiva' && ability === 'Quark Drive') return 'Booster Energy'; - if (species.id === 'odogaron' && moves.has('closecombat')) return 'White Herb'; - if (species.id === 'odogaron' && !moves.has('closecombat')) return 'Sitrus Berry'; - if ( - ability === 'Magic Guard' || ability === 'Fervent Scales' || - (ability === 'Sheer Force' && counter.get('sheerforce')) - ) { - return 'Life Orb'; - } - if (moves.has('devour') && ability === 'Unburden') return 'Liechi Berry'; - if (moves.has('virulentvolley')) return 'Loaded Dice'; - if (moves.has('magnalance') && ability === 'Reactive Core') return 'Flame Orb'; - if (moves.has('dragondance') && ability === 'Reactive Core') return 'Frost Orb'; - // other - if (moves.has('substitute')) return 'Leftovers'; - if (moves.has('protect') && ability !== 'Speed Boost') return 'Leftovers'; - if (counter.get('skilllink') && ability !== 'Skill Link' && species.id !== 'breloom') return 'Loaded Dice'; - if (moves.has('shellsmash') && ability !== 'Weak Armor') return 'White Herb'; - if ((ability === 'Guts' || moves.has('facade')) && !moves.has('sleeptalk')) { - return (types.includes('Fire') || ability === 'Toxic Boost' || ability === 'Poison Heal') ? 'Toxic Orb' : 'Flame Orb'; - } - if (['healingwish', 'switcheroo', 'trick'].some(m => moves.has(m))) { - if ( - species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && - role !== 'Wallbreaker' && role !== 'Doubles Wallbreaker' && !counter.get('priority') - ) { - return 'Choice Scarf'; - } else { - return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs'; - } - } - if ( - role === 'Wallbreaker' && (counter.get('Physical') > counter.get('Special')) && !counter.get('Status') - ) { - return 'Choice Band'; - } - if ( - role === 'Wallbreaker' && (counter.get('Physical') < counter.get('Special')) && !counter.get('Status') - ) { - return 'Choice Specs'; - } - if (ability === 'Poison Heal' || ability === 'Quick Feet') return 'Toxic Orb'; - if (moves.has('acrobatics') && ability !== 'Quark Drive' && ability !== 'Protosynthesis') return ''; - if (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay'; - if (ability === 'Gluttony') return `${this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki'])} Berry`; - if ( - ['Cheek Pouch', 'Cud Chew', 'Harvest', 'Ripen'].some(m => ability === m) || - moves.has('bellydrum') || moves.has('filletaway') - ) { - return 'Sitrus Berry'; - } - if (this.dex.getEffectiveness('Rock', species) >= 2) return 'Heavy-Duty Boots'; - if (species.nfe) return 'Eviolite'; - if (['Bulky Attacker', 'Bulky Support', 'Bulky Setup'].some(m => role === (m))) return 'Leftovers'; - if (role === 'Fast Support' || role === 'Fast Bulky Setup') { - return (counter.get('Physical') + counter.get('Special') >= 3) ? 'Life Orb' : 'Leftovers'; - } - } - - getSuperType(moves: Set | string[]): string { - for (const move of moves) { - if (move.includes('crystal')) return "Crystal"; - if (move.includes('feral')) return "Feral"; - } - return ""; - } - - override randomSet( - s: string | Species, - teamDetails: RandomTeamsTypes.TeamDetails = {}, - isLead = false, - isDoubles = false - ): RandomTeamsTypes.RandomSet { - const species = this.dex.species.get(s); - const forme = this.getForme(species); - const sets = this.randomSets[species.id]["sets"]; - const possibleSets: RandomTeamsTypes.RandomSetData[] = []; - - // const ruleTable = this.dex.formats.getRuleTable(this.format); - - for (const set of sets) { - // Prevent Fast Bulky Setup on lead Paradox Pokemon, since it generates Booster Energy. - const abilities = set.abilities!; - if ( - isLead && (abilities.includes('Protosynthesis') || abilities.includes('Quark Drive')) && - set.role === 'Fast Bulky Setup' - ) continue; - // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented. - // used here to limit team to 1 Super Types user - if (teamDetails.teraBlast && set.role === 'Tera Blast user') { - continue; - } - possibleSets.push(set); - } - const set = this.sampleIfArray(possibleSets); - const role = set.role; - const movePool: string[] = []; - for (const movename of set.movepool) { - movePool.push(this.dex.moves.get(movename).id); - } - const teraTypes = set.teraTypes!; - let teraType = this.sampleIfArray(teraTypes); - - let ability = ''; - let item = undefined; - - const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 }; - const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 }; - - const types = []; - types[0] = species.types[0]; - if (species.types[1]) types[1] = species.types[1]; - const abilities = set.abilities!; - - // Get moves - const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role); - const counter = this.queryMoves(moves, species, teraType, abilities); - - if (this.getSuperType(moves)) types[1] = this.getSuperType(moves); - - // Get ability - ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role); - - // Get items - // First, the priority items - item = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles, teraType, role); - if (item === undefined) { - if (isDoubles) { - item = this.getDoublesItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role); - } else { - item = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role); - } - } - - // Get level - const level = this.getLevel(species, isDoubles); - - // Prepare optimal HP - const srImmunity = ability === 'Magic Guard' || item === 'Heavy-Duty Boots'; - let srWeakness = srImmunity ? 0 : this.dex.getEffectiveness('Rock', species); - // Crash damage move users want an odd HP to survive two misses - if (['axekick', 'highjumpkick', 'jumpkick'].some(m => moves.has(m))) srWeakness = 2; - while (evs.hp > 1) { - const hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10); - if ((moves.has('substitute') && ['Sitrus Berry', 'Salac Berry'].includes(item))) { - // Two Substitutes should activate Sitrus Berry - if (hp % 4 === 0) break; - } else if ((moves.has('bellydrum') || moves.has('filletaway')) && (item === 'Sitrus Berry' || ability === 'Gluttony')) { - // Belly Drum should activate Sitrus Berry - if (hp % 2 === 0) break; - } else if (moves.has('substitute') && moves.has('endeavor')) { - // Luvdisc should be able to Substitute down to very low HP - if (hp % 4 > 0) break; - } else { - // Maximize number of Stealth Rock switch-ins - if (srWeakness <= 0 || ability === 'Regenerator' || ['Leftovers', 'Life Orb', 'Eviolite'].includes(item)) break; - if (item !== 'Sitrus Berry' && hp % (4 / srWeakness) > 0) break; - // Minimise number of Stealth Rock switch-ins to activate Sitrus Berry - if (item === 'Sitrus Berry' && hp % (4 / srWeakness) === 0) break; - } - evs.hp -= 4; - } - - // Minimize confusion damage - const noAttackStatMoves = [...moves].every(m => { - const move = this.dex.moves.get(m); - if (move.damageCallback || move.damage) return true; - if (move.id === 'shellsidearm') return false; - // Magearna and doubles Dragonite, though these can work well as a general rule - if (move.id === 'terablast' && ( - species.id === 'porygon2' || moves.has('shiftgear') || species.baseStats.atk > species.baseStats.spa) - ) return false; - return move.category !== 'Physical' || move.id === 'bodypress' || move.id === 'foulplay'; - }); - // prevents Illumise (who can turn into Volbeat with Physical moves) from having 0 Atk EVs - if (noAttackStatMoves && !moves.has('transform') && this.format.mod !== 'partnersincrime' && - species.id !== 'illumise') { - evs.atk = 0; - ivs.atk = 0; - } - - // Enforce Tera Type after all set generation is done to prevent infinite generation - if (this.forceTeraType) teraType = this.forceTeraType; - - // shuffle moves to add more randomness to camomons - const shuffledMoves = Array.from(moves); - this.prng.shuffle(shuffledMoves); - return { - name: species.baseSpecies, - species: forme, - gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')), - shiny: this.randomChance(1, 1024), - level, - moves: shuffledMoves, - ability, - evs, - ivs, - item, - teraType, - role, - }; - } - - override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./random-sets.json'); - - randomSCTeam() { - this.enforceNoDirectCustomBanlistChanges(); - - const seed = this.prng.getSeed(); - const ruleTable = this.dex.formats.getRuleTable(this.format); - const pokemon: RandomTeamsTypes.RandomSet[] = []; - - // For Monotype - const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause'); - const isDoubles = this.format.gameType !== 'singles'; - const typePool = this.dex.types.names().filter(name => name !== "Stellar"); - const type = this.forceMonotype || this.sample(typePool); - - // PotD stuff - // const usePotD = global.Config && Config.potd && ruleTable.has('potd'); - // const potd = usePotD ? this.dex.species.get(Config.potd) : null; - - const baseFormes: { [k: string]: number } = {}; - - // const superTypeCount = 0; - const typeCount: { [k: string]: number } = {}; - const typeComboCount: { [k: string]: number } = {}; - const typeWeaknesses: { [k: string]: number } = {}; - const typeDoubleWeaknesses: { [k: string]: number } = {}; - const teamDetails: RandomTeamsTypes.TeamDetails = {}; - // let numMaxLevelPokemon = 0; - - const pokemonList = Object.keys(this.randomSets); - const [pokemonPool, baseSpeciesPool] = this.getPokemonPool(type, pokemon, isMonotype, pokemonList); - - let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1; - while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) { - const baseSpecies = this.sampleNoReplace(baseSpeciesPool); - const species = this.dex.species.get(this.sample(pokemonPool[baseSpecies])); - if (!species.exists) continue; - - // Limit to one of each species (Species Clause) - if (baseFormes[species.baseSpecies]) continue; - - // Treat Ogerpon formes and Terapagos like the Tera Blast user role; reject if team has one already - if (['ogerpon', 'ogerponhearthflame', 'terapagos'].includes(species.id) && teamDetails.teraBlast) continue; - - // Illusion shouldn't be on the last slot - if (species.baseSpecies === 'Sorrowcean' && pokemon.length >= (this.maxTeamSize - 1)) continue; - - const types = species.types; - const typeCombo = types.slice().sort().join(); - const weakToFreezeDry = ( - this.dex.getEffectiveness('Ice', species) > 0 || - (this.dex.getEffectiveness('Ice', species) > -2 && types.includes('Water')) - ); - // Dynamically scale limits for different team sizes. The default and minimum value is 1. - const limitFactor = Math.round(this.maxTeamSize / 6) || 1; - - // Limit three of any type combination in Monotype - if (!this.forceMonotype && isMonotype && (typeComboCount[typeCombo] >= 3 * limitFactor)) continue; - - // The Pokemon of the Day - // if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd; - - // testing code - // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Terapagos'); - - let set: RandomTeamsTypes.RandomSet; - - if (leadsRemaining) { - if ( - isDoubles && DOUBLES_NO_LEAD_POKEMON.includes(species.baseSpecies) || - !isDoubles && NO_LEAD_POKEMON.includes(species.baseSpecies) - ) { - if (pokemon.length + leadsRemaining === this.maxTeamSize) continue; - set = this.randomSet(species, teamDetails, false, isDoubles); - if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue; - pokemon.push(set); - } else { - set = this.randomSet(species, teamDetails, true, isDoubles); - if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue; - pokemon.unshift(set); - leadsRemaining--; - } - } else { - set = this.randomSet(species, teamDetails, false, isDoubles); - if (teamDetails.teraBlast && this.getSuperType(set.moves)) continue; - pokemon.push(set); - } - - // Don't bother tracking details for the last Pokemon - if (pokemon.length === this.maxTeamSize) break; - - // Now that our Pokemon has passed all checks, we can increment our counters - baseFormes[species.baseSpecies] = 1; - - // Increment type counters - for (const typeName of types) { - if (typeName in typeCount) { - typeCount[typeName]++; - } else { - typeCount[typeName] = 1; - } - } - if (typeCombo in typeComboCount) { - typeComboCount[typeCombo]++; - } else { - typeComboCount[typeCombo] = 1; - } - - // Increment item counter - if (set.item === "Crystal Orb" || set.item === "Feral Orb") { - teamDetails.teraBlast = 1; - } - - // Increment weakness counter - for (const typeName of this.dex.types.names()) { - // it's weak to the type - if (this.dex.getEffectiveness(typeName, species) > 0) { - typeWeaknesses[typeName]++; - } - if (this.dex.getEffectiveness(typeName, species) > 1) { - typeDoubleWeaknesses[typeName]++; - } - } - // Count Dry Skin/Fluffy as Fire weaknesses - if (['Dry Skin', 'Fluffy'].includes(set.ability) && this.dex.getEffectiveness('Fire', species) === 0) { - typeWeaknesses['Fire']++; - } - if (weakToFreezeDry) typeWeaknesses['Freeze-Dry']++; - - // Increment level 100 counter - // if (set.level === 100) numMaxLevelPokemon++; - - // Track what the team has - if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1; - if (set.ability === 'Drought' || set.ability === 'Orichalcum Pulse' || set.moves.includes('sunnyday')) { - teamDetails.sun = 1; - } - if (set.ability === 'Sand Stream') teamDetails.sand = 1; - if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) { - teamDetails.snow = 1; - } - if (set.moves.includes('healbell')) teamDetails.statusCure = 1; - if (set.moves.includes('spikes') || set.moves.includes('ceaselessedge')) { - teamDetails.spikes = (teamDetails.spikes || 0) + 1; - } - if (set.moves.includes('toxicspikes') || set.ability === 'Toxic Debris') teamDetails.toxicSpikes = 1; - if (set.moves.includes('stealthrock') || set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1; - if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1; - if (set.moves.includes('defog')) teamDetails.defog = 1; - if (set.moves.includes('rapidspin') || set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1; - if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) { - teamDetails.screens = 1; - } - if (set.role === 'Tera Blast user' || species.baseSpecies === "Ogerpon" || species.baseSpecies === "Terapagos") { - teamDetails.teraBlast = 1; - } - } - if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built - throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`); - } - - return pokemon; - } -} - -export default RandomSCTeams; +import { RandomTeams, type MoveCounter } from "../gen9/teams"; + +// Moves that restore HP: +const RECOVERY_MOVES = [ + 'healorder', 'milkdrink', 'moonlight', 'morningsun', 'recover', 'roost', 'shoreup', 'slackoff', 'softboiled', 'strengthsap', 'synthesis', +]; +// Moves that boost Attack: +const PHYSICAL_SETUP = [ + 'bellydrum', 'bulkup', 'coil', 'curse', 'dragondance', 'honeclaws', 'howl', 'meditate', 'poweruppunch', 'swordsdance', 'tidyup', 'victorydance', + 'filletaway', +]; +// Moves which boost Special Attack: +const SPECIAL_SETUP = [ + 'calmmind', 'chargebeam', 'geomancy', 'nastyplot', 'quiverdance', 'tailglow', 'takeheart', 'torchsong', 'filletaway', +]; +// Some moves that only boost Speed: +const SPEED_SETUP = [ + 'agility', 'autotomize', 'flamecharge', 'rockpolish', 'trailblaze', +]; +// Conglomerate for ease of access +const SETUP = [ + 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'dragondance', + 'filletaway', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', 'quiverdance', + 'rockpolish', 'shellsmash', 'shiftgear', 'swordsdance', 'tailglow', 'takeheart', 'tidyup', 'trailblaze', 'trickroom', 'workup', 'victorydance', + 'feralresilience', 'feralspray', 'crystalfortification', +]; +const SPEED_CONTROL = [ + 'electroweb', 'glare', 'icywind', 'lowsweep', 'quash', 'stringshot', 'tailwind', 'thunderwave', 'trickroom', +]; +// Hazard-setting moves +const HAZARDS = [ + 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', 'crystalshard', +]; +// Protect and its variants +const PROTECT_MOVES = [ + 'banefulbunker', 'burningbulwark', 'protect', 'silktrap', 'spikyshield', +]; +// Moves that switch the user out +const PIVOT_MOVES = [ + 'chillyreception', 'flipturn', 'partingshot', 'shedtail', 'teleport', 'uturn', 'voltswitch', +]; + +// Moves that should be paired together when possible +const MOVE_PAIRS = [ + ['lightscreen', 'reflect'], + ['sleeptalk', 'rest'], + ['protect', 'wish'], + ['spikyshield', 'wish'], + ['leechseed', 'protect'], + ['leechseed', 'substitute'], + ['moongeistbeam', 'moonlight'], + ['hex', 'willowisp'], + ['hex', 'toxic'], + ['hex', 'thunderwave'], + ['nightmare', 'willowisp'], + ['nightmare', 'toxic'], + ['nightmare', 'thunderwave'], +]; + +/** Pokemon who always want priority STAB, and are fine with it as its only STAB move of that type */ +const PRIORITY_POKEMON = [ + 'breloom', 'brutebonnet', 'cacturne', 'honchkrow', 'mimikyu', 'ragingbolt', 'scizor', +]; + +/** Pokemon who should never be in the lead slot */ +const NO_LEAD_POKEMON = [ + 'Zacian', 'Zamazenta', +]; +const DOUBLES_NO_LEAD_POKEMON = [ + 'Basculegion', 'Houndstone', 'Iron Bundle', 'Roaring Moon', 'Zacian', 'Zamazenta', +]; +export class Random6x6Teams extends RandomTeams { + override cullMovePool( + types: string[], + moves: Set, + abilities: string[], + counter: MoveCounter, + movePool: string[], + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + teraType: string, + role: RandomTeamsTypes.Role, + ): void { + if (moves.size + movePool.length <= this.maxMoveCount) return; + // If we have two unfilled moves and only one unpaired move, cull the unpaired move. + if (moves.size === this.maxMoveCount - 2) { + const unpairedMoves = [...movePool]; + for (const pair of MOVE_PAIRS) { + if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { + this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0])); + this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1])); + } + } + if (unpairedMoves.length === 1) { + this.fastPop(movePool, movePool.indexOf(unpairedMoves[0])); + } + } + + // These moves are paired, and shouldn't appear if there is not room for them both. + if (moves.size === this.maxMoveCount - 1) { + for (const pair of MOVE_PAIRS) { + if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { + this.fastPop(movePool, movePool.indexOf(pair[0])); + this.fastPop(movePool, movePool.indexOf(pair[1])); + } + } + } + + // Develop additional move lists + const statusMoves = this.cachedStatusMoves; + + // Team-based move culls + if (teamDetails.screens) { + if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil')); + if (movePool.length >= this.maxMoveCount + 2) { + if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect')); + if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen')); + } + } + if (teamDetails.stickyWeb) { + if (movePool.includes('stickyweb')) this.fastPop(movePool, movePool.indexOf('stickyweb')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.stealthRock) { + if (movePool.includes('stealthrock')) this.fastPop(movePool, movePool.indexOf('stealthrock')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.defog || teamDetails.rapidSpin) { + if (movePool.includes('defog')) this.fastPop(movePool, movePool.indexOf('defog')); + if (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.toxicSpikes) { + if (movePool.includes('toxicspikes')) this.fastPop(movePool, movePool.indexOf('toxicspikes')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.spikes && teamDetails.spikes >= 2) { + if (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + if (teamDetails.statusCure) { + if (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell')); + if (moves.size + movePool.length <= this.maxMoveCount) return; + } + + if (isDoubles) { + const doublesIncompatiblePairs = [ + // In order of decreasing generalizability + [SPEED_CONTROL, SPEED_CONTROL], + [HAZARDS, HAZARDS], + ['rockslide', 'stoneedge'], + [SETUP, ['fakeout', 'helpinghand']], + [PROTECT_MOVES, 'wideguard'], + [['fierydance', 'fireblast'], 'heatwave'], + ['dazzlinggleam', ['fleurcannon', 'moonblast']], + ['poisongas', ['toxicspikes', 'willowisp']], + [RECOVERY_MOVES, ['healpulse', 'lifedew']], + ['healpulse', 'lifedew'], + ['haze', 'icywind'], + [['hydropump', 'muddywater'], ['muddywater', 'scald']], + ['disable', 'encore'], + ['freezedry', 'icebeam'], + ['energyball', 'leafstorm'], + ['earthpower', 'sandsearstorm'], + ['coaching', ['helpinghand', 'howl']], + ]; + + for (const pair of doublesIncompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); + + if (role !== 'Offensive Protect') this.incompatibleMoves(moves, movePool, PROTECT_MOVES, ['flipturn', 'uturn']); + } + + // General incompatibilities + const incompatiblePairs = [ + // These moves don't mesh well with other aspects of the set + [statusMoves, ['healingwish', 'switcheroo', 'trick']], + [SETUP, PIVOT_MOVES], + [SETUP, HAZARDS], + [SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']], + [PHYSICAL_SETUP, PHYSICAL_SETUP], + [SPECIAL_SETUP, 'thunderwave'], + ['substitute', PIVOT_MOVES], + [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']], + ['curse', ['irondefense', 'rapidspin']], + ['dragondance', 'dracometeor'], + ['yawn', 'roar'], + ['trick', 'uturn'], + + // These attacks are redundant with each other + [['psychic', 'psychicnoise'], ['psyshock', 'psychicnoise']], + ['surf', ['hydropump', 'scald']], + ['liquidation', 'wavecrash'], + ['aquajet', 'flipturn'], + ['gigadrain', 'leafstorm'], + ['powerwhip', 'hornleech'], + ['airslash', 'hurricane'], + ['knockoff', 'foulplay'], + ['throatchop', ['crunch', 'lashout']], + ['doubleedge', ['bodyslam', 'headbutt']], + [['fireblast', 'magmastorm'], ['fierydance', 'flamethrower', 'lavaplume']], + ['thunderpunch', 'wildcharge'], + ['thunderbolt', 'discharge'], + ['gunkshot', ['direclaw', 'poisonjab', 'sludgebomb']], + ['aurasphere', 'focusblast'], + ['closecombat', 'drainpunch'], + [['dragonpulse', 'spacialrend'], 'dracometeor'], + ['heavyslam', 'flashcannon'], + ['alluringvoice', 'dazzlinggleam'], + ['defog', 'rapidspin'], + + // These status moves are redundant with each other + ['taunt', 'disable'], + [['thunderwave', 'toxic'], ['thunderwave', 'willowisp']], + [['thunderwave', 'toxic', 'willowisp'], 'toxicspikes'], + + // This space reserved for assorted hardcodes that otherwise make little sense out of context + // Landorus and Thundurus + ['nastyplot', ['rockslide', 'knockoff']], + // Persian + ['switcheroo', 'fakeout'], + // Amoonguss, though this can work well as a general rule later + ['toxic', 'clearsmog'], + // Chansey and Blissey + ['healbell', 'stealthrock'], + // Araquanid and Magnezone + ['mirrorcoat', ['hydropump', 'bodypress']], + ]; + + for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); + + if (!types.includes('Ice')) this.incompatibleMoves(moves, movePool, 'icebeam', 'icywind'); + + if (!isDoubles) this.incompatibleMoves(moves, movePool, 'taunt', 'encore'); + + if (!types.includes('Dark') && teraType !== 'Dark') this.incompatibleMoves(moves, movePool, 'knockoff', 'suckerpunch'); + + if (!abilities.includes('Prankster')) this.incompatibleMoves(moves, movePool, 'thunderwave', 'yawn'); + + // This space reserved for assorted hardcodes that otherwise make little sense out of context: + // To force Close Combat on Barraskewda without locking it to Tera Fighting + if (species.id === 'barraskewda') { + this.incompatibleMoves(moves, movePool, ['psychicfangs', 'throatchop'], ['poisonjab', 'throatchop']); + } + // To force Toxic on Quagsire + if (species.id === 'quagsire') this.incompatibleMoves(moves, movePool, 'spikes', 'icebeam'); + // Taunt/Knock should be Cyclizar's flex moveslot + if (species.id === 'cyclizar') this.incompatibleMoves(moves, movePool, 'taunt', 'knockoff'); + // To force Stealth Rock on Camerupt + if (species.id === 'camerupt') this.incompatibleMoves(moves, movePool, 'roar', 'willowisp'); + // nothing else rolls these lol + if (species.id === 'coalossal') this.incompatibleMoves(moves, movePool, 'flamethrower', 'overheat'); + } + + override randomMoveset( + types: string[], + abilities: string[], + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + movePool: string[], + teraType: string, + role: RandomTeamsTypes.Role, + ): Set { + const moves = new Set(); + let counter = this.queryMoves(moves, species, teraType, abilities); + this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role); + + // If there are only four moves, add all moves and return early + if (movePool.length <= this.maxMoveCount) { + for (const moveid of movePool) { + moves.add(moveid); + } + return moves; + } + + const runEnforcementChecker = (checkerName: string) => { + if (!this.moveEnforcementCheckers[checkerName]) return false; + return this.moveEnforcementCheckers[checkerName]( + movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles, teraType, role + ); + }; + + if (role === 'Tera Blast user') { + counter = this.addMove('terablast', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + // Add required move (e.g. Relic Song for Meloetta-P) + if (species.requiredMove) { + const move = this.dex.moves.get(species.requiredMove).id; + counter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Add other moves you really want to have, e.g. STAB, recovery, setup. + + // Enforce Facade if Guts is a possible ability + if (movePool.includes('facade') && abilities.includes('Guts')) { + counter = this.addMove('facade', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Enforce Night Shade, Revelation Dance, Revival Blessing, and Sticky Web + for (const moveid of ['nightshade', 'revelationdance', 'revivalblessing', 'stickyweb']) { + if (movePool.includes(moveid)) { + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce Trick Room on Doubles Wallbreaker + if (movePool.includes('trickroom') && role === 'Doubles Wallbreaker') { + counter = this.addMove('trickroom', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Enforce hazard removal on Bulky Support if the team doesn't already have it + if (role === 'Bulky Support' && !teamDetails.defog && !teamDetails.rapidSpin) { + if (movePool.includes('rapidspin')) { + counter = this.addMove('rapidspin', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + if (movePool.includes('defog')) { + counter = this.addMove('defog', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce Knock Off on pure Normal- and Fighting-types in singles + if (!isDoubles && types.length === 1 && (types.includes('Normal') || types.includes('Fighting'))) { + if (movePool.includes('knockoff')) { + counter = this.addMove('knockoff', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce Flip Turn on pure Water-type Wallbreakers + if (types.length === 1 && types.includes('Water') && + role === 'Wallbreaker' && movePool.includes('flipturn')) { + counter = this.addMove('flipturn', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + + // Enforce Spore on Smeargle + if (species.id === 'smeargle') { + if (movePool.includes('spore')) { + counter = this.addMove('spore', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce moves in doubles + if (isDoubles) { + const doublesEnforcedMoves = ['auroraveil', 'mortalspin', 'spore']; + for (const moveid of doublesEnforcedMoves) { + if (movePool.includes(moveid)) { + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + // Enforce Fake Out on slow Pokemon + if (movePool.includes('fakeout') && species.baseStats.spe <= 50) { + counter = this.addMove('fakeout', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + // Enforce Tailwind on Prankster and Gale Wings users + if (movePool.includes('tailwind') && (abilities.includes('Prankster') || abilities.includes('Gale Wings'))) { + counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + // Enforce Thunder Wave on Prankster users as well + if (movePool.includes('thunderwave') && abilities.includes('Prankster')) { + counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce STAB priority + if ( + ['Bulky Attacker', 'Bulky Setup', 'Wallbreaker', 'Doubles Wallbreaker'].includes(role) || + PRIORITY_POKEMON.includes(species.id) + ) { + const priorityMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if ( + types.includes(moveType) && (move.priority > 0 || (moveid === 'grassyglide' && abilities.includes('Grassy Surge'))) && + (move.basePower || move.basePowerCallback) + ) { + priorityMoves.push(moveid); + } + } + if (priorityMoves.length) { + const moveid = this.sample(priorityMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce a single STAB for Moltres + if (species.id === 'moltres') { + const typeToEnforce = this.randomChance(1, 2) ? 'Fire' : 'Flying'; + + const stabMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && typeToEnforce === moveType) { + stabMoves.push(moveid); + } + } + while (runEnforcementChecker(typeToEnforce)) { + if (!stabMoves.length) break; + const moveid = this.sampleNoReplace(stabMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce STAB + for (const type of types) { + // Moltres already has STAB, so ignore this block + if (species.id === 'moltres') break; + // prevents Meowscarada from being enforced stab moves + if (species.id === 'meowscarada') break; + // Check if a STAB move of that type should be required + const stabMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) { + stabMoves.push(moveid); + } + } + while (runEnforcementChecker(type)) { + if (!stabMoves.length) break; + const moveid = this.sampleNoReplace(stabMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce Tera STAB + // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care) + if (!counter.get('stabtera') && !['Bulky Support', 'Doubles Support'].includes(role) && + !abilities.includes('Protean')) { + const stabMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && teraType === moveType) { + stabMoves.push(moveid); + } + } + if (stabMoves.length) { + const moveid = this.sample(stabMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // If no STAB move was added, add a STAB move + // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care) + if (!counter.get('stab') && !abilities.includes('Protean')) { + const stabMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) { + stabMoves.push(moveid); + } + } + if (stabMoves.length) { + const moveid = this.sample(stabMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce recovery + if (['Bulky Support', 'Bulky Attacker', 'Bulky Setup'].includes(role)) { + const recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid)); + if (recoveryMoves.length) { + const moveid = this.sample(recoveryMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce setup + if (role.includes('Setup') || role === 'Tera Blast user') { + // First, try to add a non-Speed setup move + const nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && !SPEED_SETUP.includes(moveid)); + if (nonSpeedSetupMoves.length) { + const moveid = this.sample(nonSpeedSetupMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } else { + // No non-Speed setup moves, so add any (Speed) setup move + const setupMoves = movePool.filter(moveid => SETUP.includes(moveid)); + if (setupMoves.length) { + const moveid = this.sample(setupMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + } + + // Enforce redirecting moves and Fake Out on Doubles Support + if (role === 'Doubles Support') { + for (const moveid of ['fakeout', 'followme', 'ragepowder']) { + if (movePool.includes(moveid)) { + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + } + + // Enforce Protect + if (role.includes('Protect')) { + const protectMoves = movePool.filter(moveid => PROTECT_MOVES.includes(moveid)); + if (protectMoves.length) { + const moveid = this.sample(protectMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce a move not on the noSTAB list + if (!counter.damagingMoves.size) { + // Choose an attacking move + const attackingMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + if (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid); + } + if (attackingMoves.length) { + const moveid = this.sample(attackingMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + + // Enforce coverage move + if (!['AV Pivot', 'Fast Support', 'Bulky Support', 'Bulky Protect', 'Doubles Support'].includes(role)) { + if (counter.damagingMoves.size === 1) { + // Find the type of the current attacking move + const currentAttackType = counter.damagingMoves.values().next().value!.type; + // Choose an attacking move that is of different type to the current single attack + const coverageMoves = []; + for (const moveid of movePool) { + const move = this.dex.moves.get(moveid); + const moveType = this.getMoveType(move, species, abilities, teraType); + if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback)) { + if (currentAttackType !== moveType) coverageMoves.push(moveid); + } + } + if (coverageMoves.length) { + const moveid = this.sample(coverageMoves); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + } + + // Add (moves.size < this.maxMoveCount) as a condition if moves is getting larger than 4 moves. + // If you want moves to be favored but not required, add something like && this.randomChance(1, 2) to your condition. + + // Choose remaining moves randomly from movepool and add them to moves list: + while (moves.size < this.maxMoveCount && movePool.length) { + if (moves.size + movePool.length <= this.maxMoveCount) { + for (const moveid of movePool) { + moves.add(moveid); + } + break; + } + const moveid = this.sample(movePool); + counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + for (const pair of MOVE_PAIRS) { + if (moveid === pair[0] && movePool.includes(pair[1])) { + counter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + if (moveid === pair[1] && movePool.includes(pair[0])) { + counter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead, isDoubles, + movePool, teraType, role); + } + } + } + return moves; + } + + override getPriorityItem( + ability: string, + types: string[], + moves: Set, + counter: MoveCounter, + teamDetails: RandomTeamsTypes.TeamDetails, + species: Species, + isLead: boolean, + isDoubles: boolean, + teraType: string, + role: RandomTeamsTypes.Role, + ) { + if (!isDoubles) { + if (role === 'Fast Bulky Setup' && (ability === 'Quark Drive' || ability === 'Protosynthesis')) { + return 'Booster Energy'; + } + if (species.id === 'lokix') { + return (role === 'Fast Attacker') ? 'Silver Powder' : 'Life Orb'; + } + } + if (species.requiredItems) { + // Z-Crystals aren't available in Gen 9, so require Plates + if (species.baseSpecies === 'Arceus') { + return species.requiredItems[0]; + } + return this.sample(species.requiredItems); + } + if (role === 'AV Pivot') return 'Assault Vest'; + // other + if (moves.has('substitute')) return 'Leftovers'; + if (moves.has('protect') && ability !== 'Speed Boost') return 'Leftovers'; + if (counter.get('skilllink') && ability !== 'Skill Link' && species.id !== 'breloom') return 'Loaded Dice'; + if (moves.has('shellsmash') && ability !== 'Weak Armor') return 'White Herb'; + if ((ability === 'Guts' || moves.has('facade')) && !moves.has('sleeptalk')) { + return (types.includes('Fire') || ability === 'Toxic Boost' || ability === 'Poison Heal') ? 'Toxic Orb' : 'Flame Orb'; + } + if (['healingwish', 'switcheroo', 'trick'].some(m => moves.has(m))) { + if ( + species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && + role !== 'Wallbreaker' && role !== 'Doubles Wallbreaker' && !counter.get('priority') + ) { + return 'Choice Scarf'; + } else { + return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs'; + } + } + if ( + role === 'Wallbreaker' && (counter.get('Physical') > counter.get('Special')) && !counter.get('Status') + ) { + return 'Choice Band'; + } + if ( + role === 'Wallbreaker' && (counter.get('Physical') < counter.get('Special')) && !counter.get('Status') + ) { + return 'Choice Specs'; + } + if (ability === 'Poison Heal' || ability === 'Quick Feet') return 'Toxic Orb'; + if (moves.has('acrobatics') && ability !== 'Quark Drive' && ability !== 'Protosynthesis') return ''; + if (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay'; + if (ability === 'Gluttony') return `${this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki'])} Berry`; + if ( + ['Cheek Pouch', 'Cud Chew', 'Harvest', 'Ripen'].some(m => ability === m) || + moves.has('bellydrum') || moves.has('filletaway') + ) { + return 'Sitrus Berry'; + } + if (this.dex.getEffectiveness('Rock', species) >= 2) return 'Heavy-Duty Boots'; + if (species.nfe) return 'Eviolite'; + if (['Bulky Attacker', 'Bulky Support', 'Bulky Setup'].some(m => role === (m))) return 'Leftovers'; + if (role === 'Fast Support' || role === 'Fast Bulky Setup') { + return (counter.get('Physical') + counter.get('Special') >= 3) ? 'Life Orb' : 'Leftovers'; + } + } + + override randomSet( + s: string | Species, + teamDetails: RandomTeamsTypes.TeamDetails = {}, + isLead = false, + isDoubles = false + ): RandomTeamsTypes.RandomSet { + const species = this.dex.species.get(s); + const forme = this.getForme(species); + const sets = this.randomSets[species.id]["sets"]; + const possibleSets: RandomTeamsTypes.RandomSetData[] = []; + + // const ruleTable = this.dex.formats.getRuleTable(this.format); + + for (const set of sets) { + // Prevent Fast Bulky Setup on lead Paradox Pokemon, since it generates Booster Energy. + const abilities = set.abilities!; + if ( + isLead && (abilities.includes('Protosynthesis') || abilities.includes('Quark Drive')) && + set.role === 'Fast Bulky Setup' + ) continue; + // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented. + if (teamDetails.teraBlast && set.role === 'Tera Blast user') { + continue; + } + possibleSets.push(set); + } + const set = this.sampleIfArray(possibleSets); + const role = set.role; + const movePool: string[] = []; + for (const movename of set.movepool) { + movePool.push(this.dex.moves.get(movename).id); + } + const teraTypes = set.teraTypes!; + let teraType = this.sampleIfArray(teraTypes); + + let ability = ''; + let item = undefined; + + const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 }; + const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 }; + + const types = []; + types[0] = species.types[0]; + if (species.types[1]) types[1] = species.types[1]; + const abilities = set.abilities!; + + // Get moves + const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role); + const counter = this.queryMoves(moves, species, teraType, abilities); + + // Get ability + ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role); + + // Get items + // First, the priority items + item = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles, teraType, role); + if (item === undefined) { + if (isDoubles) { + item = this.getDoublesItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role); + } else { + item = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role); + } + } + + // Get level + const level = this.getLevel(species, isDoubles); + + // Prepare optimal HP + const srImmunity = ability === 'Magic Guard' || item === 'Heavy-Duty Boots'; + let srWeakness = srImmunity ? 0 : this.dex.getEffectiveness('Rock', species); + // Crash damage move users want an odd HP to survive two misses + if (['axekick', 'highjumpkick', 'jumpkick'].some(m => moves.has(m))) srWeakness = 2; + while (evs.hp > 1) { + const hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10); + if ((moves.has('substitute') && ['Sitrus Berry', 'Salac Berry'].includes(item))) { + // Two Substitutes should activate Sitrus Berry + if (hp % 4 === 0) break; + } else if ((moves.has('bellydrum') || moves.has('filletaway')) && (item === 'Sitrus Berry' || ability === 'Gluttony')) { + // Belly Drum should activate Sitrus Berry + if (hp % 2 === 0) break; + } else if (moves.has('substitute') && moves.has('endeavor')) { + // Luvdisc should be able to Substitute down to very low HP + if (hp % 4 > 0) break; + } else { + // Maximize number of Stealth Rock switch-ins + if (srWeakness <= 0 || ability === 'Regenerator' || ['Leftovers', 'Life Orb', 'Eviolite'].includes(item)) break; + if (item !== 'Sitrus Berry' && hp % (4 / srWeakness) > 0) break; + // Minimise number of Stealth Rock switch-ins to activate Sitrus Berry + if (item === 'Sitrus Berry' && hp % (4 / srWeakness) === 0) break; + } + evs.hp -= 4; + } + + // Minimize confusion damage + const noAttackStatMoves = [...moves].every(m => { + const move = this.dex.moves.get(m); + if (move.damageCallback || move.damage) return true; + if (move.id === 'shellsidearm') return false; + // Magearna and doubles Dragonite, though these can work well as a general rule + if (move.id === 'terablast' && ( + species.id === 'porygon2' || moves.has('shiftgear') || species.baseStats.atk > species.baseStats.spa) + ) return false; + return move.category !== 'Physical' || move.id === 'bodypress' || move.id === 'foulplay'; + }); + // prevents Illumise (who can turn into Volbeat with Physical moves) from having 0 Atk EVs + if (noAttackStatMoves && !moves.has('transform') && this.format.mod !== 'partnersincrime' && + species.id !== 'illumise') { + evs.atk = 0; + ivs.atk = 0; + } + + // Enforce Tera Type after all set generation is done to prevent infinite generation + if (this.forceTeraType) teraType = this.forceTeraType; + + // shuffle moves to add more randomness to camomons + const shuffledMoves = Array.from(moves); + this.prng.shuffle(shuffledMoves); + return { + name: species.baseSpecies, + species: forme, + gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')), + shiny: this.randomChance(1, 1024), + level, + moves: shuffledMoves, + ability, + evs, + ivs, + item, + teraType, + role, + }; + } + + override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./random-sets.json'); + + random6x6Team() { + this.enforceNoDirectCustomBanlistChanges(); + + const seed = this.prng.getSeed(); + const ruleTable = this.dex.formats.getRuleTable(this.format); + const pokemon: RandomTeamsTypes.RandomSet[] = []; + + // For Monotype + const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause'); + const isDoubles = this.format.gameType !== 'singles'; + const typePool = this.dex.types.names().filter(name => name !== "Stellar"); + const type = this.forceMonotype || this.sample(typePool); + + // PotD stuff + // const usePotD = global.Config && Config.potd && ruleTable.has('potd'); + // const potd = usePotD ? this.dex.species.get(Config.potd) : null; + + const baseFormes: { [k: string]: number } = {}; + + const typeCount: { [k: string]: number } = {}; + const typeComboCount: { [k: string]: number } = {}; + const typeWeaknesses: { [k: string]: number } = {}; + const typeDoubleWeaknesses: { [k: string]: number } = {}; + const teamDetails: RandomTeamsTypes.TeamDetails = {}; + + const pokemonList = Object.keys(this.randomSets); + const [pokemonPool, baseSpeciesPool] = this.getPokemonPool(type, pokemon, isMonotype, pokemonList); + + let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1; + while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) { + const baseSpecies = this.sampleNoReplace(baseSpeciesPool); + // const z = 0; + const species = this.dex.species.get(this.sample(pokemonPool[baseSpecies])); + if (!species.exists) continue; + + // Limit to one of each species (Species Clause) + if (baseFormes[species.baseSpecies]) continue; + + // Treat Ogerpon formes and Terapagos like the Tera Blast user role; reject if team has one already + if (['ogerpon', 'ogerponhearthflame', 'terapagos'].includes(species.id) && teamDetails.teraBlast) continue; + + const types = species.types; + const typeCombo = types.slice().sort().join(); + const weakToFreezeDry = ( + this.dex.getEffectiveness('Ice', species) > 0 || + (this.dex.getEffectiveness('Ice', species) > -2 && types.includes('Water')) + ); + // Dynamically scale limits for different team sizes. The default and minimum value is 1. + const limitFactor = Math.round(this.maxTeamSize / 6) || 1; + + // Limit three of any type combination in Monotype + if (!this.forceMonotype && isMonotype && (typeComboCount[typeCombo] >= 3 * limitFactor)) continue; + + // The Pokemon of the Day + // if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd; + + // testing code + // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Terapagos'); + + let set: RandomTeamsTypes.RandomSet; + + if (leadsRemaining) { + if ( + isDoubles && DOUBLES_NO_LEAD_POKEMON.includes(species.baseSpecies) || + !isDoubles && NO_LEAD_POKEMON.includes(species.baseSpecies) + ) { + if (pokemon.length + leadsRemaining === this.maxTeamSize) continue; + set = this.randomSet(species, teamDetails, false, isDoubles); + if (teamDetails.teraBlast) continue; + pokemon.push(set); + } else { + set = this.randomSet(species, teamDetails, true, isDoubles); + // if (teamDetails.teraBlast) continue; + pokemon.unshift(set); + leadsRemaining--; + } + } else { + set = this.randomSet(species, teamDetails, false, isDoubles); + // if (teamDetails.teraBlast) continue; + pokemon.push(set); + } + + // Don't bother tracking details for the last Pokemon + if (pokemon.length === this.maxTeamSize) break; + + // Now that our Pokemon has passed all checks, we can increment our counters + baseFormes[species.baseSpecies] = 1; + + // Increment type counters + for (const typeName of types) { + if (typeName in typeCount) { + typeCount[typeName]++; + } else { + typeCount[typeName] = 1; + } + } + if (typeCombo in typeComboCount) { + typeComboCount[typeCombo]++; + } else { + typeComboCount[typeCombo] = 1; + } + + // Increment weakness counter + for (const typeName of this.dex.types.names()) { + // it's weak to the type + if (this.dex.getEffectiveness(typeName, species) > 0) { + typeWeaknesses[typeName]++; + } + if (this.dex.getEffectiveness(typeName, species) > 1) { + typeDoubleWeaknesses[typeName]++; + } + } + // Count Dry Skin/Fluffy as Fire weaknesses + if (['Dry Skin', 'Fluffy'].includes(set.ability) && this.dex.getEffectiveness('Fire', species) === 0) { + typeWeaknesses['Fire']++; + } + if (weakToFreezeDry) typeWeaknesses['Freeze-Dry']++; + + // Increment level 100 counter + // if (set.level === 100) numMaxLevelPokemon++; + + // Track what the team has + if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1; + if (set.ability === 'Drought' || set.ability === 'Orichalcum Pulse' || set.moves.includes('sunnyday')) { + teamDetails.sun = 1; + } + if (set.ability === 'Sand Stream') teamDetails.sand = 1; + if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) { + teamDetails.snow = 1; + } + if (set.moves.includes('healbell')) teamDetails.statusCure = 1; + if (set.moves.includes('spikes') || set.moves.includes('ceaselessedge')) { + teamDetails.spikes = (teamDetails.spikes || 0) + 1; + } + if (set.moves.includes('toxicspikes') || set.ability === 'Toxic Debris') teamDetails.toxicSpikes = 1; + if (set.moves.includes('stealthrock') || set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1; + if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1; + if (set.moves.includes('defog')) teamDetails.defog = 1; + if (set.moves.includes('rapidspin') || set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1; + if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) { + teamDetails.screens = 1; + } + if (set.role === 'Tera Blast user' || species.baseSpecies === "Ogerpon" || species.baseSpecies === "Terapagos") { + teamDetails.teraBlast = 1; + } + } + if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built + throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`); + } + + return pokemon; + } +} + +export default Random6x6Teams; From 95416b29dc0bb8043deeba0e77f9a26e7cc41a10 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Feb 2026 12:50:14 -0700 Subject: [PATCH 094/139] Move Pet Mod spotlight ladders --- config/formats.ts | 84 +++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index ef305c1447..98ef07caa5 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -674,6 +674,48 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects', ], }, + { + name: "[Gen 9] Six by Six Random Battle", + desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`, + mod: 'sixbysix', + team: 'random6x6', + ruleset: [ + 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod', + 'Terastal Clause', 'Data Preview', 'Sprite Viewer', + ], + onBegin() { + this.add('-message', `Welcome to Six by Six!`); + this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`); + this.add('-message', `You can find our thread and metagame resources here:`); + this.add('-message', `https://www.smogon.com/forums/threads/3769141/`); + }, + onSwitchInPriority: 100, + onSwitchIn(pokemon) { + if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !== + this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') && + !pokemon.terastallized) { + this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]'); + } + }, + }, + { + name: "[Gen 9] ChatBats", + desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`, + mod: 'chatbats', + team: 'randomChatBats', + ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Data Preview', 'Cancel Mod'], + onSwitchIn(pokemon) { + this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + }, + // Dachsbun causes Koraidon to generate on enemy team. Implemented here. + onBegin() { + this.add(`raw|
    Need help with all of the new moves, abilities, and wacky sets?
    Then make sure to check out the ChatBats Compendium or use /dt!
    `); + this.add(`raw|Welcome to ChatBats!`); + this.add(`raw|ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`); + this.add(`raw|If you want to help create new sets, we will host events periodically in the Pet Mods room!`); + this.add(`raw|Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`); + }, + }, { name: "[Gen 3] Ubers", mod: 'gen3', @@ -3383,30 +3425,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { section: "Pet Mods", }, - { - name: "[Gen 9] Six by Six Random Battle", - desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`, - mod: 'sixbysix', - team: 'random6x6', - ruleset: [ - 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod', - 'Terastal Clause', 'Data Preview', 'Sprite Viewer', - ], - onBegin() { - this.add('-message', `Welcome to Six by Six!`); - this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`); - this.add('-message', `You can find our thread and metagame resources here:`); - this.add('-message', `https://www.smogon.com/forums/threads/3769141/`); - }, - onSwitchInPriority: 100, - onSwitchIn(pokemon) { - if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !== - this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') && - !pokemon.terastallized) { - this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]'); - } - }, - }, { name: "[Gen 9] Six by Six", // Roomtours desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`, @@ -3443,24 +3461,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } }, }, - { - name: "[Gen 9] ChatBats", - desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`, - mod: 'chatbats', - team: 'randomChatBats', - ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Data Preview', 'Cancel Mod'], - onSwitchIn(pokemon) { - this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); - }, - // Dachsbun causes Koraidon to generate on enemy team. Implemented here. - onBegin() { - this.add(`raw|
    Need help with all of the new moves, abilities, and wacky sets?
    Then make sure to check out the ChatBats Compendium or use /dt!
    `); - this.add(`raw|Welcome to ChatBats!`); - this.add(`raw|ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`); - this.add(`raw|If you want to help create new sets, we will host events periodically in the Pet Mods room!`); - this.add(`raw|Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`); - }, - }, { name: "[Gen 9] Legends Z-A OU", desc: `Speculative turn-based metagame using Pokémon obtainable in Legends: Z-A, but with National Dex learnsets.`, From ccdc32dd7cde25fd9e4bed64820e885f66e78a4e Mon Sep 17 00:00:00 2001 From: ACakeWearingAHat <45981036+ACakeWearingAHat@users.noreply.github.com> Date: Sun, 1 Feb 2026 14:00:57 -0600 Subject: [PATCH 095/139] Randomized format set updates (#11728) * Randomized format set updates * revert some changes from last month * lint * further updates * Gen 1 changes * Re-split whimsicott in gen 9 doubles * Merge arceus-ghost sets (cosmetic change) * Don't duplicate subseed on whimsicott * Replace Fake Tears with twave on screens meowstic and merge roles * doubles screens grimmsnarl: +twave * Update SD silvally ice and psychic in gen 8 --------- Co-authored-by: Kelvin Liu <115855253+livid-washed@users.noreply.github.com> --- data/random-battles/gen1/data.json | 13 +- data/random-battles/gen3/sets.json | 43 +++-- data/random-battles/gen3/teams.ts | 6 - data/random-battles/gen4/sets.json | 16 +- data/random-battles/gen5/sets.json | 13 +- data/random-battles/gen6/sets.json | 45 ++--- data/random-battles/gen6/teams.ts | 10 +- data/random-battles/gen7/sets.json | 59 ++++--- data/random-battles/gen7/teams.ts | 10 +- data/random-battles/gen8/data.json | 10 +- data/random-battles/gen9/doubles-sets.json | 184 ++++++++++++++------- data/random-battles/gen9/sets.json | 68 +++++--- data/random-battles/gen9/teams.ts | 17 +- data/random-battles/gen9baby/sets.json | 6 +- 14 files changed, 300 insertions(+), 200 deletions(-) diff --git a/data/random-battles/gen1/data.json b/data/random-battles/gen1/data.json index 7c3ff071dd..f6ebda9799 100644 --- a/data/random-battles/gen1/data.json +++ b/data/random-battles/gen1/data.json @@ -574,7 +574,8 @@ }, "mrmime": { "level": 75, - "moves": ["psychic", "seismictoss", "thunderbolt", "thunderwave"] + "moves": ["psychic", "thunderbolt", "thunderwave"], + "exclusiveMoves": ["counter", "seismictoss", "seismictoss"] }, "scyther": { "level": 75, @@ -608,7 +609,8 @@ }, "gyarados": { "level": 74, - "moves": ["blizzard", "bodyslam", "bodyslam", "hyperbeam", "thunderbolt"], + "moves": ["blizzard", "hyperbeam", "thunderbolt"], + "essentialMoves": ["bodyslam"], "exclusiveMoves": ["hydropump", "surf", "surf"] }, "lapras": { @@ -658,8 +660,7 @@ }, "kabuto": { "level": 88, - "moves": ["blizzard", "bodyslam", "slash"], - "exclusiveMoves": ["hydropump", "surf", "surf"] + "moves": ["blizzard", "bodyslam", "slash", "surf"] }, "kabutops": { "level": 75, @@ -704,8 +705,8 @@ }, "dragonite": { "level": 74, - "moves": ["bodyslam", "hyperbeam", "thunderbolt", "thunderwave", "thunderwave"], - "essentialMoves": ["blizzard"] + "moves": ["bodyslam", "hyperbeam", "thunderbolt"], + "essentialMoves": ["blizzard", "thunderwave"] }, "mewtwo": { "level": 60, diff --git a/data/random-battles/gen3/sets.json b/data/random-battles/gen3/sets.json index 7dd8706e39..4549e95064 100644 --- a/data/random-battles/gen3/sets.json +++ b/data/random-battles/gen3/sets.json @@ -387,7 +387,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["calmmind", "encore", "firepunch", "icepunch", "psychic", "recover", "substitute", "thunderpunch"], + "movepool": ["calmmind", "encore", "firepunch", "hiddenpowerdark", "psychic", "recover", "substitute", "thunderpunch"], "abilities": ["Synchronize"], "preferredTypes": ["Fire"] } @@ -474,7 +474,7 @@ }, { "role": "Setup Sweeper", - "movepool": ["calmmind", "psychic", "rest", "surf"], + "movepool": ["calmmind", "psychic", "surf", "thunderwave"], "abilities": ["Own Tempo"] }, { @@ -544,13 +544,13 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["explosion", "fireblast", "hiddenpowerground", "rest", "sludgebomb", "toxic"], + "movepool": ["explosion", "fireblast", "hiddenpowerground", "sludgebomb", "toxic"], "abilities": ["Sticky Hold"], "preferredTypes": ["Ground"] }, { "role": "Setup Sweeper", - "movepool": ["curse", "hiddenpowerground", "rest", "sludgebomb"], + "movepool": ["curse", "explosion", "hiddenpowerground", "sludgebomb"], "abilities": ["Sticky Hold"] } ] @@ -1063,7 +1063,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["doubleedge", "dragondance", "earthquake", "healbell", "hiddenpowerflying", "rest", "substitute"], + "movepool": ["doubleedge", "dragondance", "earthquake", "healbell", "hiddenpowerflying", "substitute"], "abilities": ["Inner Focus"], "preferredTypes": ["Ground"] }, @@ -1479,7 +1479,7 @@ }, { "role": "Setup Sweeper", - "movepool": ["calmmind", "psychic", "rest", "surf"], + "movepool": ["calmmind", "psychic", "surf", "thunderwave"], "abilities": ["Own Tempo"] }, { @@ -1564,7 +1564,7 @@ "sets": [ { "role": "Bulky Setup", - "movepool": ["bodyslam", "curse", "earthquake", "rest", "shadowball"], + "movepool": ["bodyslam", "curse", "earthquake", "rest", "shadowball", "sleeptalk"], "abilities": ["Serene Grace"] }, { @@ -2482,11 +2482,6 @@ "role": "Bulky Support", "movepool": ["encore", "moonlight", "seismictoss", "thunderwave", "toxic"], "abilities": ["Oblivious"] - }, - { - "role": "Generalist", - "movepool": ["batonpass", "encore", "seismictoss", "substitute", "thunderwave", "toxic"], - "abilities": ["Oblivious"] } ] }, @@ -2561,7 +2556,7 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["explosion", "fireblast", "flamethrower", "hiddenpowergrass", "rest", "toxic"], + "movepool": ["explosion", "fireblast", "flamethrower", "hiddenpowergrass", "toxic"], "abilities": ["White Smoke"] } ] @@ -2571,7 +2566,7 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["calmmind", "firepunch", "psychic", "substitute", "thunderpunch"], + "movepool": ["calmmind", "firepunch", "hiddenpowerdark", "psychic", "substitute"], "abilities": ["Thick Fat"], "preferredTypes": ["Fire"] } @@ -2602,11 +2597,11 @@ }, { "role": "Staller", - "movepool": ["dragonclaw", "earthquake", "fireblast", "protect", "toxic"], + "movepool": ["dragonclaw", "earthquake", "fireblast", "protect", "rockslide", "toxic"], "abilities": ["Levitate"] }, { - "role": "Bulky Attacker", + "role": "Staller", "movepool": ["dragonclaw", "earthquake", "fireblast", "rockslide", "substitute", "toxic"], "abilities": ["Levitate"] } @@ -3053,7 +3048,12 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["earthquake", "hiddenpowerbug", "overheat", "rockslide", "substitute", "swordsdance", "thunderwave"], + "movepool": ["earthquake", "overheat", "rockslide", "thunderwave"], + "abilities": ["Drought"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "hiddenpowerbug", "rockslide", "substitute", "swordsdance", "thunderwave"], "abilities": ["Drought"], "preferredTypes": ["Rock"] } @@ -3086,9 +3086,8 @@ }, { "role": "Setup Sweeper", - "movepool": ["calmmind", "firepunch", "icepunch", "psychic", "substitute", "thunderbolt"], - "abilities": ["Serene Grace"], - "preferredTypes": ["Fire"] + "movepool": ["calmmind", "firepunch", "icepunch", "psychic", "thunderbolt"], + "abilities": ["Serene Grace"] } ] }, @@ -3097,7 +3096,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["extremespeed", "firepunch", "icebeam", "psychoboost", "shadowball", "superpower"], + "movepool": ["extremespeed", "icebeam", "psychoboost", "shadowball", "superpower"], "abilities": ["Pressure"], "preferredTypes": ["Fighting", "Ghost"] } @@ -3108,7 +3107,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["extremespeed", "firepunch", "icebeam", "psychoboost", "shadowball", "superpower"], + "movepool": ["extremespeed", "icebeam", "psychoboost", "shadowball", "superpower"], "abilities": ["Pressure"], "preferredTypes": ["Fighting", "Ghost"] } diff --git a/data/random-battles/gen3/teams.ts b/data/random-battles/gen3/teams.ts index ff59db9377..6c229c924b 100644 --- a/data/random-battles/gen3/teams.ts +++ b/data/random-battles/gen3/teams.ts @@ -467,16 +467,10 @@ export class RandomGen3Teams extends RandomGen4Teams { if (species.id === 'marowak') return 'Thick Club'; if (species.id === 'pikachu') return 'Light Ball'; if (species.id === 'shedinja') return 'Lum Berry'; - if (species.id === 'shuckle') return 'Leftovers'; if (species.id === 'unown') return counter.get('Physical') ? 'Choice Band' : 'Twisted Spoon'; if (species.id === 'deoxys' || species.id === 'deoxysattack') return 'White Herb'; if (moves.has('trick')) return 'Choice Band'; - if ( - moves.has('rest') && !moves.has('sleeptalk') && - // Altaria wants Chesto Berry on Dragon Dance + Rest - (moves.has('dragondance') || !['Early Bird', 'Natural Cure', 'Shed Skin'].includes(ability)) - ) return 'Chesto Berry'; // Medium priority items if (counter.get('Physical') >= 4) return 'Choice Band'; diff --git a/data/random-battles/gen4/sets.json b/data/random-battles/gen4/sets.json index 672865b259..c9a7112bb5 100644 --- a/data/random-battles/gen4/sets.json +++ b/data/random-battles/gen4/sets.json @@ -1325,7 +1325,7 @@ "sets": [ { "role": "Fast Support", - "movepool": ["destinybond", "explosion", "spikes", "thunderwave", "toxicspikes", "waterfall"], + "movepool": ["destinybond", "explosion", "poisonjab", "spikes", "thunderwave", "toxicspikes", "waterfall"], "abilities": ["Poison Point", "Swift Swim"] } ] @@ -2123,9 +2123,14 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "selfdestruct", "waterspout"], + "movepool": ["hydropump", "icebeam", "selfdestruct", "waterspout"], "abilities": ["Water Veil"], "preferredTypes": ["Ice"] + }, + { + "role": "Bulky Attacker", + "movepool": ["icebeam", "selfdestruct", "surf", "toxic"], + "abilities": ["Water Veil"] } ] }, @@ -3022,9 +3027,14 @@ "movepool": ["destinybond", "hiddenpowerfighting", "painsplit", "shadowball", "substitute", "taunt", "willowisp"], "abilities": ["Levitate"] }, + { + "role": "Setup Sweeper", + "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "substitute", "thunderbolt"], + "abilities": ["Levitate"] + }, { "role": "Wallbreaker", - "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "thunderbolt", "trick"], + "movepool": ["hiddenpowerfighting", "shadowball", "thunderbolt", "trick"], "abilities": ["Levitate"] } ] diff --git a/data/random-battles/gen5/sets.json b/data/random-battles/gen5/sets.json index 23a754ef97..acee027540 100644 --- a/data/random-battles/gen5/sets.json +++ b/data/random-battles/gen5/sets.json @@ -3065,9 +3065,14 @@ "abilities": ["Levitate"] }, { - "role": "Wallbreaker", - "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "thunderbolt", "trick"], + "role": "Setup Sweeper", + "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "substitute", "thunderbolt"], "abilities": ["Levitate"] + }, + { + "role": "Wallbreaker", + "movepool": ["hiddenpowerfighting", "shadowball", "thunderbolt", "trick"], + "abilities": ["Levitate"] } ] }, @@ -3274,7 +3279,7 @@ { "role": "Fast Attacker", "movepool": ["flashcannon", "hiddenpowerfire", "hiddenpowerground", "hiddenpowerice", "thunderbolt", "voltswitch"], - "abilities": ["Magnet Pull"] + "abilities": ["Analytic", "Magnet Pull"] }, { "role": "Staller", @@ -4574,7 +4579,7 @@ }, { "role": "Wallbreaker", - "movepool": ["bugbuzz", "energyball", "thunder", "voltswitch"], + "movepool": ["bugbuzz", "gigadrain", "thunder", "voltswitch"], "abilities": ["Compound Eyes"] } ] diff --git a/data/random-battles/gen6/sets.json b/data/random-battles/gen6/sets.json index 479d44bed4..d50f9c1849 100644 --- a/data/random-battles/gen6/sets.json +++ b/data/random-battles/gen6/sets.json @@ -31,6 +31,11 @@ "role": "Bulky Attacker", "movepool": ["airslash", "earthquake", "fireblast", "roost", "willowisp"], "abilities": ["Blaze", "Solar Power"] + }, + { + "role": "Setup Sweeper", + "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"], + "abilities": ["Blaze"] } ] }, @@ -791,9 +796,14 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "nastyplot", "psychic", "psyshock", "shadowball"], + "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"], "abilities": ["Filter"], - "preferredTypes": ["Psychic"] + "preferredTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"], + "abilities": ["Filter"] } ] }, @@ -1500,7 +1510,7 @@ "sets": [ { "role": "Fast Support", - "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], + "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], "abilities": ["Intimidate"] } ] @@ -1617,12 +1627,14 @@ { "role": "Wallbreaker", "movepool": ["energyball", "fireblast", "gunkshot", "hydropump", "icebeam", "scald"], - "abilities": ["Sniper"] + "abilities": ["Sniper"], + "preferredTypes": ["Poison"] }, { "role": "Bulky Attacker", "movepool": ["energyball", "fireblast", "gunkshot", "icebeam", "scald", "thunderwave"], - "abilities": ["Sniper"] + "abilities": ["Sniper"], + "preferredTypes": ["Poison"] } ] }, @@ -2263,8 +2275,13 @@ "level": 86, "sets": [ { - "role": "Wallbreaker", - "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "rockpolish", "stealthrock"], + "role": "Setup Sweeper", + "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"], + "abilities": ["Rock Head"] + }, + { + "role": "Bulky Attacker", + "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"], "abilities": ["Rock Head"], "preferredTypes": ["Ground"] } @@ -3273,12 +3290,7 @@ "sets": [ { "role": "Bulky Support", - "movepool": ["metalburst", "roar", "rockblast", "stealthrock", "toxic"], - "abilities": ["Sturdy"] - }, - { - "role": "Staller", - "movepool": ["metalburst", "protect", "roar", "rockblast", "stealthrock", "toxic"], + "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"], "abilities": ["Sturdy"] } ] @@ -3689,7 +3701,7 @@ { "role": "Fast Attacker", "movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"], - "abilities": ["Magnet Pull"] + "abilities": ["Analytic", "Magnet Pull"] }, { "role": "Staller", @@ -5893,11 +5905,6 @@ "sylveon": { "level": 84, "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["calmmind", "hiddenpowerground", "hypervoice", "protect", "psyshock", "wish"], - "abilities": ["Pixilate"] - }, { "role": "Bulky Setup", "movepool": ["calmmind", "hypervoice", "protect", "wish"], diff --git a/data/random-battles/gen6/teams.ts b/data/random-battles/gen6/teams.ts index 4e7c261f93..40bbbc656a 100644 --- a/data/random-battles/gen6/teams.ts +++ b/data/random-battles/gen6/teams.ts @@ -97,7 +97,7 @@ export class RandomGen6Teams extends RandomGen7Teams { Normal: movePool => movePool.includes('boomburst'), Poison: (movePool, moves, abilities, types, counter) => !counter.get('Poison'), Psychic: (movePool, moves, abilities, types, counter) => ( - !counter.get('Psychic') && (types.has('Fighting') || movePool.includes('calmmind')) + !counter.get('Psychic') && (types.has('Fighting') || types.has('Fairy') || movePool.includes('calmmind')) ), Rock: (movePool, moves, abilities, types, counter, species) => (!counter.get('Rock') && species.baseStats.atk >= 80), Steel: (movePool, moves, abilities, types, counter, species) => (!counter.get('Steel') && species.baseStats.atk >= 100), @@ -250,6 +250,8 @@ export class RandomGen6Teams extends RandomGen7Teams { ['switcheroo', 'suckerpunch'], // Jirachi ['bodyslam', 'healingwish'], + // Bastiodon + [['roar', 'protect'], ['metalburst', 'protect']], ]; for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); @@ -732,12 +734,6 @@ export class RandomGen6Teams extends RandomGen7Teams { ) ) return 'Rocky Helmet'; if (['kingsshield', 'protect', 'spikyshield', 'substitute'].some(m => moves.has(m))) return 'Leftovers'; - if ( - this.dex.getEffectiveness('Ground', species) >= 2 && - ability !== 'Levitate' - ) { - return 'Air Balloon'; - } if ( (role === 'Fast Support' || moves.has('stickyweb')) && isLead && defensiveStatTotal < 255 && !counter.get('recovery') && (counter.get('hazards') || counter.get('setup')) && diff --git a/data/random-battles/gen7/sets.json b/data/random-battles/gen7/sets.json index df1a2c853e..5654350ef9 100644 --- a/data/random-battles/gen7/sets.json +++ b/data/random-battles/gen7/sets.json @@ -33,6 +33,11 @@ "abilities": ["Blaze", "Solar Power"], "preferredTypes": ["Normal"] }, + { + "role": "Setup Sweeper", + "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"], + "abilities": ["Blaze"] + }, { "role": "Bulky Attacker", "movepool": ["airslash", "earthquake", "fireblast", "roost", "willowisp"], @@ -975,9 +980,14 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "nastyplot", "psychic", "psyshock", "shadowball"], + "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"], "abilities": ["Filter"], - "preferredTypes": ["Psychic"] + "preferredTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"], + "abilities": ["Filter"] } ] }, @@ -1716,7 +1726,7 @@ "sets": [ { "role": "Fast Support", - "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], + "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], "abilities": ["Intimidate"] } ] @@ -1770,10 +1780,15 @@ "level": 82, "sets": [ { - "role": "Wallbreaker", + "role": "Setup Sweeper", "movepool": ["closecombat", "facade", "knockoff", "swordsdance"], "abilities": ["Guts"] }, + { + "role": "Wallbreaker", + "movepool": ["closecombat", "facade", "knockoff", "megahorn"], + "abilities": ["Guts"] + }, { "role": "Fast Attacker", "movepool": ["closecombat", "knockoff", "megahorn", "stoneedge"], @@ -2493,8 +2508,13 @@ "level": 87, "sets": [ { - "role": "Wallbreaker", - "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "rockpolish", "stealthrock"], + "role": "Setup Sweeper", + "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"], + "abilities": ["Rock Head"] + }, + { + "role": "Bulky Attacker", + "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"], "abilities": ["Rock Head"], "preferredTypes": ["Ground"] } @@ -3557,12 +3577,7 @@ "sets": [ { "role": "Bulky Support", - "movepool": ["metalburst", "roar", "rockblast", "stealthrock", "toxic"], - "abilities": ["Sturdy"] - }, - { - "role": "Staller", - "movepool": ["metalburst", "protect", "roar", "rockblast", "stealthrock", "toxic"], + "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"], "abilities": ["Sturdy"] } ] @@ -4003,7 +4018,7 @@ { "role": "Fast Attacker", "movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"], - "abilities": ["Magnet Pull"] + "abilities": ["Analytic", "Magnet Pull"] }, { "role": "Staller", @@ -6363,11 +6378,6 @@ "sylveon": { "level": 85, "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["calmmind", "hiddenpowerground", "hypervoice", "protect", "psyshock", "wish"], - "abilities": ["Pixilate"] - }, { "role": "Bulky Setup", "movepool": ["calmmind", "hypervoice", "protect", "wish"], @@ -6833,7 +6843,7 @@ "sets": [ { "role": "AV Pivot", - "movepool": ["earthquake", "hiddenpowergrass", "hydropump", "icebeam", "scald", "uturn"], + "movepool": ["earthquake", "hydropump", "icebeam", "scald", "uturn"], "abilities": ["Schooling"], "preferredTypes": ["Ice"] }, @@ -7420,7 +7430,12 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["bulkup", "hornleech", "megahorn", "stoneedge", "superpower", "woodhammer"], + "movepool": ["hornleech", "megahorn", "stoneedge", "superpower", "woodhammer"], + "abilities": ["Grassy Surge"] + }, + { + "role": "Bulky Setup", + "movepool": ["hornleech", "stoneedge", "superpower", "swordsdance", "woodhammer"], "abilities": ["Grassy Surge"] } ] @@ -7468,7 +7483,7 @@ }, { "role": "Z-Move user", - "movepool": ["calmmind", "moonblast", "moongeistbeam", "psyshock", "roost"], + "movepool": ["calmmind", "moongeistbeam", "psyshock", "roost"], "abilities": ["Shadow Shield"] } ] @@ -7477,7 +7492,7 @@ "level": 79, "sets": [ { - "role": "Fast Support", + "role": "Bulky Attacker", "movepool": ["grassknot", "hiddenpowerfire", "hiddenpowerground", "powergem", "sludgewave", "stealthrock", "thunderbolt", "toxicspikes"], "abilities": ["Beast Boost"], "preferredTypes": ["Rock"] diff --git a/data/random-battles/gen7/teams.ts b/data/random-battles/gen7/teams.ts index 3f6278ca55..553e7e4469 100644 --- a/data/random-battles/gen7/teams.ts +++ b/data/random-battles/gen7/teams.ts @@ -135,7 +135,7 @@ export class RandomGen7Teams extends RandomGen8Teams { Poison: (movePool, moves, abilities, types, counter) => !counter.get('Poison'), Psychic: (movePool, moves, abilities, types, counter) => ( !counter.get('Psychic') && ( - types.has('Fighting') || movePool.includes('psychicfangs') || movePool.includes('calmmind') + types.has('Fighting') || types.has('Fairy') || movePool.includes('psychicfangs') || movePool.includes('calmmind') ) ), Rock: (movePool, moves, abilities, types, counter, species) => (!counter.get('Rock') && species.baseStats.atk >= 80), @@ -367,6 +367,8 @@ export class RandomGen7Teams extends RandomGen8Teams { ['switcheroo', 'suckerpunch'], // Jirachi ['bodyslam', 'healingwish'], + // Bastiodon + [['roar', 'protect'], ['metalburst', 'protect']], ]; for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); @@ -955,12 +957,6 @@ export class RandomGen7Teams extends RandomGen8Teams { ) ) return 'Rocky Helmet'; if (['kingsshield', 'protect', 'spikyshield', 'substitute'].some(m => moves.has(m))) return 'Leftovers'; - if ( - this.dex.getEffectiveness('Ground', species) >= 2 && - ability !== 'Levitate' && species.id !== 'golemalola' - ) { - return 'Air Balloon'; - } if ( (role === 'Fast Support' || moves.has('stickyweb')) && isLead && defensiveStatTotal < 255 && !counter.get('recovery') && (counter.get('hazards') || counter.get('setup')) && diff --git a/data/random-battles/gen8/data.json b/data/random-battles/gen8/data.json index d0f0d2514e..61aefbcef3 100644 --- a/data/random-battles/gen8/data.json +++ b/data/random-battles/gen8/data.json @@ -418,7 +418,7 @@ }, "articunogalar": { "level": 81, - "moves": ["airslash", "calmmind", "freezingglare", "recover"], + "moves": ["calmmind", "freezingglare", "hurricane", "recover"], "doublesLevel": 81, "doublesMoves": ["calmmind", "freezingglare", "hurricane", "recover", "tailwind"], "noDynamaxMoves": ["calmmind", "freezingglare", "hurricane", "recover"] @@ -458,7 +458,7 @@ }, "mewtwo": { "level": 71, - "moves": ["fireblast", "nastyplot", "psystrike", "recover", "shadowball"], + "moves": ["aurasphere", "fireblast", "nastyplot", "psystrike", "recover"], "doublesLevel": 74, "doublesMoves": ["aurasphere", "icebeam", "nastyplot", "psystrike", "recover"] }, @@ -1820,7 +1820,7 @@ }, "sylveon": { "level": 83, - "moves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock", "shadowball", "wish"], + "moves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock", "wish"], "doublesLevel": 80, "doublesMoves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock"] }, @@ -2149,7 +2149,7 @@ }, "silvallyice": { "level": 83, - "moves": ["flamecharge", "multiattack", "psychicfangs", "swordsdance"], + "moves": ["flamecharge", "multiattack", "rockslide", "swordsdance"], "doublesLevel": 88, "doublesMoves": ["flamethrower", "multiattack", "partingshot", "tailwind", "thunderbolt"] }, @@ -2161,7 +2161,7 @@ }, "silvallypsychic": { "level": 83, - "moves": ["crunch", "multiattack", "swordsdance", "uturn"], + "moves": ["flamecharge", "multiattack", "swordsdance", "xscissor"], "doublesLevel": 88, "doublesMoves": ["flamethrower", "multiattack", "partingshot", "tailwind", "xscissor"] }, diff --git a/data/random-battles/gen9/doubles-sets.json b/data/random-battles/gen9/doubles-sets.json index 4e41b7b691..2045bd1ba4 100644 --- a/data/random-battles/gen9/doubles-sets.json +++ b/data/random-battles/gen9/doubles-sets.json @@ -49,7 +49,7 @@ }, { "role": "Doubles Bulky Attacker", - "movepool": ["Dragon Tail", "Glare", "Gunk Shot", "Knock Off", "Toxic Spikes"], + "movepool": ["Glare", "Gunk Shot", "Knock Off", "Toxic Spikes"], "abilities": ["Intimidate"], "teraTypes": ["Dark"] } @@ -186,7 +186,7 @@ "role": "Doubles Support", "movepool": ["Aurora Veil", "Blizzard", "Moonblast", "Protect"], "abilities": ["Snow Warning"], - "teraTypes": ["Ice", "Steel", "Water"] + "teraTypes": ["Steel", "Water"] } ] }, @@ -349,7 +349,7 @@ "level": 85, "sets": [ { - "role": "Doubles Bulky Attacker", + "role": "Doubles Support", "movepool": ["Acid Spray", "Hydro Pump", "Icy Wind", "Knock Off", "Muddy Water", "Sludge Bomb", "Toxic Spikes"], "abilities": ["Clear Body"], "teraTypes": ["Grass"] @@ -451,8 +451,8 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Drain Punch", "Gunk Shot", "Haze", "Helping Hand", "Ice Punch", "Knock Off", "Poison Gas", "Poison Jab", "Shadow Sneak"], - "abilities": ["Poison Touch"], + "movepool": ["Drain Punch", "Gunk Shot", "Helping Hand", "Ice Punch", "Knock Off", "Poison Gas", "Poison Jab", "Shadow Sneak"], + "abilities": ["Poison Touch", "Sticky Hold"], "teraTypes": ["Dark"] } ] @@ -589,9 +589,9 @@ "level": 91, "sets": [ { - "role": "Doubles Support", + "role": "Doubles Bulky Attacker", "movepool": ["Clear Smog", "Fire Blast", "Gunk Shot", "Poison Gas", "Protect", "Taunt", "Will-O-Wisp"], - "abilities": ["Levitate", "Neutralizing Gas"], + "abilities": ["Levitate"], "teraTypes": ["Dark"] } ] @@ -602,13 +602,13 @@ { "role": "Doubles Bulky Attacker", "movepool": ["Gunk Shot", "Poison Gas", "Protect", "Strange Steam", "Taunt", "Will-O-Wisp"], - "abilities": ["Levitate", "Neutralizing Gas"], + "abilities": ["Levitate"], "teraTypes": ["Dark", "Steel"] }, { "role": "Offensive Protect", "movepool": ["Dazzling Gleam", "Fire Blast", "Gunk Shot", "Protect"], - "abilities": ["Levitate", "Neutralizing Gas"], + "abilities": ["Levitate"], "teraTypes": ["Fire"] } ] @@ -848,7 +848,7 @@ "sets": [ { "role": "Doubles Fast Attacker", - "movepool": ["Freezing Glare", "Hurricane", "Protect", "Recover", "Tailwind"], + "movepool": ["Freezing Glare", "Hurricane", "Protect", "Tailwind"], "abilities": ["Competitive"], "teraTypes": ["Flying", "Ground", "Steel"] } @@ -886,10 +886,16 @@ "level": 79, "sets": [ { - "role": "Doubles Bulky Attacker", - "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Protect", "Scorching Sands", "Tailwind"], + "role": "Doubles Support", + "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Protect", "Tailwind"], "abilities": ["Flame Body"], "teraTypes": ["Fire", "Ground"] + }, + { + "role": "Doubles Bulky Attacker", + "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Scorching Sands", "Tailwind"], + "abilities": ["Flame Body"], + "teraTypes": ["Ground"] } ] }, @@ -1289,7 +1295,13 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Crunch", "Gunk Shot", "Icy Wind", "Throat Chop", "Toxic Spikes"], + "movepool": ["Crunch", "Gunk Shot", "Icy Wind", "Toxic Spikes"], + "abilities": ["Intimidate"], + "teraTypes": ["Flying"] + }, + { + "role": "Doubles Support", + "movepool": ["Gunk Shot", "Icy Wind", "Throat Chop", "Toxic Spikes"], "abilities": ["Intimidate"], "teraTypes": ["Flying"] } @@ -1538,7 +1550,7 @@ "role": "Doubles Bulky Setup", "movepool": ["Dragon Dance", "High Horsepower", "Knock Off", "Protect", "Rock Slide", "Stone Edge"], "abilities": ["Sand Stream"], - "teraTypes": ["Ghost", "Rock"] + "teraTypes": ["Ghost"] }, { "role": "Doubles Bulky Attacker", @@ -1721,7 +1733,13 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["After You", "Double-Edge", "Encore", "Icy Wind", "Knock Off", "Slack Off", "Thunder Wave"], + "movepool": ["Double-Edge", "Icy Wind", "Knock Off", "Slack Off", "Thunder Wave"], + "abilities": ["Vital Spirit"], + "teraTypes": ["Ghost"] + }, + { + "role": "Doubles Support", + "movepool": ["Body Slam", "Encore", "Icy Wind", "Knock Off"], "abilities": ["Vital Spirit"], "teraTypes": ["Ghost"] } @@ -1963,7 +1981,7 @@ { "role": "Offensive Protect", "movepool": ["Flamethrower", "Glare", "Gunk Shot", "Knock Off", "Protect"], - "abilities": ["Infiltrator"], + "abilities": ["Shed Skin"], "teraTypes": ["Dark", "Fire", "Poison"] } ] @@ -2289,6 +2307,18 @@ "movepool": ["Headlong Rush", "Protect", "Shell Smash", "Wood Hammer"], "abilities": ["Overgrow"], "teraTypes": ["Fire", "Ground"] + }, + { + "role": "Doubles Setup Sweeper", + "movepool": ["Headlong Rush", "Rock Slide", "Shell Smash", "Wood Hammer"], + "abilities": ["Overgrow"], + "teraTypes": ["Rock"] + }, + { + "role": "Doubles Setup Sweeper", + "movepool": ["Headlong Rush", "Protect", "Rock Slide", "Shell Smash"], + "abilities": ["Overgrow"], + "teraTypes": ["Rock"] } ] }, @@ -2555,7 +2585,7 @@ "role": "Doubles Support", "movepool": ["High Horsepower", "Slack Off", "Stealth Rock", "Stone Edge", "Whirlwind"], "abilities": ["Sand Stream"], - "teraTypes": ["Dragon", "Rock", "Steel", "Water"] + "teraTypes": ["Dragon", "Steel", "Water"] } ] }, @@ -2624,8 +2654,8 @@ "level": 84, "sets": [ { - "role": "Doubles Bulky Attacker", - "movepool": ["Body Press", "Electroweb", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"], + "role": "Doubles Support", + "movepool": ["Electroweb", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"], "abilities": ["Sturdy"], "teraTypes": ["Flying"] } @@ -2670,7 +2700,7 @@ "sets": [ { "role": "Choice Item user", - "movepool": ["Fire Blast", "Focus Blast", "Heat Wave", "Scorching Sands", "Thunderbolt"], + "movepool": ["Fire Blast", "Focus Blast", "Heat Wave", "Thunderbolt"], "abilities": ["Flame Body"], "teraTypes": ["Fighting", "Fire", "Grass"] }, @@ -3167,9 +3197,15 @@ "sets": [ { "role": "Doubles Setup Sweeper", - "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover", "Sludge Bomb"], + "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover"], "abilities": ["Multitype"], - "teraTypes": ["Fire", "Poison"] + "teraTypes": ["Fire"] + }, + { + "role": "Doubles Bulky Setup", + "movepool": ["Calm Mind", "Judgment", "Recover", "Sludge Bomb"], + "abilities": ["Multitype"], + "teraTypes": ["Poison"] } ] }, @@ -3189,9 +3225,9 @@ "sets": [ { "role": "Doubles Bulky Setup", - "movepool": ["Calm Mind", "Dazzling Gleam", "Earth Power", "Fire Blast", "Recover"], + "movepool": ["Calm Mind", "Dazzling Gleam", "Earth Power", "Recover"], "abilities": ["Multitype"], - "teraTypes": ["Fairy", "Fire", "Ground"] + "teraTypes": ["Fairy", "Ground"] }, { "role": "Doubles Support", @@ -3228,9 +3264,15 @@ "sets": [ { "role": "Doubles Setup Sweeper", - "movepool": ["Calm Mind", "Earth Power", "Fire Blast", "Judgment", "Recover"], + "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"], "abilities": ["Multitype"], "teraTypes": ["Flying", "Ground"] + }, + { + "role": "Doubles Support", + "movepool": ["Judgment", "Recover", "Snarl", "Tailwind", "Taunt", "Will-O-Wisp"], + "abilities": ["Multitype"], + "teraTypes": ["Steel"] } ] }, @@ -3241,13 +3283,13 @@ "role": "Doubles Setup Sweeper", "movepool": ["Brick Break", "Extreme Speed", "Phantom Force", "Swords Dance"], "abilities": ["Multitype"], - "teraTypes": ["Ghost", "Normal"] + "teraTypes": ["Normal"] }, { "role": "Doubles Bulky Setup", - "movepool": ["Calm Mind", "Dazzling Gleam", "Focus Blast", "Judgment", "Recover"], + "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"], "abilities": ["Multitype"], - "teraTypes": ["Fairy", "Fighting"] + "teraTypes": ["Fighting"] } ] }, @@ -3267,9 +3309,15 @@ "sets": [ { "role": "Doubles Bulky Setup", - "movepool": ["Calm Mind", "Fire Blast", "Ice Beam", "Judgment", "Recover"], + "movepool": ["Calm Mind", "Ice Beam", "Judgment", "Recover"], "abilities": ["Multitype"], - "teraTypes": ["Ground", "Ice"] + "teraTypes": ["Dragon", "Steel", "Water"] + }, + { + "role": "Doubles Bulky Attacker", + "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover"], + "abilities": ["Multitype"], + "teraTypes": ["Fire"] }, { "role": "Doubles Setup Sweeper", @@ -3283,10 +3331,16 @@ "level": 73, "sets": [ { - "role": "Doubles Bulky Setup", - "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover", "Thunderbolt"], + "role": "Doubles Setup Sweeper", + "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"], "abilities": ["Multitype"], - "teraTypes": ["Electric", "Ground"] + "teraTypes": ["Ground"] + }, + { + "role": "Doubles Bulky Setup", + "movepool": ["Calm Mind", "Judgment", "Recover", "Thunderbolt"], + "abilities": ["Multitype"], + "teraTypes": ["Electric"] } ] }, @@ -3486,7 +3540,13 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Encore", "Helping Hand", "Moonblast", "Tailwind", "Taunt"], + "movepool": ["Encore", "Moonblast", "Tailwind", "Taunt"], + "abilities": ["Prankster"], + "teraTypes": ["Fire", "Ghost", "Steel"] + }, + { + "role": "Doubles Support", + "movepool": ["Encore", "Helping Hand", "Moonblast", "Tailwind"], "abilities": ["Prankster"], "teraTypes": ["Fire", "Ghost", "Steel"] } @@ -3884,7 +3944,7 @@ { "role": "Doubles Setup Sweeper", "movepool": ["Bug Buzz", "Heat Wave", "Protect", "Quiver Dance"], - "abilities": ["Flame Body", "Swarm"], + "abilities": ["Flame Body"], "teraTypes": ["Fire", "Ground", "Water"] }, { @@ -3972,14 +4032,14 @@ "level": 79, "sets": [ { - "role": "Bulky Protect", + "role": "Doubles Support", "movepool": ["Grass Knot", "Knock Off", "Protect", "Snarl", "Taunt", "Thunder Wave", "Thunderbolt"], "abilities": ["Prankster"], "teraTypes": ["Steel"] }, { "role": "Offensive Protect", - "movepool": ["Acrobatics", "Grass Knot", "Knock Off", "Protect", "Snarl", "Wildbolt Storm"], + "movepool": ["Acrobatics", "Grass Knot", "Knock Off", "Protect", "Wildbolt Storm"], "abilities": ["Defiant"], "teraTypes": ["Electric", "Flying", "Steel"] }, @@ -4242,13 +4302,7 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Fake Out", "Fake Tears", "Helping Hand", "Light Screen", "Psychic", "Reflect"], - "abilities": ["Prankster"], - "teraTypes": ["Dark", "Steel"] - }, - { - "role": "Doubles Support", - "movepool": ["Fake Out", "Helping Hand", "Psychic", "Thunder Wave"], + "movepool": ["Fake Out", "Helping Hand", "Light Screen", "Psychic", "Reflect", "Thunder Wave"], "abilities": ["Prankster"], "teraTypes": ["Dark", "Steel"] } @@ -4317,7 +4371,7 @@ "role": "Tera Blast user", "movepool": ["Hyper Voice", "Protect", "Quick Attack", "Tera Blast"], "abilities": ["Pixilate"], - "teraTypes": ["Fire", "Ground"] + "teraTypes": ["Ground"] } ] }, @@ -4593,7 +4647,7 @@ "sets": [ { "role": "Doubles Wallbreaker", - "movepool": ["Drain Punch", "Gunk Shot", "Ice Hammer", "Protect", "Wide Guard"], + "movepool": ["Drain Punch", "Gunk Shot", "Ice Hammer", "Protect"], "abilities": ["Iron Fist"], "teraTypes": ["Fire", "Poison"] } @@ -4609,7 +4663,7 @@ "teraTypes": ["Ground"] }, { - "role": "Doubles Bulky Setup", + "role": "Bulky Protect", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Ground"] @@ -4626,7 +4680,7 @@ "teraTypes": ["Ground"] }, { - "role": "Doubles Bulky Setup", + "role": "Bulky Protect", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Ground"] @@ -4643,7 +4697,7 @@ "teraTypes": ["Fighting", "Ground"] }, { - "role": "Doubles Bulky Setup", + "role": "Bulky Protect", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Fighting", "Ground"] @@ -4660,7 +4714,7 @@ "teraTypes": ["Fighting", "Ground"] }, { - "role": "Doubles Bulky Setup", + "role": "Bulky Protect", "movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"], "abilities": ["Dancer"], "teraTypes": ["Fighting", "Ground"] @@ -5010,13 +5064,13 @@ { "role": "Doubles Setup Sweeper", "movepool": ["Clanging Scales", "Clangorous Soul", "Drain Punch", "Iron Head"], - "abilities": ["Soundproof"], + "abilities": ["Bulletproof", "Soundproof"], "teraTypes": ["Steel"] }, { "role": "Doubles Bulky Setup", "movepool": ["Clanging Scales", "Clangorous Soul", "Iron Head", "Protect"], - "abilities": ["Soundproof"], + "abilities": ["Bulletproof", "Soundproof"], "teraTypes": ["Steel"] }, { @@ -5273,7 +5327,7 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Fake Out", "Light Screen", "Parting Shot", "Reflect", "Spirit Break"], + "movepool": ["Fake Out", "Light Screen", "Parting Shot", "Reflect", "Spirit Break", "Thunder Wave"], "abilities": ["Prankster"], "teraTypes": ["Steel"] }, @@ -5476,7 +5530,13 @@ "sets": [ { "role": "Offensive Protect", - "movepool": ["Draco Meteor", "Dragon Darts", "Fire Blast", "Protect", "Shadow Ball"], + "movepool": ["Draco Meteor", "Dragon Darts", "Protect", "Shadow Ball"], + "abilities": ["Clear Body"], + "teraTypes": ["Dragon"] + }, + { + "role": "Offensive Protect", + "movepool": ["Dragon Darts", "Fire Blast", "Protect", "Shadow Ball"], "abilities": ["Clear Body"], "teraTypes": ["Dragon"] }, @@ -5868,9 +5928,15 @@ }, { "role": "Doubles Fast Attacker", - "movepool": ["First Impression", "Leech Life", "Protect", "Sucker Punch"], + "movepool": ["First Impression", "Knock Off", "Protect", "Sucker Punch"], "abilities": ["Tinted Lens"], - "teraTypes": ["Bug"] + "teraTypes": ["Bug", "Dark"] + }, + { + "role": "Doubles Wallbreaker", + "movepool": ["First Impression", "Knock Off", "Leech Life", "Protect"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Bug"] } ] }, @@ -6018,7 +6084,7 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Electroweb", "Muddy Water", "Slack Off", "Thunder Wave", "Thunderbolt", "Volt Switch"], + "movepool": ["Electroweb", "Muddy Water", "Slack Off", "Thunder Wave", "Thunderbolt"], "abilities": ["Electromorphosis"], "teraTypes": ["Water"] } @@ -6159,7 +6225,7 @@ { "role": "Doubles Support", "movepool": ["Encore", "Fake Out", "Gigaton Hammer", "Knock Off", "Play Rough", "Stealth Rock"], - "abilities": ["Mold Breaker"], + "abilities": ["Mold Breaker", "Own Tempo"], "teraTypes": ["Steel", "Water"] } ] @@ -6490,7 +6556,7 @@ "sets": [ { "role": "Doubles Wallbreaker", - "movepool": ["Close Combat", "First Impression", "Flare Blitz", "U-turn", "Wild Charge"], + "movepool": ["Close Combat", "First Impression", "Flare Blitz", "Protect", "U-turn", "Wild Charge"], "abilities": ["Protosynthesis"], "teraTypes": ["Bug", "Electric", "Fighting", "Fire"] } diff --git a/data/random-battles/gen9/sets.json b/data/random-battles/gen9/sets.json index bf8b2e3984..6740222d10 100644 --- a/data/random-battles/gen9/sets.json +++ b/data/random-battles/gen9/sets.json @@ -643,7 +643,7 @@ }, { "role": "Bulky Setup", - "movepool": ["Calm Mind", "Giga Drain", "Psychic", "Psyshock", "Substitute"], + "movepool": ["Calm Mind", "Giga Drain", "Psychic", "Psyshock", "Sleep Powder", "Substitute"], "abilities": ["Harvest"], "teraTypes": ["Steel"] } @@ -695,7 +695,7 @@ { "role": "Setup Sweeper", "movepool": ["Drain Punch", "Ice Punch", "Knock Off", "Mach Punch", "Rapid Spin", "Swords Dance"], - "abilities": ["Inner Focus", "Iron Fist"], + "abilities": ["Iron Fist"], "teraTypes": ["Dark", "Fighting"] }, { @@ -703,6 +703,12 @@ "movepool": ["Bulk Up", "Drain Punch", "Knock Off", "Poison Jab", "Rapid Spin"], "abilities": ["Iron Fist"], "teraTypes": ["Dark", "Poison", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Drain Punch", "Encore", "Knock Off", "Poison Jab", "Rapid Spin", "Taunt"], + "abilities": ["Iron Fist"], + "teraTypes": ["Steel"] } ] }, @@ -2382,6 +2388,12 @@ "luvdisc": { "level": 100, "sets": [ + { + "role": "Fast Support", + "movepool": ["Endeavor", "Flip Turn", "Substitute", "Surf"], + "abilities": ["Swift Swim"], + "teraTypes": ["Ghost", "Ground"] + }, { "role": "Fast Support", "movepool": ["Endeavor", "Substitute", "Surf", "Whirlpool"], @@ -3185,7 +3197,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["Earthquake", "Ice Shard", "Icicle Crash", "Knock Off", "Stealth Rock", "Trailblaze"], + "movepool": ["Earthquake", "Ice Shard", "Icicle Crash", "Knock Off", "Stealth Rock"], "abilities": ["Thick Fat"], "teraTypes": ["Ground", "Ice"] } @@ -3247,7 +3259,7 @@ }, { "role": "Bulky Support", - "movepool": ["Earthquake", "Pain Split", "Poltergeist", "Will-O-Wisp"], + "movepool": ["Earthquake", "Pain Split", "Poltergeist", "Shadow Sneak", "Will-O-Wisp"], "abilities": ["Frisk"], "teraTypes": ["Dark", "Fairy"] }, @@ -3288,7 +3300,13 @@ "role": "Bulky Attacker", "movepool": ["Hydro Pump", "Nasty Plot", "Pain Split", "Thunderbolt", "Trick", "Volt Switch", "Will-O-Wisp"], "abilities": ["Levitate"], - "teraTypes": ["Electric", "Water"] + "teraTypes": ["Electric", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Discharge", "Hydro Pump", "Pain Split", "Volt Switch", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Steel"] } ] }, @@ -3299,7 +3317,13 @@ "role": "Bulky Attacker", "movepool": ["Nasty Plot", "Overheat", "Pain Split", "Thunderbolt", "Volt Switch", "Will-O-Wisp"], "abilities": ["Levitate"], - "teraTypes": ["Electric", "Fire"] + "teraTypes": ["Electric", "Fire", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Discharge", "Overheat", "Pain Split", "Volt Switch", "Will-O-Wisp"], + "abilities": ["Levitate"], + "teraTypes": ["Electric", "Steel"] } ] }, @@ -3319,7 +3343,7 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["Air Slash", "Nasty Plot", "Thunderbolt", "Volt Switch", "Will-O-Wisp"], + "movepool": ["Air Slash", "Nasty Plot", "Thunder Wave", "Thunderbolt", "Volt Switch", "Will-O-Wisp"], "abilities": ["Levitate"], "teraTypes": ["Electric", "Steel"] } @@ -3740,16 +3764,10 @@ "level": 69, "sets": [ { - "role": "Bulky Support", - "movepool": ["Focus Blast", "Judgment", "Recover", "Will-O-Wisp"], + "role": "Bulky Attacker", + "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover", "Will-O-Wisp"], "abilities": ["Multitype"], - "teraTypes": ["Fighting", "Normal"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"], - "abilities": ["Multitype"], - "teraTypes": ["Fighting", "Ghost", "Normal"] + "teraTypes": ["Dark", "Fighting"] } ] }, @@ -4017,7 +4035,13 @@ "sets": [ { "role": "Fast Support", - "movepool": ["Encore", "Giga Drain", "Leech Seed", "Moonblast", "Stun Spore", "Substitute", "U-turn"], + "movepool": ["Encore", "Giga Drain", "Moonblast", "Stun Spore", "U-turn"], + "abilities": ["Prankster"], + "teraTypes": ["Poison", "Steel"] + }, + { + "role": "Bulky Support", + "movepool": ["Encore", "Leech Seed", "Moonblast", "Substitute"], "abilities": ["Prankster"], "teraTypes": ["Poison", "Steel"] } @@ -5011,7 +5035,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["Drain Punch", "Horn Leech", "Poltergeist", "Rest", "Trick Room", "Will-O-Wisp", "Wood Hammer"], + "movepool": ["Drain Punch", "Horn Leech", "Poltergeist", "Rest", "Will-O-Wisp", "Wood Hammer"], "abilities": ["Natural Cure"], "teraTypes": ["Fighting"] }, @@ -5515,9 +5539,9 @@ "sets": [ { "role": "Setup Sweeper", - "movepool": ["Drain Punch", "Play Rough", "Shadow Sneak", "Swords Dance", "Wood Hammer"], + "movepool": ["Drain Punch", "Play Rough", "Shadow Sneak", "Swords Dance"], "abilities": ["Disguise"], - "teraTypes": ["Fairy", "Fighting", "Grass"] + "teraTypes": ["Fairy", "Fighting"] }, { "role": "Fast Bulky Setup", @@ -6563,7 +6587,7 @@ "sets": [ { "role": "Bulky Support", - "movepool": ["Body Press", "Play Rough", "Protect", "Stomping Tantrum", "Wish"], + "movepool": ["Body Press", "Play Rough", "Protect", "Wish", "Yawn"], "abilities": ["Well-Baked Body"], "teraTypes": ["Steel"] } @@ -7126,7 +7150,7 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["Close Combat", "Seed Bomb", "Spore", "Sucker Punch"], + "movepool": ["Close Combat", "Crunch", "Spore", "Sucker Punch"], "abilities": ["Protosynthesis"], "teraTypes": ["Fighting", "Poison"] }, diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index 8d21a57e89..99fea6cb97 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -104,7 +104,7 @@ const SPEED_CONTROL = [ ]; // Moves that shouldn't be the only STAB moves: const NO_STAB = [ - 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'bulletpunch', 'chatter', 'chloroblast', 'clearsmog', 'covet', + 'acidspray', 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'bulletpunch', 'chatter', 'chloroblast', 'clearsmog', 'covet', 'dragontail', 'doomdesire', 'electroweb', 'eruption', 'explosion', 'fakeout', 'feint', 'flamecharge', 'flipturn', 'futuresight', 'grassyglide', 'iceshard', 'icywind', 'incinerate', 'infestation', 'machpunch', 'meteorbeam', 'mortalspin', 'nuzzle', 'pluck', 'pursuit', 'quickattack', 'rapidspin', 'reversal', 'selfdestruct', 'shadowsneak', 'skydrop', 'snarl', 'strugglebug', 'suckerpunch', 'trailblaze', @@ -501,7 +501,7 @@ export class RandomTeams { // Team-based move culls if (teamDetails.screens) { - if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil')); + if (movePool.includes('auroraveil') && !isDoubles) this.fastPop(movePool, movePool.indexOf('auroraveil')); if (movePool.length >= this.maxMoveCount + 2) { if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect')); if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen')); @@ -568,7 +568,6 @@ export class RandomTeams { [SETUP, HAZARDS], [SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']], [PHYSICAL_SETUP, PHYSICAL_SETUP], - [SPECIAL_SETUP, 'thunderwave'], ['substitute', PIVOT_MOVES], [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']], ['curse', ['irondefense', 'rapidspin']], @@ -816,12 +815,6 @@ export class RandomTeams { } } - // Enforce Encore on Whimsicott - if (movePool.includes('encore') && species.id === 'whimsicott') { - counter = this.addMove('encore', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - // Enforce moves in doubles if (isDoubles) { const doublesEnforcedMoves = ['mortalspin', 'spore']; @@ -841,11 +834,6 @@ export class RandomTeams { counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role); } - // Enforce Thunder Wave on Prankster users as well - if (movePool.includes('thunderwave') && abilities.includes('Prankster')) { - counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } } // Enforce STAB priority @@ -1111,7 +1099,6 @@ export class RandomTeams { // Hard-code abilities here if (species.id === 'drifblim') return moves.has('defog') ? 'Aftermath' : 'Unburden'; if (abilities.includes('Flash Fire') && this.dex.getEffectiveness('Fire', teraType) >= 1) return 'Flash Fire'; - if (species.id === 'hitmonchan' && counter.get('ironfist')) return 'Iron Fist'; if ((species.id === 'thundurus' || species.id === 'tornadus') && !counter.get('Physical')) return 'Prankster'; if (species.id === 'swampert' && (counter.get('Water') || moves.has('flipturn'))) return 'Torrent'; if (species.id === 'toucannon' && counter.get('skilllink')) return 'Skill Link'; diff --git a/data/random-battles/gen9baby/sets.json b/data/random-battles/gen9baby/sets.json index 8f41c6ea17..0507dbd0ac 100644 --- a/data/random-battles/gen9baby/sets.json +++ b/data/random-battles/gen9baby/sets.json @@ -1101,7 +1101,7 @@ "level": 5, "sets": [ { - "role": "Setup Sweeper", + "role": "Bulky Setup", "movepool": ["Dual Wingbeat", "Earthquake", "Knock Off", "Swords Dance"], "abilities": ["Immunity"], "teraTypes": ["Steel", "Water"] @@ -1970,7 +1970,7 @@ "level": 6, "sets": [ { - "role": "Setup Sweeper", + "role": "Bulky Setup", "movepool": ["Iron Head", "Night Slash", "Sucker Punch", "Swords Dance"], "abilities": ["Defiant"], "teraTypes": ["Dark", "Fairy", "Steel"] @@ -2599,7 +2599,7 @@ ] }, "skiddo": { - "level": 7, + "level": 6, "sets": [ { "role": "Bulky Setup", From d7697566392007ff2c57c3db77a3c6bcfed42000 Mon Sep 17 00:00:00 2001 From: InkyDarkBird <102001461+InkyDarkBird@users.noreply.github.com> Date: Sun, 1 Feb 2026 16:12:56 -0500 Subject: [PATCH 096/139] SV Flipped: Fix bans (#11739) --- config/formats.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 98ef07caa5..6f80143459 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -487,10 +487,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard OMs', 'Sleep Clause Mod', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], banlist: [ 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', - 'Dialga', 'Dialga-Origin', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Lugia', 'Lunala', - 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', - 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', - 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', + 'Dialga', 'Dialga-Origin', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Kyurem-Black', + 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', + 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned', + 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', + 'Shed Tail', ], }, { From 1cbbf9bf652f9e28f501f1d5182dabc97418350a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 1 Feb 2026 23:31:28 +0000 Subject: [PATCH 097/139] Gen 3 Pursuit only activates on the selected target (#11611) * Gen 3 Pursuit only activates on the chosen target * Change * Fix following Pursuits * Resolve further conflicts * Update gen 4 * Don't need to check for allies --- data/mods/gen2/moves.ts | 16 ++++---- data/mods/gen3/moves.ts | 14 +++++++ data/mods/gen4/moves.ts | 11 +++-- data/moves.ts | 10 ++--- test/sim/moves/pursuit.js | 86 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 115 insertions(+), 22 deletions(-) diff --git a/data/mods/gen2/moves.ts b/data/mods/gen2/moves.ts index c6ad3efc10..a93ee5c525 100644 --- a/data/mods/gen2/moves.ts +++ b/data/mods/gen2/moves.ts @@ -573,16 +573,14 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, pursuit: { inherit: true, - beforeTurnCallback(pokemon) { - for (const side of this.sides) { - if (side.hasAlly(pokemon)) continue; - side.addSideCondition('pursuit', pokemon); - const data = side.getSideConditionData('pursuit'); - if (!data.sources) { - data.sources = []; - } - data.sources.push(pokemon); + beforeTurnCallback(pokemon, target) { + if (pokemon.isAlly(target)) return; + target.addVolatile('pursuit'); + const data = target.volatiles['pursuit']; + if (!data.sources) { + data.sources = []; } + data.sources.push(pokemon); }, onModifyMove() {}, condition: { diff --git a/data/mods/gen3/moves.ts b/data/mods/gen3/moves.ts index 9764e11df8..191b050808 100644 --- a/data/mods/gen3/moves.ts +++ b/data/mods/gen3/moves.ts @@ -578,6 +578,20 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { inherit: true, basePower: 70, }, + pursuit: { + inherit: true, + beforeTurnCallback(pokemon, target) { + if (['frz', 'slp'].includes(pokemon.status) || + (pokemon.hasAbility('truant') && pokemon.truantTurn)) return; + if (pokemon.isAlly(target)) return; + target.addVolatile('pursuit'); + const data = target.volatiles['pursuit']; + if (!data.sources) { + data.sources = []; + } + data.sources.push(pokemon); + }, + }, recover: { inherit: true, pp: 20, diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index 38282c5cbe..3caeea4ac3 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -1333,12 +1333,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { pursuit: { inherit: true, beforeTurnCallback(pokemon) { - if (['frz', 'slp'].includes(pokemon.status) || (pokemon.hasAbility('truant') && - (pokemon.volatiles['truant'] || pokemon.truantTurn))) return; - for (const side of this.sides) { - if (side.hasAlly(pokemon)) continue; - side.addSideCondition('pursuit', pokemon); - const data = side.getSideConditionData('pursuit'); + if (['frz', 'slp'].includes(pokemon.status) || + (pokemon.hasAbility('truant') && pokemon.volatiles['truant'])) return; + for (const target of pokemon.foes()) { + target.addVolatile('pursuit'); + const data = target.volatiles['pursuit']; if (!data.sources) { data.sources = []; } diff --git a/data/moves.ts b/data/moves.ts index 50bfecdc3b..e19821ac7f 100644 --- a/data/moves.ts +++ b/data/moves.ts @@ -14914,10 +14914,9 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = { priority: 0, flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 }, beforeTurnCallback(pokemon) { - for (const side of this.sides) { - if (side.hasAlly(pokemon)) continue; - side.addSideCondition('pursuit', pokemon); - const data = side.getSideConditionData('pursuit'); + for (const target of pokemon.foes()) { + target.addVolatile('pursuit'); + const data = target.volatiles['pursuit']; if (!data.sources) { data.sources = []; } @@ -14927,9 +14926,6 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = { onModifyMove(move, source, target) { if (target?.beingCalledBack || target?.switchFlag) move.accuracy = true; }, - onTryHit(target, pokemon) { - target.side.removeSideCondition('pursuit'); - }, condition: { duration: 1, onBeforeSwitchOut(pokemon) { diff --git a/test/sim/moves/pursuit.js b/test/sim/moves/pursuit.js index f66de5b62d..f3d634df71 100644 --- a/test/sim/moves/pursuit.js +++ b/test/sim/moves/pursuit.js @@ -64,6 +64,57 @@ describe(`Pursuit`, () => { assert.bounded(furret.maxhp - furret.hp, [60, 70]); }); + it(`should activate on the first target switching out`, () => { + battle = common.createBattle({ gameType: 'doubles' }, [[ + { species: "Beedrill", moves: ['pursuit'] }, + { species: "Furret", moves: ['pursuit'] }, + ], [ + { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] }, + { species: "Toxapex", moves: ['calmmind'] }, + { species: "Wynaut", moves: ['calmmind'] }, + { species: "Alakazam", moves: ['calmmind'] }, + ]]); + const [clefable, toxapex, wynaut, alakazam] = battle.p2.pokemon; + battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4'); // Does not matter who Pursuit targets + assert.bounded(clefable.maxhp - clefable.hp, [34 + 30, 40 + 35]); + assert.fullHP(toxapex); + assert.fullHP(wynaut); + assert.fullHP(alakazam); + }); + + it(`should activate on the second target switching out, if the first fainted`, () => { + battle = common.createBattle({ gameType: 'doubles' }, [[ + { species: "Beedrill", moves: ['pursuit'] }, + { species: "Furret", moves: ['pursuit'] }, + ], [ + { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] }, + { species: "Shedinja", moves: ['calmmind'], evs: { spe: 252 } }, + { species: "Wynaut", moves: ['calmmind'] }, + { species: "Alakazam", moves: ['calmmind'] }, + ]]); + const [clefable, shedinja, wynaut, alakazam] = battle.p2.pokemon; + battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4'); + assert.bounded(clefable.maxhp - clefable.hp, [34, 40]); + assert.fainted(shedinja); + assert.fullHP(wynaut); + assert.fullHP(alakazam); + }); + + it(`should activate on a switching opponent even if targeting an ally`, () => { + battle = common.createBattle({ gameType: 'doubles' }, [[ + { species: "Beedrill", item: 'beedrillite', moves: ['pursuit'] }, + { species: "Clefable", moves: ['calmmind'] }, + { species: "Furret", moves: ['calmmind'] }, + ], [ + { species: "Clefable", moves: ['calmmind'] }, + { species: "Alakazam", moves: ['calmmind'] }, + { species: "Roserade", moves: ['calmmind'] }, + ]]); + const clefable = battle.p2.pokemon[0]; + battle.makeChoices('move pursuit mega -2, switch 3', 'switch 3, move calmmind'); + assert.bounded(clefable.maxhp - clefable.hp, [53, 63]); + }); + it(`should not double in power or activate before a switch triggered by Red Card`, () => { battle = common.createBattle([[ { species: 'Steelix', item: 'redcard', moves: ['pursuit'] }, @@ -195,6 +246,41 @@ describe(`Pursuit`, () => { battle.makeChoices('move Pursuit', 'switch 2'); assert(battle.p2.active[0].hp); }); + + it(`should only activate on the targeted opponent`, () => { + battle = common.gen(3).createBattle({ gameType: 'doubles' }, [[ + { species: "Beedrill", moves: ['pursuit'] }, + { species: "Furret", moves: ['pursuit'] }, + ], [ + { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] }, + { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] }, + { species: "Wynaut", moves: ['calmmind'] }, + { species: "Alakazam", moves: ['calmmind'] }, + ]]); + const [clefable, clefable2, wynaut, alakazam] = battle.p2.pokemon; + battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4'); + assert.bounded(clefable.maxhp - clefable.hp, [35, 42]); + assert.bounded(clefable2.maxhp - clefable2.hp, [35, 42]); + assert.fullHP(wynaut); + assert.fullHP(alakazam); + }); + + it(`should not activate on a switching opponent if targeting an ally`, () => { + battle = common.gen(3).createBattle({ gameType: 'doubles' }, [[ + { species: "Beedrill", moves: ['pursuit'] }, + { species: "Clefable", moves: ['calmmind'] }, + { species: "Furret", moves: ['calmmind'] }, + ], [ + { species: "Clefable", moves: ['calmmind'] }, + { species: "Alakazam", moves: ['calmmind'] }, + { species: "Roserade", moves: ['calmmind'] }, + ]]); + const clefable = battle.p2.pokemon[0]; + battle.makeChoices('move pursuit -2, switch 3', 'switch 3, move calmmind'); + assert.fullHP(clefable); + const furret = battle.p1.pokemon[1]; + assert.bounded(furret.maxhp - furret.hp, [25, 30]); + }); }); describe(`[Gen 2]`, () => { From e847960a1b826594246d7e0958f5ae2cb0af0172 Mon Sep 17 00:00:00 2001 From: Lucas <33839844+Lucas-Meijer@users.noreply.github.com> Date: Mon, 2 Feb 2026 00:32:18 +0100 Subject: [PATCH 098/139] Add different dexes to /reevo (#11731) Co-authored-by: Meijer,L. (Lucas) --- server/chat-plugins/othermetas.ts | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/server/chat-plugins/othermetas.ts b/server/chat-plugins/othermetas.ts index 37a54c70d4..284fd2bde1 100644 --- a/server/chat-plugins/othermetas.ts +++ b/server/chat-plugins/othermetas.ts @@ -849,20 +849,30 @@ export const commands: Chat.ChatCommands = { reevo: 'showevo', showevo(target, room, user, connection, cmd) { - if (!this.runBroadcast()) return; - const targetid = toID(target); + const args = target.split(','); + if (!toID(args[0])) return this.parse('/help reevohelp'); + this.runBroadcast(); + let dex = Dex; + if (args[1] && toID(args[1]) in Dex.dexes) { + dex = Dex.dexes[toID(args[1])]; + } else if (room?.battle) { + const format = Dex.formats.get(room.battle.format); + dex = Dex.mod(format.mod); + } + + const targetid = toID(args[0]); const isReEvo = cmd === 'reevo'; if (!targetid) return this.parse(`/help ${isReEvo ? 're' : 'show'}evo`); - const evo = Dex.species.get(target); + const evo = dex.species.get(targetid); if (!evo.exists) { - throw new Chat.ErrorMessage(`Error: Pok\u00e9mon ${target} not found.`); + throw new Chat.ErrorMessage(`Error: Pok\u00e9mon ${targetid} not found.`); } if (!evo.prevo) { - const evoBaseSpecies = Dex.species.get( + const evoBaseSpecies = dex.species.get( (Array.isArray(evo.battleOnly) ? evo.battleOnly[0] : evo.battleOnly) || evo.changesFrom || evo.name ); if (!evoBaseSpecies.prevo) throw new Chat.ErrorMessage(`Error: ${evoBaseSpecies.name} is not an evolution.`); - const prevoSpecies = Dex.species.get(evoBaseSpecies.prevo); + const prevoSpecies = dex.species.get(evoBaseSpecies.prevo); const deltas = Utils.deepClone(evo); if (!isReEvo) { deltas.tier = 'CE'; @@ -901,14 +911,14 @@ export const commands: Chat.ChatCommands = { const details = { Gen: evo.gen, Weight: `${deltas.weighthg < 0 ? "" : "+"}${deltas.weighthg / 10} kg`, - Stage: (Dex.species.get(prevoSpecies.prevo).exists ? 3 : 2), + Stage: (dex.species.get(prevoSpecies.prevo).exists ? 3 : 2), }; this.sendReply(`|raw|${Chat.getDataPokemonHTML(deltas)}`); if (!isReEvo) { this.sendReply(`|raw|Gen: ${details["Gen"]} |  Weight: ${details["Weight"]} |  Stage: ${details["Stage"]}`); } } else { - const prevoSpecies = Dex.species.get(evo.prevo); + const prevoSpecies = dex.species.get(evo.prevo); const deltas = Utils.deepClone(evo); if (!isReEvo) { deltas.tier = 'CE'; @@ -941,7 +951,7 @@ export const commands: Chat.ChatCommands = { const details = { Gen: evo.gen, Weight: `${deltas.weighthg < 0 ? "" : "+"}${deltas.weighthg / 10} kg`, - Stage: (Dex.species.get(prevoSpecies.prevo).exists ? 3 : 2), + Stage: (dex.species.get(prevoSpecies.prevo).exists ? 3 : 2), }; this.sendReply(`|raw|${Chat.getDataPokemonHTML(deltas)}`); if (!isReEvo) { From a6c45ecb45d859df35e72fee30d61204f49bdd45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Tue, 3 Feb 2026 00:47:14 +0000 Subject: [PATCH 099/139] Remove Slow Start volatile tag on suppression (#11571) --- data/abilities.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/abilities.ts b/data/abilities.ts index cbc7bf08b4..5eaa06b0ab 100644 --- a/data/abilities.ts +++ b/data/abilities.ts @@ -4255,6 +4255,10 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { return this.chainModify(0.5); } }, + onEnd(pokemon) { + if (pokemon.beingCalledBack) return; + this.add('-end', pokemon, 'Slow Start', '[silent]'); + }, flags: {}, name: "Slow Start", rating: -1, From 08562488b063a7a055197376736ed0c292f2ac2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Tue, 3 Feb 2026 23:09:04 +0000 Subject: [PATCH 100/139] Refactor Illusion switch out check (#11742) --- data/abilities.ts | 2 +- sim/battle-actions.ts | 1 - test/sim/abilities/illusion.js | 13 +++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/data/abilities.ts b/data/abilities.ts index 5eaa06b0ab..51be75b7eb 100644 --- a/data/abilities.ts +++ b/data/abilities.ts @@ -2017,7 +2017,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { } }, onEnd(pokemon) { - if (pokemon.illusion) { + if (pokemon.illusion && !pokemon.beingCalledBack) { this.debug('illusion cleared'); pokemon.illusion = null; const details = pokemon.getUpdatedDetails(); diff --git a/sim/battle-actions.ts b/sim/battle-actions.ts index 7879fdd6c0..b87cf131b0 100644 --- a/sim/battle-actions.ts +++ b/sim/battle-actions.ts @@ -100,7 +100,6 @@ export class BattleActions { // will definitely switch out at this point - oldActive.illusion = null; this.battle.singleEvent('End', oldActive.getAbility(), oldActive.abilityState, oldActive); this.battle.singleEvent('End', oldActive.getItem(), oldActive.itemState, oldActive); diff --git a/test/sim/abilities/illusion.js b/test/sim/abilities/illusion.js index a49e097d54..49917c37d4 100644 --- a/test/sim/abilities/illusion.js +++ b/test/sim/abilities/illusion.js @@ -10,6 +10,19 @@ describe('Illusion', () => { battle.destroy(); }); + it('should not wear off when switching out', () => { + battle = common.createBattle([[ + { species: "Zoroark", ability: 'illusion', moves: ['sleeptalk'] }, + { species: "Diglett", moves: ['sleeptalk'] }, + ], [ + { species: "Wynaut", moves: ['sleeptalk'] }, + ]]); + + battle.makeChoices('move sleeptalk', 'auto'); + battle.makeChoices('switch 2', 'auto'); + assert(battle.log.every(line => !line.includes('|-end|p1a: Zoroark|Illusion'))); + }); + it(`should not instantly wear off before Dynamaxing`, () => { battle = common.gen(8).createBattle([[ { species: "Zoroark", ability: 'illusion', moves: ['sleeptalk'] }, From 0fd2b67850b5d637f65b3cff9ecd298fdd61e90a Mon Sep 17 00:00:00 2001 From: Aurastic <33085835+ISenseAura@users.noreply.github.com> Date: Wed, 4 Feb 2026 11:56:23 +0530 Subject: [PATCH 101/139] Automodchat: Prevent idle or busy staff from being treated as online (#11727) --- server/rooms.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/rooms.ts b/server/rooms.ts index 8433eed21a..b98bb0331a 100644 --- a/server/rooms.ts +++ b/server/rooms.ts @@ -1078,7 +1078,7 @@ export abstract class BasicRoom { runAutoModchat() { if (!this.settings.autoModchat || this.settings.autoModchat.active) return; // they are staff and online - const staff = Object.values(this.users).filter(u => this.auth.atLeast(u, '%')); + const staff = Object.values(this.users).filter(u => this.auth.atLeast(u, '%') && u.statusType === 'online'); if (!staff.length) { const { time } = this.settings.autoModchat; if (!time || time < 5) { From 2ca5d0f3caf176a370ce450002a0f591c615c04b Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Fri, 6 Feb 2026 03:16:16 -0500 Subject: [PATCH 102/139] Mix and Mega formats: Fix banlists (#11743) * LC Mix and Mega: Bans Sticky Web * @clastia smells --- config/formats.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 6f80143459..0817632f56 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -592,7 +592,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Slaking', 'Sneasler', 'Solgaleo', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Walking Wake', 'Zacian', 'Zekrom', 'Zoroark-Hisui', 'Acupressure', 'Astral Barrage', 'Belly Drum', 'Blood Moon', 'Boomburst', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw', 'Dragon Energy', 'Electro Shot', 'Extreme Speed', 'Fillet Away', 'Gigaton Hammer', 'Jet Punch', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Power Trip', - 'Rage Fist', 'Revival Blessing', 'Shed Tail', 'Shell Smash', 'Shift Gear', 'Surging Strikes', 'Torch Song', 'Triple Arrows', 'V-create', 'Victory Dance', 'Wicked Blow', + 'Rage Fist', 'Revival Blessing', 'Shell Smash', 'Shift Gear', 'Surging Strikes', 'Torch Song', 'Triple Arrows', 'V-create', 'Victory Dance', 'Wicked Blow', ], onValidateTeam(team) { const itemTable = new Set(); @@ -2898,7 +2898,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: [ 'Basculin-White-Striped', 'Dunsparce', 'Duraludon', 'Meditite', 'Rufflet', 'Scyther', 'Sneasel', 'Sneasel-Hisui', 'Stantler', 'Moody', 'Absolite Z', 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Lucarionite Z', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Zygardite', - 'Baton Pass', + 'Baton Pass', 'Sticky Web', ], restricted: [ 'Aipom', 'Buizel', 'Cutiefly', 'Dratini', 'Elekid', 'Gastly', 'Girafarig', 'Gligar', 'Mienfoo', From af4f85a33c6b7c0afe840723d7b1ddf1d84d00ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Fri, 6 Feb 2026 08:16:33 +0000 Subject: [PATCH 103/139] ADV UU: Drop Fearow, Hypno and Manectric (#11740) https://www.smogon.com/forums/threads/adv-rarelyused.3731043/post-10860568 --- data/mods/gen3/formats-data.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/mods/gen3/formats-data.ts b/data/mods/gen3/formats-data.ts index d56a3693da..e87cfe3add 100644 --- a/data/mods/gen3/formats-data.ts +++ b/data/mods/gen3/formats-data.ts @@ -63,7 +63,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, fearow: { - tier: "UU", + tier: "RUBL", }, ekans: { tier: "LC", @@ -312,7 +312,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "ZU", }, hypno: { - tier: "UU", + tier: "RU", }, krabby: { tier: "LC", @@ -930,7 +930,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, manectric: { - tier: "UU", + tier: "RU", }, plusle: { tier: "NU", From df367633bce4d5d20516da8a98e648c508b3767f Mon Sep 17 00:00:00 2001 From: Karthik Bandagonda <32044378+Karthik99999@users.noreply.github.com> Date: Fri, 6 Feb 2026 06:47:29 -0700 Subject: [PATCH 104/139] Refactor Skill Swap to its own function (#11563) --- data/abilities.ts | 25 +++---------------------- data/mods/gen4/moves.ts | 13 ------------- data/mods/gen5/moves.ts | 13 ------------- data/moves.ts | 29 +---------------------------- sim/battle.ts | 33 +++++++++++++++++++++++++++++++++ sim/pokemon.ts | 16 ++++++++++++---- 6 files changed, 49 insertions(+), 80 deletions(-) diff --git a/data/abilities.ts b/data/abilities.ts index 51be75b7eb..c54de73b98 100644 --- a/data/abilities.ts +++ b/data/abilities.ts @@ -2333,10 +2333,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { return; } if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) { - const oldAbility = source.setAbility('lingeringaroma', target); - if (oldAbility) { - this.add('-activate', target, 'ability: Lingering Aroma', this.dex.abilities.get(oldAbility).name, `[of] ${source}`); - } + source.setAbility('lingeringaroma', target); } }, flags: {}, @@ -2714,10 +2711,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { return; } if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) { - const oldAbility = source.setAbility('mummy', target); - if (oldAbility) { - this.add('-activate', target, 'ability: Mummy', this.dex.abilities.get(oldAbility).name, `[of] ${source}`); - } + source.setAbility('mummy', target); } }, flags: {}, @@ -5270,20 +5264,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = { }, wanderingspirit: { onDamagingHit(damage, target, source, move) { - if (source.getAbility().flags['failskillswap'] || target.volatiles['dynamax']) return; - - if (this.checkMoveMakesContact(move, source, target)) { - const targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, source.ability); - if (!targetCanBeSet) return targetCanBeSet; - const sourceAbility = source.setAbility('wanderingspirit', target); - if (!sourceAbility) return; - if (target.isAlly(source)) { - this.add('-activate', target, 'Skill Swap', '', '', `[of] ${source}`); - } else { - this.add('-activate', target, 'ability: Wandering Spirit', this.dex.abilities.get(sourceAbility).name, 'Wandering Spirit', `[of] ${source}`); - } - target.setAbility(sourceAbility); - } + if (this.checkMoveMakesContact(move, source, target)) this.skillSwap(source, target); }, flags: {}, name: "Wandering Spirit", diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index 3caeea4ac3..1e5db1ae5e 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -1554,19 +1554,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { this.add('-activate', source, 'move: Mimic', move.name); }, }, - skillswap: { - inherit: true, - onHit(target, source) { - const targetAbility = target.ability; - const sourceAbility = source.ability; - if (targetAbility === sourceAbility || source.hasItem('griseousorb') || target.hasItem('griseousorb')) { - return false; - } - this.add('-activate', source, 'move: Skill Swap'); - source.setAbility(targetAbility); - target.setAbility(sourceAbility); - }, - }, sleeptalk: { inherit: true, onTryHit(pokemon) { diff --git a/data/mods/gen5/moves.ts b/data/mods/gen5/moves.ts index ab4cc6060f..4328d70e1e 100644 --- a/data/mods/gen5/moves.ts +++ b/data/mods/gen5/moves.ts @@ -794,19 +794,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { inherit: true, flags: { protect: 1, reflectable: 1, mirror: 1, sound: 1, metronome: 1 }, }, - skillswap: { - inherit: true, - onHit(target, source) { - const targetAbility = target.ability; - const sourceAbility = source.ability; - if (targetAbility === sourceAbility) { - return false; - } - this.add('-activate', source, 'move: Skill Swap', this.dex.abilities.get(targetAbility), this.dex.abilities.get(sourceAbility), `[of] ${target}`); - source.setAbility(targetAbility); - target.setAbility(sourceAbility); - }, - }, skullbash: { inherit: true, basePower: 100, diff --git a/data/moves.ts b/data/moves.ts index e19821ac7f..8004f48dfb 100644 --- a/data/moves.ts +++ b/data/moves.ts @@ -17209,35 +17209,8 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = { pp: 10, priority: 0, flags: { protect: 1, mirror: 1, bypasssub: 1, allyanim: 1, metronome: 1 }, - onTryHit(target, source) { - const targetAbility = target.getAbility(); - const sourceAbility = source.getAbility(); - if (sourceAbility.flags['failskillswap'] || targetAbility.flags['failskillswap'] || target.volatiles['dynamax']) { - return false; - } - const sourceCanBeSet = this.runEvent('SetAbility', source, source, this.effect, targetAbility); - if (!sourceCanBeSet) return sourceCanBeSet; - const targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, sourceAbility); - if (!targetCanBeSet) return targetCanBeSet; - }, onHit(target, source, move) { - const targetAbility = target.getAbility(); - const sourceAbility = source.getAbility(); - if (target.isAlly(source)) { - this.add('-activate', source, 'move: Skill Swap', '', '', `[of] ${target}`); - } else { - this.add('-activate', source, 'move: Skill Swap', targetAbility, sourceAbility, `[of] ${target}`); - } - this.singleEvent('End', sourceAbility, source.abilityState, source); - this.singleEvent('End', targetAbility, target.abilityState, target); - source.ability = targetAbility.id; - target.ability = sourceAbility.id; - source.abilityState = this.initEffectState({ id: this.toID(source.ability), target: source }); - target.abilityState = this.initEffectState({ id: this.toID(target.ability), target }); - source.volatileStaleness = undefined; - if (!target.isAlly(source)) target.volatileStaleness = 'external'; - this.singleEvent('Start', targetAbility, source.abilityState, source); - this.singleEvent('Start', sourceAbility, target.abilityState, target); + return this.skillSwap(source, target); }, secondary: null, target: "normal", diff --git a/sim/battle.ts b/sim/battle.ts index e4c6e2ee87..cbfbda0de2 100644 --- a/sim/battle.ts +++ b/sim/battle.ts @@ -1298,6 +1298,39 @@ export class Battle { return !!move.flags['contact']; } + skillSwap(source: Pokemon, target: Pokemon) { + if (source.fainted || target.fainted) return false; + if (source.volatiles['dynamax'] || target.volatiles['dynamax']) return false; + const sourceAbility = source.getAbility(); + const targetAbility = target.getAbility(); + if (sourceAbility.flags['failskillswap'] || targetAbility.flags['failskillswap']) return false; + if (this.gen <= 5 && sourceAbility.id === targetAbility.id) return false; + + const sourceEffect = this.dex.conditions.get('skillswap'); + const targetCanBeSet = this.runEvent('SetAbility', target, source, sourceEffect, sourceAbility); + if (!targetCanBeSet) return targetCanBeSet; + const sourceCanBeSet = this.runEvent('SetAbility', source, source, sourceEffect, targetAbility); + if (!sourceCanBeSet) return sourceCanBeSet; + + if (this.gen <= 4 || source.isAlly(target)) { + this.add('-activate', source, 'Skill Swap'); + } else { + this.add('-activate', source, 'Skill Swap', target, `[ability] ${targetAbility.name}`, `[ability2] ${sourceAbility.name}`); + } + this.singleEvent('End', sourceAbility, source.abilityState, source); + this.singleEvent('End', targetAbility, target.abilityState, target); + source.ability = targetAbility.id; + target.ability = sourceAbility.id; + source.abilityState = this.initEffectState({ id: toID(source.ability), target: source }); + target.abilityState = this.initEffectState({ id: toID(target.ability), target }); + source.volatileStaleness = undefined; + if (!source.isAlly(target)) target.volatileStaleness = 'external'; + if (this.gen > 3) { + this.singleEvent('Start', sourceAbility, target.abilityState, target); + this.singleEvent('Start', targetAbility, source.abilityState, source); + } + } + getPokemon(fullname: string | Pokemon) { if (typeof fullname !== 'string') fullname = fullname.fullname; for (const side of this.sides) { diff --git a/sim/pokemon.ts b/sim/pokemon.ts index ba51b073a0..418bdc3bd2 100644 --- a/sim/pokemon.ts +++ b/sim/pokemon.ts @@ -1900,10 +1900,18 @@ export class Pokemon { this.ability = ability.id; this.abilityState = this.battle.initEffectState({ id: ability.id, target: this }); if (sourceEffect && !isFromFormeChange && !isTransform) { - if (source) { - this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`, `[of] ${source}`); - } else { - this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`); + switch (sourceEffect.id) { + case 'mummy': + case 'lingeringaroma': + this.battle.add('-activate', source, sourceEffect.fullname, this, '[ability] ' + oldAbility.name); + break; + default: + if (source) { + this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`, `[of] ${source}`); + } else { + this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`); + } + break; } } if (ability.id && this.battle.gen > 3 && From f75c7e4ef8e4c0ecd16482d33dcc126ca1a8858c Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 8 Feb 2026 10:22:33 -0700 Subject: [PATCH 105/139] GSC ZU: Fix bans --- config/formats.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 0817632f56..173d8ee4ad 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -5326,7 +5326,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen2', searchShow: false, ruleset: ['[Gen 2] PU'], - banlist: ['PU', 'ZUBL'], + banlist: ['PU', 'ZUBL', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web'], + unbanlist: ['Baton Pass'], }, { name: "[Gen 2] NC 2000", From 8f8c96915d985ae75a18783f099dbecf028fd406 Mon Sep 17 00:00:00 2001 From: InkyDarkBird <102001461+InkyDarkBird@users.noreply.github.com> Date: Sun, 8 Feb 2026 12:23:17 -0500 Subject: [PATCH 106/139] SV Flipped: Update bans (#11751) --- config/formats.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 173d8ee4ad..b1123c5ee3 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -487,11 +487,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard OMs', 'Sleep Clause Mod', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], banlist: [ 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', - 'Dialga', 'Dialga-Origin', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Kyurem-Black', + 'Dialga', 'Dialga-Origin', 'Espathra', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned', - 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', - 'Shed Tail', + 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', + 'Last Respects', 'Shed Tail', ], }, { From b9caaaa9278ae0b347fed4d7b1c0170c13ee8985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 8 Feb 2026 17:23:34 +0000 Subject: [PATCH 107/139] LC UU: Ban Light Clay (#11745) https://www.smogon.com/forums/threads/sv-lc-uu-metagame-resource-and-discussion-thread.3711750/post-10863288 --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index b1123c5ee3..da4b926419 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -343,7 +343,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Pawniard', 'Salandit', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', 'Trapinch', 'Vullaby', 'Wingull', 'Zorua-Hisui', // LC UUBL - 'Deerling', 'Minccino', + 'Deerling', 'Minccino', 'Light Clay', ], }, { From 737a8095ac27ad1d377b9fa4788d4762a94869c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 8 Feb 2026 17:24:39 +0000 Subject: [PATCH 108/139] Add Full Arceus Clause (#11725) * Enable Arceus EV Limit Mod * English * Add comment with implementation location * Add Full Arceus Clause * Add event for clause * Move comment * Lint * Simplify assignments * Revert Melmetal changes * Revert "Revert Melmetal changes" This reverts commit 8c4a04e67c048037262ad0c847ebaff88cd1d110. * Reapply "Revert Melmetal changes" This reverts commit 75539720111b37abaf657512441a04c3e6e7cbe3. * Add explanation comment * Remove test * Comment --- data/rulesets.ts | 6 ++++++ sim/team-validator.ts | 8 +++++++- test/sim/team-validator/events.js | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/data/rulesets.ts b/data/rulesets.ts index 8472973ebd..d3a7cfb690 100644 --- a/data/rulesets.ts +++ b/data/rulesets.ts @@ -1606,6 +1606,12 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { this.add('rule', 'Terastal Clause: You cannot Terastallize'); }, }, + fullarceusclause: { + effectType: 'ValidatorRule', + name: 'Full Arceus Clause', + desc: "Allows Level 80 Arceus from Hall of Origin", + // Implemented in sim/team-validator.ts + }, inversemod: { effectType: 'Rule', name: 'Inverse Mod', diff --git a/sim/team-validator.ts b/sim/team-validator.ts index 91eea6d65c..58d68c1c95 100644 --- a/sim/team-validator.ts +++ b/sim/team-validator.ts @@ -650,6 +650,7 @@ export class TeamValidator { } } if (species.id === 'melmetal' && set.gigantamax && this.dex.species.getLearnsetData(species.id).eventData) { + // Gigantamax Melmetal cannot be obtained through the Max Soup setSources.sourcesBefore = 0; setSources.sources = ['8S0 melmetal']; } @@ -955,7 +956,12 @@ export class TeamValidator { } } } else if (ruleTable.has('obtainablemisc') && (eventOnlyData = this.getEventOnlyData(outOfBattleSpecies))) { - const { species: eventSpecies, eventData } = eventOnlyData; + const eventSpecies = eventOnlyData.species; + let eventData = eventOnlyData.eventData; + if (ruleTable.has('fullarceusclause') && eventSpecies.baseSpecies === 'Arceus') { + // Hall of Origin Arceus + eventData = [...eventData, { generation: 4, level: 80, moves: ['refresh', 'futuresight', 'recover', 'hyperbeam'] }]; + } let legal = false; for (const event of eventData) { if (this.validateEvent(set, setSources, event, eventSpecies)) continue; diff --git a/test/sim/team-validator/events.js b/test/sim/team-validator/events.js index 3132ca4a67..2100fddf14 100644 --- a/test/sim/team-validator/events.js +++ b/test/sim/team-validator/events.js @@ -181,4 +181,18 @@ describe('Team Validator', () => { ]; assert.legalTeam(team, 'gen4anythinggoes'); }); + + it(`should allow Hall of Origin Arceus with Full Arceus Clause`, () => { + let team = [ + { species: 'arceus', level: 80, ability: 'multitype', moves: ['judgment'], evs: { hp: 1 } }, + ]; + assert.false.legalTeam(team, 'gen4anythinggoes'); + assert.false.legalTeam(team, 'gen4anythinggoes@@@fullarceusclause'); + + team = [ + { species: 'arceus', level: 100, ability: 'multitype', moves: ['judgment'], evs: { hp: 1 } }, + ]; + assert.false.legalTeam(team, 'gen4anythinggoes'); + assert.legalTeam(team, 'gen4anythinggoes@@@fullarceusclause'); + }); }); From c55e84f7cbc4fbcebaff604f58323e164073af47 Mon Sep 17 00:00:00 2001 From: iforgetwhyimhere Date: Wed, 11 Feb 2026 17:22:56 -0500 Subject: [PATCH 109/139] Add randffats command help (#11759) --- server/chat-plugins/randombattles/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/server/chat-plugins/randombattles/index.ts b/server/chat-plugins/randombattles/index.ts index 2929d17d08..17a5bb7a11 100644 --- a/server/chat-plugins/randombattles/index.ts +++ b/server/chat-plugins/randombattles/index.ts @@ -609,6 +609,7 @@ export const commands: Chat.ChatCommands = { randombattleshelp: [ `/randombattles OR /randbats [pokemon], [gen] - Displays a Pok\u00e9mon's Random Battle Moves. Defaults to Gen 9. If used in a battle, defaults to the gen of that battle.`, `/randomdoublesbattle OR /randdubs [pokemon], [gen] - Same as above, but instead displays Random Doubles Battle moves.`, + '/randffats [pokemon] - (Gen 9 only) Shows the potential moves for a Pok\u00e9mon in Free-For-All Random Battle.', ], '1v1factory': 'battlefactory', From 32f8ffecaa2e78bf0f8a4066a122bffdcd37c6b2 Mon Sep 17 00:00:00 2001 From: VannAccessible Date: Fri, 13 Feb 2026 08:53:14 -0800 Subject: [PATCH 110/139] Flipped: Fix ruleset (#11758) Unban Zamazenta and ban Sleep Moves in Flipped. Council vote here: https://www.smogon.com/forums/threads/flipped-other-metagame-of-the-month.3711301/page-3#post-10868527 --- config/formats.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index da4b926419..e252e1cb82 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -484,13 +484,13 @@ export const Formats: import('../sim/dex-formats').FormatList = [ name: "[Gen 9] Flipped", desc: `All Pokémon have their base stats flipped. For example, Sylveon's HP and Speed stats, Attack and Special Defense stats, and Defense and Special Attack stats swap.`, mod: 'gen9', - ruleset: ['Standard OMs', 'Sleep Clause Mod', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], + ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], banlist: [ 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dialga-Origin', 'Espathra', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned', - 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', + 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', ], }, From 84df91ed1007d12377f2acb7f3af7658ea4547e3 Mon Sep 17 00:00:00 2001 From: iforgetwhyimhere Date: Fri, 13 Feb 2026 11:53:37 -0500 Subject: [PATCH 111/139] Six By Six: Remove Gunk Rock (#11761) --- data/random-battles/sixbysix/random-sets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/random-battles/sixbysix/random-sets.json b/data/random-battles/sixbysix/random-sets.json index fe3959a1d6..d51c73e78e 100644 --- a/data/random-battles/sixbysix/random-sets.json +++ b/data/random-battles/sixbysix/random-sets.json @@ -139,7 +139,7 @@ }, { "role": "Wallbreaker", - "movepool": ["Accelerock", "Earthquake", "Gunk Rock", "Stone Edge"], + "movepool": ["Accelerock", "Earthquake", "Gunk Shot", "Stone Edge"], "abilities": ["Earth Eater"] } ] @@ -555,3 +555,4 @@ ] } } + From 2ad682ce28a743fc6c5510272f6438142c6abace Mon Sep 17 00:00:00 2001 From: Runo <105902454+Runoisch@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:53:48 -0500 Subject: [PATCH 112/139] NatDex RU: Ban Sharpedo-Mega (#11763) https://www.smogon.com/forums/threads/national-dex-ru-metagame-discussion.3713801/post-10871103 --- data/formats-data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/formats-data.ts b/data/formats-data.ts index a7e8263fff..33b82acae1 100644 --- a/data/formats-data.ts +++ b/data/formats-data.ts @@ -2096,7 +2096,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = sharpedomega: { isNonstandard: "Past", tier: "Illegal", - natDexTier: "RU", + natDexTier: "RUBL", }, wailmer: { isNonstandard: "Past", From ae43883ed1d232f0a125f070d19a9e3f3cbd3a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Fri, 13 Feb 2026 16:54:22 +0000 Subject: [PATCH 113/139] Legends Z-A OU: January tier shifts (#11756) --- data/mods/gen9legendsou/formats-data.ts | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/data/mods/gen9legendsou/formats-data.ts b/data/mods/gen9legendsou/formats-data.ts index f2fe733967..77d8d85a8a 100644 --- a/data/mods/gen9legendsou/formats-data.ts +++ b/data/mods/gen9legendsou/formats-data.ts @@ -90,7 +90,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, clefablemega: { - tier: "(OU)", + tier: "OU", }, igglybuff: { tier: "LC", @@ -366,7 +366,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, slowking: { - tier: "UU", + tier: "OU", }, slowkinggalar: { tier: "OU", @@ -600,7 +600,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, absolmegaz: { - tier: "OU", + tier: "UU", }, snorunt: { tier: "LC", @@ -717,13 +717,13 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "Uber", }, lucariomegaz: { - tier: "OU", + tier: "UU", }, hippopotas: { tier: "LC", }, hippowdon: { - tier: "UU", + tier: "OU", }, snover: { tier: "LC", @@ -774,7 +774,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, heatranmega: { - tier: "OU", + tier: "(OU)", }, darkrai: { tier: "OU", @@ -999,7 +999,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, chesnaughtmega: { - tier: "UU", + tier: "OU", }, fennekin: { tier: "LC", @@ -1041,7 +1041,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "NFE", }, talonflame: { - tier: "OU", + tier: "UU", }, scatterbug: { tier: "LC", @@ -1101,16 +1101,16 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, meowstic: { - tier: "OU", + tier: "UU", }, meowsticf: { - tier: "OU", + tier: "UU", }, meowsticmmega: { - tier: "(OU)", + tier: "UU", }, meowsticfmega: { - tier: "(OU)", + tier: "UU", }, honedge: { tier: "LC", @@ -1295,7 +1295,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, volcanion: { - tier: "OU", + tier: "UU", }, crabrawler: { tier: "LC", @@ -1313,7 +1313,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, golisopodmega: { - tier: "OU", + tier: "UU", }, sandygast: { tier: "LC", @@ -1349,7 +1349,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, zeraoramega: { - tier: "OU", + tier: "(OU)", }, meltan: { tier: "UU", From 7a55285dd16846639560b348e68b57256f34ed3e Mon Sep 17 00:00:00 2001 From: TurboRx <187360786+TurboRx@users.noreply.github.com> Date: Fri, 13 Feb 2026 22:27:20 +0530 Subject: [PATCH 114/139] Fix Stomping Tantrum incorrectly doubling after canceled two-turn moves (#11760) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix stomping tantrum not doubling when fly is canceled by smack down * Update sim/battle-actions.ts Co-authored-by: André Bastos Dias <80102738+andrebastosdias@users.noreply.github.com> --------- Co-authored-by: TurboRx Co-authored-by: André Bastos Dias <80102738+andrebastosdias@users.noreply.github.com> --- sim/battle-actions.ts | 9 ++++++--- test/sim/moves/stompingtantrum.js | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sim/battle-actions.ts b/sim/battle-actions.ts index b87cf131b0..9df9dceb52 100644 --- a/sim/battle-actions.ts +++ b/sim/battle-actions.ts @@ -485,10 +485,13 @@ export class BattleActions { } } - if (!this.battle.singleEvent('TryMove', move, null, pokemon, target, move) || - !this.battle.runEvent('TryMove', pokemon, target, move)) { + let tryMoveResult = this.battle.singleEvent('TryMove', move, null, pokemon, target, move); + if (tryMoveResult) { + tryMoveResult = this.battle.runEvent('TryMove', pokemon, target, move); + } + if (!tryMoveResult) { move.mindBlownRecoil = false; - return false; + return tryMoveResult; } this.battle.singleEvent('UseMoveMessage', move, null, pokemon, target, move); diff --git a/test/sim/moves/stompingtantrum.js b/test/sim/moves/stompingtantrum.js index d4fe8a0708..1f699bc0e9 100644 --- a/test/sim/moves/stompingtantrum.js +++ b/test/sim/moves/stompingtantrum.js @@ -90,7 +90,7 @@ describe('Stomping Tantrum', () => { battle.makeChoices('move stompingtantrum', 'auto'); }); - it.skip(`should not double its Base Power if the user dropped mid-Fly due to Smack Down`, () => { + it(`should not double its Base Power if the user dropped mid-Fly due to Smack Down`, () => { battle = common.createBattle([[ { species: 'Magikarp', moves: ['fly', 'stompingtantrum'] }, ], [ From c448db86927af71b415d5768d33400e14a3f3362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Fri, 13 Feb 2026 16:57:41 +0000 Subject: [PATCH 115/139] Deduct PP from Gen 3 and Gen 4 Pursuit (#11753) --- data/mods/gen4/moves.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index 1e5db1ae5e..1acc40facf 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -1367,6 +1367,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { } } const move = this.dex.getActiveMove('pursuit'); + source.deductPP(move.id); source.moveUsed(move, pokemon.position); if (this.actions.useMove(move, source, { target: pokemon }) && source.getItem().isChoice) { source.addVolatile('choicelock'); From a7f286ee0d12eee35702b4e8ce6c373b9609653c Mon Sep 17 00:00:00 2001 From: iforgetwhyimhere Date: Sat, 14 Feb 2026 22:09:56 -0500 Subject: [PATCH 116/139] Add "Same Letter Clause" (#11767) * Add "Same Letter Rule" * cleanup * indentation * ^ Co-authored-by: Slayer95 * change slc desc * clarify rejection message --------- Co-authored-by: Slayer95 --- data/rulesets.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/data/rulesets.ts b/data/rulesets.ts index d3a7cfb690..08f6a9583d 100644 --- a/data/rulesets.ts +++ b/data/rulesets.ts @@ -1559,6 +1559,28 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = { } }, }, + sameletterclause: { + effectType: 'ValidatorRule', + name: 'Same Letter Clause', + desc: "Forces all Pokémon species on a team to start with the same letter", + onValidateTeam(team) { + let requiredLetter: string | null = null; + for (const set of team) { + const species = this.dex.species.get(set.species); + const match = /^[A-Za-z]/.exec(species.name); + if (!match) { + return [`${species.name} cannot be used, as its name does not begin with a valid English letter.`]; + } + const firstLetter = match[0].toUpperCase(); + if (!requiredLetter) { + requiredLetter = firstLetter; + } else if (firstLetter !== requiredLetter) { + return [ + `All Pokémon must belong to species starting with the same letter (currently: ${requiredLetter}); ${species.name} starts with ${firstLetter}.`]; + } + } + }, + }, megarayquazaclause: { effectType: 'Rule', name: 'Mega Rayquaza Clause', From 6b5cf272d62e0c572ede0c339f979bc614077e7f Mon Sep 17 00:00:00 2001 From: demir Date: Sun, 15 Feb 2026 06:10:18 +0300 Subject: [PATCH 117/139] Sleep Moves Clause (#11766) --- config/formats.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index e252e1cb82..7f252456ef 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3161,7 +3161,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ searchShow: false, ruleset: [ 'Standard NatDex', - '!Species Clause', 'Forme Clause', 'Terastal Clause', 'DryPass Clause', 'Mega Rayquaza Clause', + '!Species Clause', 'Forme Clause', '!Sleep Clause Mod', 'Sleep Moves Clause', 'Terastal Clause', 'DryPass Clause', 'Mega Rayquaza Clause', ], banlist: [ 'ND Uber', 'ND AG', 'ND OU', 'ND UUBL', 'ND UU', 'ND RUBL', 'ND RU', 'ND NFE', 'ND LC', @@ -3172,7 +3172,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Articuno-Galar', 'Aurorus', 'Bellossom', 'Bewear', 'Blastoise-Base', 'Dodrio', 'Entei', 'Falinks-Base', 'Flygon', 'Furret', 'Goodra-Hisui', 'Gumshoos-Base', 'Heliolisk', 'Hydrapple', 'Indeedee-F', 'Iron Thorns', 'Leavanny', 'Lickilicky', 'Ludicolo', 'Maractus', 'Meganium-Base', 'Polteageist', 'Probopass', 'Regieleki', 'Rhyperior', 'Seismitoad', 'Shiinotic', 'Slaking', 'Spidops', 'Spiritomb', 'Unfezant', 'Vanilluxe', - 'Victreebel-Base', 'Weezing-Galar', 'Wyrdeer', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', + 'Victreebel-Base', 'Weezing-Galar', 'Wyrdeer', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', 'Yawn', ], // Stupid hardcode onValidateSet(set, format, setHas, teamHas) { From 686819e5e19f8a7fd2345cfc5a08a5085efa2cc3 Mon Sep 17 00:00:00 2001 From: VannAccessible Date: Sat, 14 Feb 2026 19:10:47 -0800 Subject: [PATCH 118/139] Flipped: Ban Annihilape (#11765) * Add Annihilape to the banlist in formats.ts For Flipped. Vote: https://www.smogon.com/forums/threads/flipped-other-metagame-of-the-month.3711301/page-3#post-10871384 Ty! * Update formats.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 7f252456ef..5db5d77f56 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -486,11 +486,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen9', ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], banlist: [ - 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', - 'Dialga', 'Dialga-Origin', 'Espathra', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', 'Kyurem-Black', - 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', - 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', 'Zacian-Crowned', - 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', + 'Annihilape', 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', + 'Deoxys-Speed', 'Dialga', 'Dialga-Origin', 'Espathra', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', + 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', + 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', + 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', ], }, From 9cfe6c1333e1cc17d5e5015468e0e8d58ff89297 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Tue, 17 Feb 2026 17:11:39 -0700 Subject: [PATCH 119/139] NatDex: Move Zamazenta-C to OU for suspect --- data/formats-data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/formats-data.ts b/data/formats-data.ts index 33b82acae1..ddaaefa03f 100644 --- a/data/formats-data.ts +++ b/data/formats-data.ts @@ -5209,7 +5209,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = zamazentacrowned: { tier: "Uber", doublesTier: "DUber", - natDexTier: "Uber", + natDexTier: "OU", }, eternatus: { tier: "Uber", From a66fecae31ead345c50e295870560cc1168c6f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Wed, 18 Feb 2026 01:33:31 +0000 Subject: [PATCH 120/139] Add Knock Off + Poison Touch + Lum Berry test (#11769) --- test/sim/items/lumberry.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/sim/items/lumberry.js b/test/sim/items/lumberry.js index 4cca997639..d48c4a0b3a 100644 --- a/test/sim/items/lumberry.js +++ b/test/sim/items/lumberry.js @@ -39,6 +39,18 @@ describe('Lum Berry', () => { assert(attacker.volatiles['confusion']); }); + it('should cure Poison from Poison Touch before being knocked off', () => { + battle = common.createBattle({ forceRandomChance: true }, [[ + { species: 'Wynaut', ability: 'poisontouch', moves: ['knockoff'] }, + ], [ + { species: 'Shuckle', item: 'lumberry', moves: ['sleeptalk'] }, + ]]); + battle.makeChoices(); + assert(battle.getDebugLog().includes('|-status|p2a: Shuckle|psn|[from] ability: Poison Touch')); + assert.equal(battle.p2.active[0].status, ''); + assert.false.holdsItem(battle.p2.active[0]); + }); + it('should cure Poison and confusion after Poison Puppeteer activation', () => { battle = common.createBattle(); battle.setPlayer('p1', { team: [{ species: 'Charizard', item: 'lumberry', moves: ['sleeptalk'] }] }); From 42f591a3303a4f0bff805e082e0be6451128c333 Mon Sep 17 00:00:00 2001 From: dot-Comfey <84290266+dot-Comfey@users.noreply.github.com> Date: Tue, 17 Feb 2026 17:33:57 -0800 Subject: [PATCH 121/139] Remove hardcoding of formes inheriting learnsets (#11750) * Remove hardcoding of formes inheriting learnsets * Fix learnset inheritance * Update learnsets.ts --- data/learnsets.ts | 406 +++++++++++++++++++++++++++++++++++++----- sim/dex-species.ts | 4 +- sim/team-validator.ts | 8 +- 3 files changed, 368 insertions(+), 50 deletions(-) diff --git a/data/learnsets.ts b/data/learnsets.ts index 5ae0ca4a50..f5f778f2d6 100644 --- a/data/learnsets.ts +++ b/data/learnsets.ts @@ -49734,12 +49734,85 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { }, gastrodoneast: { learnset: { - earthpower: ["9S3", "9S2", "8S1", "8S0"], - icebeam: ["9S2", "8S1", "8S0"], - icywind: ["9S3"], - protect: ["9S3", "9S2", "8S1", "8S0"], - surf: ["8S0"], - yawn: ["9S3", "9S2", "8S1"], + amnesia: ["9M", "8M"], + ancientpower: ["9L20", "8L20", "4T"], + attract: ["8M", "7M", "6M", "5M", "4M"], + blizzard: ["9M", "8M", "7M", "6M", "5M", "4M"], + block: ["7T", "6T", "5T", "4T"], + bodyslam: ["9M", "9L25", "8M", "8L25", "7L29", "6L29", "5L29", "4L29"], + brine: ["8M", "4M"], + bulldoze: ["9M", "8M", "7M", "6M", "5M"], + captivate: ["4M"], + chillingwater: ["9M"], + confide: ["7M", "6M"], + curse: ["9M"], + dig: ["9M", "8M", "6M", "5M", "4M"], + dive: ["8M", "6M", "5M", "4T"], + doubleteam: ["7M", "6M", "5M", "4M"], + earthpower: ["9M", "9L39", "9S2", "9S3", "8M", "8L39", "8S0", "8S1", "7T", "6T", "5T", "4T"], + earthquake: ["9M", "8M", "7M", "6M", "5M", "4M"], + endure: ["9M", "8M", "4M"], + facade: ["9M", "8M", "7M", "6M", "5M", "4M"], + flash: ["6M", "5M", "4M"], + frustration: ["7M", "6M", "5M", "4M"], + gigaimpact: ["9M", "8M", "7M", "6M", "5M", "4M"], + hail: ["8M", "7M", "6M", "5M", "4M"], + harden: ["9L1", "8L1", "7L1", "6L1", "5L1", "4L1"], + headbutt: ["4T"], + helpinghand: ["9M"], + hiddenpower: ["7M", "7L16", "6M", "6L16", "5M", "5L16", "4M", "4L16"], + hydropump: ["9M", "8M"], + hyperbeam: ["9M", "8M", "7M", "6M", "5M", "4M"], + icebeam: ["9M", "9S2", "8M", "8S0", "8S1", "7M", "6M", "5M", "4M"], + icywind: ["9M", "9S3", "8M", "7T", "6T", "5T", "4T"], + infestation: ["7M", "6M"], + liquidation: ["9M"], + memento: ["9L53", "8L53"], + mudbomb: ["7L11", "6L11", "5L11", "4L11"], + muddywater: ["9M", "9L33", "8M", "8L33", "7L41", "6L41", "5L41", "4L41"], + mudshot: ["9M", "8M"], + mudslap: ["9M", "9L1", "8L1", "7L1", "6L1", "5L1", "4T", "4L1"], + mudsport: ["7L1", "6L1", "5L1", "4L1"], + naturalgift: ["4M"], + painsplit: ["9M", "7T", "6T", "5T", "4T"], + protect: ["9M", "9S2", "9S3", "8M", "8S0", "8S1", "7M", "6M", "5M", "4M"], + raindance: ["9M", "9L46", "8M", "8L46", "7M", "7L22", "6M", "6L22", "5M", "5L22", "4M", "4L22"], + recover: ["9L1", "8L1", "7L54", "6L54", "5L54", "4L54"], + rest: ["9M", "8M", "7M", "6M", "5M", "4M"], + return: ["7M", "6M", "5M", "4M"], + rockblast: ["9M"], + rockslide: ["9M", "8M", "7M", "6M", "5M", "4M"], + rocksmash: ["6M", "5M", "4M"], + rocktomb: ["9M", "8M", "7M", "6M", "5M", "4M"], + round: ["8M", "7M", "6M", "5M"], + sandstorm: ["9M", "8M", "7M", "6M", "5M", "4M"], + sandtomb: ["9M", "8M"], + scald: ["8M", "7M", "6M", "5M"], + secretpower: ["6M", "4M"], + skittersmack: ["9M", "8T"], + sleeptalk: ["9M", "8M", "7M", "6M", "5T", "4M"], + sludgebomb: ["9M", "8M", "7M", "6M", "5M", "4M"], + sludgewave: ["9M", "8M", "7M", "6M", "5M"], + snore: ["8M", "7T", "6T", "5T", "4T"], + snowscape: ["9M"], + spikes: ["9M"], + stealthrock: ["9M"], + stompingtantrum: ["9M", "8M", "7T"], + stoneedge: ["9M", "8M", "7M", "6M", "5M", "4M"], + strength: ["6M", "5M", "4M"], + stringshot: ["4T"], + substitute: ["9M", "8M", "7M", "6M", "5M", "4M"], + surf: ["9M", "8M", "8S0", "7M", "6M", "5M", "4M"], + swagger: ["7M", "6M", "5M", "4M"], + takedown: ["9M"], + terablast: ["9M"], + toxic: ["7M", "6M", "5M", "4M"], + waterfall: ["9M", "8M", "7M", "6M", "5M", "4M"], + watergun: ["9L1", "8L1"], + waterpulse: ["9M", "9L15", "8L15", "7T", "7L1", "6T", "6L1", "5L1", "4M", "4L1"], + weatherball: ["9M", "8M"], + whirlpool: ["9M", "8M", "4M"], + yawn: ["9S2", "9S3", "8S1"], }, eventData: [ {generation: 8, level: 50, gender: "F", nature: "Quiet", abilities: ["stormdrain"], ivs: {hp: 31, atk: 2, def: 31, spa: 31, spd: 31, spe: 0}, moves: ["protect", "surf", "icebeam", "earthpower"], pokeball: "cherishball"}, @@ -72942,10 +73015,79 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { }, pumpkaboosuper: { learnset: { - astonish: ["6S0"], - scaryface: ["6S0"], - shadowsneak: ["6S0"], - trickortreat: ["6S0"], + allyswitch: ["8M", "7T"], + astonish: ["8L1", "7L1", "6L1", "6S0"], + attract: ["8M", "7M", "6M"], + bestow: ["7E", "6E"], + bulletseed: ["8M", "8L20", "7L26", "6L26"], + chargebeam: ["7M", "6M"], + confide: ["7M", "6M"], + confuseray: ["8L8", "7L1", "6L1"], + curse: ["8E", "7E"], + darkpulse: ["8M", "7M", "6M"], + destinybond: ["8E", "7E", "6E"], + disable: ["8E", "7E", "6E"], + doubleteam: ["7M", "6M"], + dreameater: ["7M", "6M"], + endure: ["8M"], + energyball: ["8M", "7M", "6M"], + explosion: ["7M", "6M"], + facade: ["8M", "7M", "6M"], + fireblast: ["8M", "7M", "6M"], + flamecharge: ["7M", "6M"], + flamethrower: ["8M", "7M", "6M"], + flash: ["6M"], + foulplay: ["8M", "7T", "6T"], + frustration: ["7M", "6M"], + gigadrain: ["8M", "7T", "6T"], + grassknot: ["8M", "7M", "6M"], + grassyglide: ["8T"], + gyroball: ["8M", "7M", "6M"], + hex: ["8M"], + hiddenpower: ["7M", "6M"], + imprison: ["8M"], + incinerate: ["6M"], + leechseed: ["8L16", "7L20", "6L20"], + lightscreen: ["8M", "7M", "6M"], + magiccoat: ["7T", "6T"], + mysticalfire: ["8M"], + naturepower: ["7M", "6M"], + painsplit: ["8L44", "7T", "7L42", "6T", "6L42"], + poltergeist: ["8T"], + protect: ["8M", "7M", "6M"], + psychic: ["8M", "7M", "6M"], + razorleaf: ["8L12", "7L16", "6L16"], + rest: ["8M", "7M", "6M"], + return: ["7M", "6M"], + rockslide: ["8M", "7M", "6M"], + rocksmash: ["6M"], + roleplay: ["7T", "6T"], + round: ["8M", "7M", "6M"], + safeguard: ["8M", "7M", "6M"], + scaryface: ["8M", "8L24", "7L4", "6L4", "6S0"], + secretpower: ["6M"], + seedbomb: ["8M", "8L32", "7T", "7L48", "6T", "6L48"], + shadowball: ["8M", "8L36", "7M", "7L36", "6M", "6L36"], + shadowsneak: ["8L4", "7L30", "6L30", "6S0"], + skillswap: ["8M", "7T", "6T"], + skittersmack: ["8T"], + sleeptalk: ["8M", "7M", "6M"], + sludgebomb: ["8M", "7M", "6M"], + snore: ["8M"], + solarbeam: ["8M", "7M", "6M"], + spite: ["7T", "6T"], + substitute: ["8M", "7M", "6M"], + sunnyday: ["8M", "7M", "6M"], + swagger: ["7M", "6M"], + synthesis: ["7T", "6T"], + telekinesis: ["7T"], + thief: ["8M", "7M", "6M"], + toxic: ["7M", "6M"], + trick: ["8M", "8L40", "7T", "7L1", "6T", "6L1"], + trickortreat: ["8L1", "7L23", "6L6", "6S0"], + trickroom: ["8M", "7M", "6M"], + willowisp: ["8M", "7M", "6M"], + worryseed: ["8L28", "7T", "7L11", "6T", "6L11"], }, eventData: [ {generation: 6, level: 50, moves: ["trickortreat", "astonish", "scaryface", "shadowsneak"], pokeball: "cherishball"}, @@ -73032,6 +73174,87 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { worryseed: ["8L28", "7T", "7L11", "6T", "6L11"], }, }, + gourgeistsuper: { + learnset: { + allyswitch: ["8M", "7T"], + astonish: ["8L1", "7L1", "6L1"], + attract: ["8M", "7M", "6M"], + brutalswing: ["8M"], + bulletseed: ["8M", "8L20", "7L26", "6L26"], + chargebeam: ["7M", "6M"], + confide: ["7M", "6M"], + confuseray: ["8L1", "7L1", "6L1"], + darkpulse: ["8M", "7M", "6M"], + doubleteam: ["7M", "6M"], + dreameater: ["7M", "6M"], + endure: ["8M"], + energyball: ["8M", "7M", "6M"], + explosion: ["8L1", "7M", "7L1", "6M", "6L1"], + facade: ["8M", "7M", "6M"], + fireblast: ["8M", "7M", "6M"], + flamecharge: ["7M", "6M"], + flamethrower: ["8M", "7M", "6M"], + flash: ["6M"], + focusblast: ["8M", "7M", "6M"], + foulplay: ["8M", "7T", "6T"], + frustration: ["7M", "6M"], + gigadrain: ["8M", "7T", "6T"], + gigaimpact: ["8M", "7M", "6M"], + grassknot: ["8M", "7M", "6M"], + grassyglide: ["8T"], + gyroball: ["8M", "7M", "6M"], + hex: ["8M"], + hiddenpower: ["7M", "6M"], + hyperbeam: ["8M", "7M", "6M"], + imprison: ["8M"], + incinerate: ["6M"], + leechseed: ["8L16", "7L20", "6L20"], + lightscreen: ["8M", "7M", "6M"], + magiccoat: ["7T", "6T"], + moonblast: ["8L1"], + mysticalfire: ["8M"], + nastyplot: ["8M"], + naturepower: ["7M", "6M"], + painsplit: ["8L44", "7T", "7L42", "6T", "6L42"], + phantomforce: ["8M", "8L48", "7L1", "6L1"], + poltergeist: ["8T"], + powerwhip: ["8M"], + protect: ["8M", "7M", "6M"], + psychic: ["8M", "7M", "6M"], + razorleaf: ["8L12", "7L16", "6L16"], + rest: ["8M", "7M", "6M"], + return: ["7M", "6M"], + rockslide: ["8M", "7M", "6M"], + rocksmash: ["6M"], + roleplay: ["7T", "6T"], + round: ["8M", "7M", "6M"], + safeguard: ["8M", "7M", "6M"], + scaryface: ["8M", "8L24", "7L1", "6L4"], + secretpower: ["6M"], + seedbomb: ["8M", "8L32", "7T", "7L48", "6T", "6L48"], + shadowball: ["8M", "8L36", "7M", "7L36", "6M", "6L36"], + shadowsneak: ["8L1", "7L30", "6L30"], + skillswap: ["8M", "7T", "6T"], + skittersmack: ["8T"], + sleeptalk: ["8M", "7M", "6M"], + sludgebomb: ["8M", "7M", "6M"], + snore: ["8M"], + solarbeam: ["8M", "7M", "6M"], + spite: ["7T", "6T"], + substitute: ["8M", "7M", "6M"], + sunnyday: ["8M", "7M", "6M"], + swagger: ["7M", "6M"], + synthesis: ["7T", "6T"], + telekinesis: ["7T"], + thief: ["8M", "7M", "6M"], + toxic: ["7M", "6M"], + trick: ["8M", "8L40", "7T", "7L1", "6T", "6L1"], + trickortreat: ["8L1", "7L23", "6L6"], + trickroom: ["8M", "7M", "6M"], + willowisp: ["8M", "7M", "6M"], + worryseed: ["8L28", "7T", "7L11", "6T", "6L11"], + }, + }, bergmite: { learnset: { afteryou: ["7T", "6T"], @@ -84110,49 +84333,53 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { }, sinisteaantique: { learnset: { - allyswitch: ["9E"], - aromatherapy: ["8S0"], - aromaticmist: ["9L6"], - astonish: ["9L1"], - batonpass: ["9M"], + allyswitch: ["9E", "8M"], + aromatherapy: ["8L30", "8S0"], + aromaticmist: ["9L6", "8L6"], + astonish: ["9L1", "8L1"], + batonpass: ["9M", "8M"], calmmind: ["9M"], celebrate: ["8S0"], confuseray: ["9M"], curse: ["9M"], - darkpulse: ["9M"], - endure: ["9M"], - facade: ["9M"], - foulplay: ["9M"], - gigadrain: ["9M", "9L36"], - hex: ["9M"], - imprison: ["9M"], + darkpulse: ["9M", "8M"], + endure: ["9M", "8M"], + facade: ["9M", "8M"], + foulplay: ["9M", "8M"], + gigadrain: ["9M", "9L36", "8M", "8L36"], + hex: ["9M", "8M"], + imprison: ["9M", "8M"], magicalleaf: ["9M"], - megadrain: ["9L12"], - memento: ["9L54", "8S0"], - metronome: ["9M", "8S0"], - nastyplot: ["9M", "9L42"], + megadrain: ["9L12", "8L12"], + memento: ["9L54", "8L54", "8S0"], + metronome: ["9M", "8M", "8S0"], + nastyplot: ["9M", "9L42", "8M", "8L42"], nightshade: ["9M"], - phantomforce: ["9M"], - poltergeist: ["9M"], - protect: ["9M"], + payback: ["8M"], + phantomforce: ["9M", "8M"], + poltergeist: ["9M", "8T"], + protect: ["9M", "8M", "8L18"], psybeam: ["9M"], - psychic: ["9M"], - psyshock: ["9M"], - rest: ["9M"], - shadowball: ["9M", "9L48"], - shellsmash: ["9L60"], + psychic: ["9M", "8M"], + psyshock: ["9M", "8M"], + rest: ["9M", "8M"], + round: ["8M"], + shadowball: ["9M", "9L48", "8M", "8L48"], + shellsmash: ["9L60", "8L60"], skillswap: ["9M"], - sleeptalk: ["9M"], + sleeptalk: ["9M", "8M"], + snore: ["8M"], spite: ["9M"], - storedpower: ["9M"], - substitute: ["9M"], - suckerpunch: ["9L24"], + storedpower: ["9M", "8M"], + substitute: ["9M", "8M"], + suckerpunch: ["9L24", "8L24"], sweetscent: ["9L30"], terablast: ["9M"], - trick: ["9M"], + trick: ["9M", "8M"], trickroom: ["9M"], - willowisp: ["9M"], - withdraw: ["9L1"], + willowisp: ["9M", "8M"], + withdraw: ["9L1", "8L1"], + wonderroom: ["8M"], }, eventData: [ {generation: 8, level: 50, isHidden: true, moves: ["memento", "metronome", "aromatherapy", "celebrate"], pokeball: "cherishball"}, @@ -84216,6 +84443,64 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { wonderroom: ["8M"], }, }, + polteageistantique: { + learnset: { + allyswitch: ["8M"], + aromatherapy: ["8L30"], + aromaticmist: ["9L1", "8L1"], + astonish: ["9L1", "8L1"], + batonpass: ["9M", "8M"], + calmmind: ["9M"], + confuseray: ["9M"], + curse: ["9M", "9L66", "8L66"], + darkpulse: ["9M", "8M"], + endure: ["9M", "8M"], + facade: ["9M", "8M"], + foulplay: ["9M", "8M"], + gigadrain: ["9M", "9L36", "8M", "8L36"], + gigaimpact: ["9M", "8M"], + hex: ["9M", "8M"], + hyperbeam: ["9M", "8M"], + imprison: ["9M", "8M"], + lightscreen: ["9M", "8M"], + magicalleaf: ["9M"], + megadrain: ["9L1", "8L1"], + memento: ["9L54", "8L54"], + metronome: ["9M", "8M"], + nastyplot: ["9M", "9L42", "8M", "8L42"], + nightshade: ["9M"], + painsplit: ["9M"], + payback: ["8M"], + phantomforce: ["9M", "8M"], + poltergeist: ["9M", "8T"], + protect: ["9M", "9L18", "8M", "8L18"], + psybeam: ["9M"], + psychic: ["9M", "8M"], + psyshock: ["9M", "8M"], + reflect: ["9M", "8M"], + rest: ["9M", "8M"], + round: ["8M"], + selfdestruct: ["8M"], + shadowball: ["9M", "9L48", "8M", "8L48"], + shellsmash: ["9L60", "8L60"], + skillswap: ["9M"], + sleeptalk: ["9M", "8M"], + snore: ["8M"], + spite: ["9M"], + storedpower: ["9M", "8M"], + strengthsap: ["9L1", "8L1"], + substitute: ["9M", "8M"], + suckerpunch: ["9L24", "8L24"], + sweetscent: ["9L30"], + teatime: ["9L0", "8L0"], + terablast: ["9M"], + trick: ["9M", "8M"], + trickroom: ["9M"], + willowisp: ["9M", "8M"], + withdraw: ["9L1", "8L1"], + wonderroom: ["8M"], + }, + }, hatenna: { learnset: { afteryou: ["9E", "8E"], @@ -89475,10 +89760,43 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = { }, tatsugiristretchy: { learnset: { + batonpass: ["9M", "9E"], celebrate: ["9S0"], - dracometeor: ["9S0"], - helpinghand: ["9S0"], - muddywater: ["9S0"], + chillingwater: ["9M"], + counter: ["9E"], + dracometeor: ["9M", "9S0"], + dragoncheer: ["9M"], + dragondance: ["9M"], + dragonpulse: ["9M", "9L52"], + endure: ["9M"], + facade: ["9M"], + gigaimpact: ["9M"], + harden: ["9L6"], + helpinghand: ["9M", "9L12", "9S0"], + hydropump: ["9M"], + hyperbeam: ["9M"], + icywind: ["9M"], + lunge: ["9M"], + memento: ["9L34"], + mirrorcoat: ["9L47"], + muddywater: ["9M", "9L39", "9S0"], + nastyplot: ["9M", "9L43"], + outrage: ["9M"], + protect: ["9M"], + raindance: ["9M"], + rapidspin: ["9E"], + rest: ["9M"], + sleeptalk: ["9M"], + soak: ["9L23"], + splash: ["9L1"], + substitute: ["9M"], + surf: ["9M"], + takedown: ["9M"], + taunt: ["9M", "9L28"], + terablast: ["9M"], + watergun: ["9L1"], + waterpulse: ["9M", "9L17"], + whirlpool: ["9M"], }, eventData: [ {generation: 9, level: 50, moves: ["dracometeor", "muddywater", "helpinghand", "celebrate"], pokeball: "cherishball"}, diff --git a/sim/dex-species.ts b/sim/dex-species.ts index 4a05d4ca0c..7785fcb115 100644 --- a/sim/dex-species.ts +++ b/sim/dex-species.ts @@ -742,8 +742,8 @@ export class DexSpecies { // different learnsets. To prevent a leak, we make them show up as their // base forme, but hardcode their learnsets into Rockruff-Dusk and // Greninja-Ash - if (['Gastrodon', 'Pumpkaboo', 'Sinistea', 'Tatsugiri'].includes(species.baseSpecies) && species.forme) { - return this.get(species.baseSpecies); + if (!this.getLearnsetData(species.id).learnset && species.forme) { + return this.get(species.changesFrom || species.baseSpecies); } else if (species.prevo) { // there used to be a check for Hidden Ability here, but apparently it's unnecessary // Shed Skin Pupitar can definitely evolve into Unnerve Tyranitar diff --git a/sim/team-validator.ts b/sim/team-validator.ts index 58d68c1c95..c1ee6cf1a8 100644 --- a/sim/team-validator.ts +++ b/sim/team-validator.ts @@ -2351,10 +2351,10 @@ export class TeamValidator { if (dex.gen < 8 || this.format.mod === 'gen8dlc1') return null; if (!pokemonGoData) { // Handles forms and evolutions not obtainable from Pokemon GO - const otherSpecies = this.dex.species.learnsetParent(species); + const otherSpecies = this.dex.species.get(species.changesFrom || species.prevo); // If a Pokemon is somehow not obtainable from Pokemon GO and it must be leveled up to be evolved, // validation for the game should stop because it's more optimal to get the Pokemon outside of the game - if (otherSpecies && !species.evoLevel) { + if (otherSpecies.name && !species.evoLevel) { const otherProblems = this.validatePokemonGo(otherSpecies, set, setSources, name); if (otherProblems) { problems = otherProblems; @@ -2861,7 +2861,7 @@ export class TeamValidator { if (!dex.species.getLearnsetData(nextSpecies.id).learnset) { nextSpecies = dex.species.get(nextSpecies.changesFrom || nextSpecies.baseSpecies); } - while (nextSpecies) { + while (nextSpecies.name) { for (let gen = nextSpecies.gen; gen <= dex.gen; gen++) { /** * Case 1: The species can learn the move - allow moves of the species from all gens @@ -2880,7 +2880,7 @@ export class TeamValidator { } } if (canLearnSpecies.includes(nextSpecies.id)) speciesCount++; - nextSpecies = dex.species.learnsetParent(nextSpecies); + nextSpecies = dex.species.get(nextSpecies.prevo); } } From f4889cac746787fb8156278722302220e45b0076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Wed, 18 Feb 2026 01:34:52 +0000 Subject: [PATCH 122/139] Implement Zacian and Zamazenta transformations as species conditions (#11748) * Implement Zacian and Zamazenta transformations as species conditions * Remove custom transformation from gen8linked --- data/conditions.ts | 59 +++++++++++++++++++++++++++++++ data/mods/gen8linked/scripts.ts | 37 +------------------ data/mods/gen9ssb/conditions.ts | 58 ++++++++++++++++++++++++++++++ data/mods/gen9ssb/scripts.ts | 37 +------------------ data/mods/monkeyspaw/scripts.ts | 37 +------------------ sim/battle.ts | 37 +------------------ sim/dex-conditions.ts | 1 + test/sim/team-validator/formes.js | 7 ++-- 8 files changed, 125 insertions(+), 148 deletions(-) diff --git a/data/conditions.ts b/data/conditions.ts index 44406ca01a..cf749e1f66 100644 --- a/data/conditions.ts +++ b/data/conditions.ts @@ -879,6 +879,65 @@ export const Conditions: import('../sim/dex-conditions').ConditionDataTable = { return [type]; }, }, + zacian: { + name: 'Zacian', + onBattleStart(pokemon) { + if (pokemon.item !== 'rustedsword') return; + const rawSpecies = this.dex.species.get('Zacian-Crowned'); + const species = pokemon.setSpecies(rawSpecies); + if (!species) return; + pokemon.baseSpecies = rawSpecies; + pokemon.details = pokemon.getUpdatedDetails(); + pokemon.setAbility(species.abilities['0'], null, null, true); + pokemon.baseAbility = pokemon.ability; + + const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead'); + if (ironHeadIndex >= 0) { + const move = this.dex.moves.get('behemothblade'); + pokemon.baseMoveSlots[ironHeadIndex] = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + disabledSource: '', + used: false, + }; + pokemon.moveSlots = pokemon.baseMoveSlots.slice(); + } + }, + }, + zamazenta: { + name: 'Zamazenta', + onBattleStart(pokemon) { + if (pokemon.item !== 'rustedshield') return; + const rawSpecies = this.dex.species.get('Zamazenta-Crowned'); + const species = pokemon.setSpecies(rawSpecies); + if (!species) return; + pokemon.baseSpecies = rawSpecies; + pokemon.details = pokemon.getUpdatedDetails(); + pokemon.setAbility(species.abilities['0'], null, null, true); + pokemon.baseAbility = pokemon.ability; + + const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead'); + if (ironHeadIndex >= 0) { + const move = this.dex.moves.get('behemothbash'); + pokemon.baseMoveSlots[ironHeadIndex] = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + disabledSource: '', + used: false, + }; + pokemon.moveSlots = pokemon.baseMoveSlots.slice(); + } + }, + }, + rolloutstorage: { name: 'rolloutstorage', duration: 2, diff --git a/data/mods/gen8linked/scripts.ts b/data/mods/gen8linked/scripts.ts index 1962e1d16f..7a9766829f 100644 --- a/data/mods/gen8linked/scripts.ts +++ b/data/mods/gen8linked/scripts.ts @@ -70,40 +70,8 @@ export const Scripts: ModdedBattleScriptsData = { this.add('start'); - // Change Zacian/Zamazenta into their Crowned formes for (const pokemon of this.getAllPokemon()) { - let rawSpecies: Species | null = null; - if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') { - rawSpecies = this.dex.species.get('Zacian-Crowned'); - } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') { - rawSpecies = this.dex.species.get('Zamazenta-Crowned'); - } - if (!rawSpecies) continue; - const species = pokemon.setSpecies(rawSpecies); - if (!species) continue; - pokemon.baseSpecies = rawSpecies; - pokemon.details = pokemon.getUpdatedDetails(); - // pokemon.setAbility(species.abilities['0'], null, null, true); - // pokemon.baseAbility = pokemon.ability; - - const behemothMove: { [k: string]: string } = { - 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash', - }; - const ironHead = pokemon.baseMoves.indexOf('ironhead'); - if (ironHead >= 0) { - const move = this.dex.moves.get(behemothMove[rawSpecies.name]); - pokemon.baseMoveSlots[ironHead] = { - move: move.name, - id: move.id, - pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - target: move.target, - disabled: false, - disabledSource: '', - used: false, - }; - pokemon.moveSlots = pokemon.baseMoveSlots.slice(); - } + this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); } this.format.onBattleStart?.call(this); @@ -125,9 +93,6 @@ export const Scripts: ModdedBattleScriptsData = { } } } - for (const pokemon of this.getAllPokemon()) { - this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); - } this.midTurn = true; break; } diff --git a/data/mods/gen9ssb/conditions.ts b/data/mods/gen9ssb/conditions.ts index 7a6f4cc3ce..a5984188f1 100644 --- a/data/mods/gen9ssb/conditions.ts +++ b/data/mods/gen9ssb/conditions.ts @@ -3,6 +3,64 @@ import { changeSet, getName, enemyStaff } from './scripts'; import type { ModdedConditionData } from "../../../sim/dex-conditions"; export const Conditions: { [id: IDEntry]: ModdedConditionData & { innateName?: string } } = { + zacian: { + inherit: true, + onBattleStart(pokemon) { + if (pokemon.item !== 'rustedsword') return; + const rawSpecies = this.dex.species.get('Zacian-Crowned'); + const species = pokemon.setSpecies(rawSpecies); + if (!species) return; + pokemon.baseSpecies = rawSpecies; + pokemon.details = pokemon.getUpdatedDetails(); + // pokemon.setAbility(species.abilities['0'], null, null, true); + // pokemon.baseAbility = pokemon.ability; + + const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead'); + if (ironHeadIndex >= 0) { + const move = this.dex.moves.get('behemothblade'); + pokemon.baseMoveSlots[ironHeadIndex] = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + disabledSource: '', + used: false, + }; + pokemon.moveSlots = pokemon.baseMoveSlots.slice(); + } + }, + }, + zamazenta: { + inherit: true, + onBattleStart(pokemon) { + if (pokemon.item !== 'rustedshield') return; + const rawSpecies = this.dex.species.get('Zamazenta-Crowned'); + const species = pokemon.setSpecies(rawSpecies); + if (!species) return; + pokemon.baseSpecies = rawSpecies; + pokemon.details = pokemon.getUpdatedDetails(); + // pokemon.setAbility(species.abilities['0'], null, null, true); + // pokemon.baseAbility = pokemon.ability; + + const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead'); + if (ironHeadIndex >= 0) { + const move = this.dex.moves.get('behemothbash'); + pokemon.baseMoveSlots[ironHeadIndex] = { + move: move.name, + id: move.id, + pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, + target: move.target, + disabled: false, + disabledSource: '', + used: false, + }; + pokemon.moveSlots = pokemon.baseMoveSlots.slice(); + } + }, + }, /* // Example: userid: { diff --git a/data/mods/gen9ssb/scripts.ts b/data/mods/gen9ssb/scripts.ts index 6be6a31470..4113928614 100644 --- a/data/mods/gen9ssb/scripts.ts +++ b/data/mods/gen9ssb/scripts.ts @@ -374,40 +374,8 @@ export const Scripts: ModdedBattleScriptsData = { this.add('start'); - // Change Zacian/Zamazenta into their Crowned formes for (const pokemon of this.getAllPokemon()) { - let rawSpecies: Species | null = null; - if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') { - rawSpecies = this.dex.species.get('Zacian-Crowned'); - } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') { - rawSpecies = this.dex.species.get('Zamazenta-Crowned'); - } - if (!rawSpecies) continue; - const species = pokemon.setSpecies(rawSpecies); - if (!species) continue; - pokemon.baseSpecies = rawSpecies; - pokemon.details = pokemon.getUpdatedDetails(); - // pokemon.setAbility(species.abilities['0'], null, null, true); - // pokemon.baseAbility = pokemon.ability; - - const behemothMove: { [k: string]: string } = { - 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash', - }; - const ironHead = pokemon.baseMoves.indexOf('ironhead'); - if (ironHead >= 0) { - const move = this.dex.moves.get(behemothMove[rawSpecies.name]); - pokemon.baseMoveSlots[ironHead] = { - move: move.name, - id: move.id, - pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - target: move.target, - disabled: false, - disabledSource: '', - used: false, - }; - pokemon.moveSlots = pokemon.baseMoveSlots.slice(); - } + this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); } this.format.onBattleStart?.call(this); @@ -429,9 +397,6 @@ export const Scripts: ModdedBattleScriptsData = { } } } - for (const pokemon of this.getAllPokemon()) { - this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); - } this.midTurn = true; break; } diff --git a/data/mods/monkeyspaw/scripts.ts b/data/mods/monkeyspaw/scripts.ts index ce494c72bd..86a484e7ae 100644 --- a/data/mods/monkeyspaw/scripts.ts +++ b/data/mods/monkeyspaw/scripts.ts @@ -193,40 +193,8 @@ export const Scripts: ModdedBattleScriptsData = { this.add('start'); - // Change Zacian/Zamazenta into their Crowned formes for (const pokemon of this.getAllPokemon()) { - let rawSpecies: Species | null = null; - if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') { - rawSpecies = this.dex.species.get('Zacian-Crowned'); - } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') { - rawSpecies = this.dex.species.get('Zamazenta-Crowned'); - } - if (!rawSpecies) continue; - const species = pokemon.setSpecies(rawSpecies); - if (!species) continue; - pokemon.baseSpecies = rawSpecies; - pokemon.details = pokemon.getUpdatedDetails(); - pokemon.setAbility(species.abilities['0'], null, null, true); - pokemon.baseAbility = pokemon.ability; - - const behemothMove: { [k: string]: string } = { - 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash', - }; - const ironHead = pokemon.baseMoves.indexOf('ironhead'); - if (ironHead >= 0) { - const move = this.dex.moves.get(behemothMove[rawSpecies.name]); - pokemon.baseMoveSlots[ironHead] = { - move: move.name, - id: move.id, - pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - target: move.target, - disabled: false, - disabledSource: '', - used: false, - }; - pokemon.moveSlots = pokemon.baseMoveSlots.slice(); - } + this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); } this.format.onBattleStart?.call(this); @@ -248,9 +216,6 @@ export const Scripts: ModdedBattleScriptsData = { } } } - for (const pokemon of this.getAllPokemon()) { - this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); - } this.midTurn = true; break; } diff --git a/sim/battle.ts b/sim/battle.ts index cbfbda0de2..f06c223980 100644 --- a/sim/battle.ts +++ b/sim/battle.ts @@ -2672,40 +2672,8 @@ export class Battle { this.add('start'); - // Change Zacian/Zamazenta into their Crowned formes for (const pokemon of this.getAllPokemon()) { - let rawSpecies: Species | null = null; - if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') { - rawSpecies = this.dex.species.get('Zacian-Crowned'); - } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') { - rawSpecies = this.dex.species.get('Zamazenta-Crowned'); - } - if (!rawSpecies) continue; - const species = pokemon.setSpecies(rawSpecies); - if (!species) continue; - pokemon.baseSpecies = rawSpecies; - pokemon.details = pokemon.getUpdatedDetails(); - pokemon.setAbility(species.abilities['0'], null, null, true); - pokemon.baseAbility = pokemon.ability; - - const behemothMove: { [k: string]: string } = { - 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash', - }; - const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead'); - if (ironHeadIndex >= 0) { - const move = this.dex.moves.get(behemothMove[rawSpecies.name]); - pokemon.baseMoveSlots[ironHeadIndex] = { - move: move.name, - id: move.id, - pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5, - target: move.target, - disabled: false, - disabledSource: '', - used: false, - }; - pokemon.moveSlots = pokemon.baseMoveSlots.slice(); - } + this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); } this.format.onBattleStart?.call(this); @@ -2727,9 +2695,6 @@ export class Battle { } } } - for (const pokemon of this.getAllPokemon()) { - this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon); - } this.midTurn = true; break; } diff --git a/sim/dex-conditions.ts b/sim/dex-conditions.ts index 057d6f3284..f900795ad6 100644 --- a/sim/dex-conditions.ts +++ b/sim/dex-conditions.ts @@ -639,6 +639,7 @@ export class Condition extends BasicEffect implements declare readonly onStart?: ( this: Battle, target: Pokemon, source: Pokemon, sourceEffect: Effect ) => boolean | null | void; + declare readonly onBattleStart?: (this: Battle, pokemon: Pokemon) => void; constructor(data: AnyObject) { super(data); diff --git a/test/sim/team-validator/formes.js b/test/sim/team-validator/formes.js index 518f782fb6..f405477b79 100644 --- a/test/sim/team-validator/formes.js +++ b/test/sim/team-validator/formes.js @@ -100,17 +100,16 @@ describe('Team Validator', () => { assert.legalTeam(team, 'gen7anythinggoes'); }); - // Zamazenta is unreleased currently - it.skip('should tier Zacian and Zamazenta formes separately', () => { + it('should tier Zacian and Zamazenta formes separately', () => { team = [ { species: 'zamazenta-crowned', ability: 'dauntlessshield', item: 'rustedshield', moves: ['howl'], evs: { hp: 1 } }, ]; - assert.legalTeam(team, 'gen9almostanyability'); + assert.false.legalTeam(team, 'gen9ou'); team = [ { species: 'zamazenta', ability: 'dauntlessshield', item: 'lifeorb', moves: ['howl'], evs: { hp: 1 } }, ]; - assert.false.legalTeam(team, 'gen9almostanyability'); + assert.legalTeam(team, 'gen9ou'); }); it('should validate Unown formes in Gen 2 based on DVs', () => { From 1091524b94f4fe8797750e3aa0e5f94a357874c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Wed, 18 Feb 2026 01:36:37 +0000 Subject: [PATCH 123/139] Gen 1: Fix underflow glitch applied to mimicked duplicate moves (#11746) * Fix underflow glitch applied to mimicked duplicate moves * Remove flags * Remove console.log --- data/mods/gen1/moves.ts | 16 ++++++++++++++++ data/mods/gen1/scripts.ts | 19 +++++++++++++++++++ data/mods/gen4/moves.ts | 3 +-- data/mods/gen7letsgo/moves.ts | 7 +++++-- sim/pokemon.ts | 5 ++--- 5 files changed, 43 insertions(+), 7 deletions(-) diff --git a/data/mods/gen1/moves.ts b/data/mods/gen1/moves.ts index ba21a2506c..a219633070 100644 --- a/data/mods/gen1/moves.ts +++ b/data/mods/gen1/moves.ts @@ -458,6 +458,22 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { target: "self", type: "Psychic", }, + metronome: { + inherit: true, + onHit(pokemon) { + const moves = this.dex.moves.all().filter(move => ( + (!move.isNonstandard || move.isNonstandard === 'Unobtainable') && move.flags['metronome'] + )); + let randomMove = ''; + if (moves.length) { + moves.sort((a, b) => a.num - b.num); + randomMove = this.sample(moves).id; + } + if (!randomMove) return false; + pokemon.side.lastSelectedMove = this.toID(randomMove); + this.actions.useMove(randomMove, pokemon); + }, + }, mimic: { inherit: true, flags: { protect: 1, bypasssub: 1, metronome: 1 }, diff --git a/data/mods/gen1/scripts.ts b/data/mods/gen1/scripts.ts index 118b5ac213..7aa7786f21 100644 --- a/data/mods/gen1/scripts.ts +++ b/data/mods/gen1/scripts.ts @@ -25,6 +25,25 @@ export const Scripts: ModdedBattleScriptsData = { // BattlePokemon scripts. pokemon: { inherit: true, + // In gen 1, a Pokémon can have two instances of the same move using Mimic + // we need to make sure to deduct PP from a move that has PP left + deductPP(move, amount, target) { + move = this.battle.dex.moves.get(move); + // first loop: get the first instance with PP left + // second loop: get the first instance, even if it has no PP left + for (let i = 0; i < 2; i++) { + for (const ppData of this.moveSlots) { + if (ppData.id !== move.id) continue; + ppData.used = true; + if (!ppData.pp && i === 0) continue; + + if (!amount) amount = 1; + ppData.pp -= amount; + return amount; + } + } + return 0; + }, getStat(statName, unmodified) { // @ts-expect-error type checking prevents 'hp' from being passed, but we're paranoid if (statName === 'hp') throw new Error("Please read `maxhp` directly"); diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts index 1acc40facf..848090153c 100644 --- a/data/mods/gen4/moves.ts +++ b/data/mods/gen4/moves.ts @@ -1087,9 +1087,8 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { flags: { noassist: 1, failcopycat: 1, nosleeptalk: 1, failmimic: 1 }, onHit(pokemon) { const moves = this.dex.moves.all().filter(move => ( - (![2, 4].includes(this.gen) || !pokemon.moves.includes(move.id)) && + move.flags['metronome'] && !pokemon.moves.includes(move.id) && (!move.isNonstandard || move.isNonstandard === 'Unobtainable') && - move.flags['metronome'] && !(this.field.pseudoWeather['gravity'] && move.flags['gravity']) && !(pokemon.volatiles['healblock'] && move.flags['heal']) )); diff --git a/data/mods/gen7letsgo/moves.ts b/data/mods/gen7letsgo/moves.ts index 552a0df8c8..31f669b0e1 100644 --- a/data/mods/gen7letsgo/moves.ts +++ b/data/mods/gen7letsgo/moves.ts @@ -41,8 +41,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { inherit: true, desc: "A random move that was introduced in gen 1 is selected for use, other than Counter, Mimic, Mirror Move, Struggle, or Transform.", shortDesc: "Picks a random move from gen 1.", - onHit(target, source, effect) { - const moves = this.dex.moves.all().filter(move => move.gen === 1 && move.flags['metronome']); + onHit(target) { + const moves = this.dex.moves.all().filter(move => ( + (!move.isNonstandard || move.isNonstandard === 'Unobtainable') && + move.flags['metronome'] && move.gen === 1 + )); let randomMove = ''; if (moves.length) { moves.sort((a, b) => a.num - b.num); diff --git a/sim/pokemon.ts b/sim/pokemon.ts index 418bdc3bd2..6ff69ec153 100644 --- a/sim/pokemon.ts +++ b/sim/pokemon.ts @@ -876,16 +876,15 @@ export class Pokemon { } deductPP(move: string | Move, amount?: number | null, target?: Pokemon | null | false) { - const gen = this.battle.gen; move = this.battle.dex.moves.get(move); const ppData = this.getMoveData(move); if (!ppData) return 0; ppData.used = true; - if (!ppData.pp && gen > 1) return 0; + if (!ppData.pp) return 0; if (!amount) amount = 1; ppData.pp -= amount; - if (ppData.pp < 0 && gen > 1) { + if (ppData.pp < 0) { amount += ppData.pp; ppData.pp = 0; } From 95aad7df02abd58dd737e0acdac22e5d049d360e Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sat, 21 Feb 2026 17:50:31 -0700 Subject: [PATCH 124/139] Gen 6 Mix and Mega: Ban Gengarite and restrict Entei --- config/formats.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 5db5d77f56..c41d91294f 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3077,11 +3077,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen6mixandmega', searchShow: false, ruleset: ['Standard', 'Swagger Clause', 'Mega Rayquaza Clause', 'Overflow Stat Mod', '!Sleep Clause Mod', 'Sleep Moves Clause'], - banlist: ['Shadow Tag', 'Baton Pass', 'Electrify'], + banlist: ['Shadow Tag', 'Gengarite', 'Baton Pass', 'Electrify'], restricted: [ - 'Beedrillite', 'Gengarite', 'Kangaskhanite', 'Mawilite', 'Medichamite', - 'Arceus', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', 'Dialga', 'Dragonite', 'Genesect', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', - 'Kyurem-White', 'Lugia', 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shaymin-Sky', 'Slaking', 'Xerneas', 'Yveltal', 'Zekrom', + 'Beedrillite', 'Kangaskhanite', 'Mawilite', 'Medichamite', 'Arceus', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed', + 'Dialga', 'Dragonite', 'Entei', 'Genesect', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', + 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shaymin-Sky', 'Slaking', 'Xerneas', 'Yveltal', 'Zekrom', ], onValidateTeam(team) { const itemTable = new Set(); From 3ad40b4a5cb20bd653014e871c5bdd743ab1e037 Mon Sep 17 00:00:00 2001 From: Sunny <165436526+Sunny-Krys@users.noreply.github.com> Date: Sun, 22 Feb 2026 21:27:12 -0500 Subject: [PATCH 125/139] Gen 1 LC: Add Accuracy and Sleep Moves Clause (#11776) Co-authored-by: kn-Kris <165436526+kn-Kris@users.noreply.github.com> --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index c41d91294f..65f2ae1270 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -5393,7 +5393,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ name: "[Gen 1] LC", mod: 'gen1', searchShow: false, - ruleset: ['Little Cup', 'Standard', '!Max Level', 'Adjust Level = 5'], + ruleset: ['Little Cup', 'Standard', '!Max Level', 'Adjust Level = 5', 'Sleep Moves Clause', 'Accuracy Moves Clause'], banlist: ['Dragon Rage', 'Fire Spin', 'Sonic Boom', 'Wrap'], }, { From c30261be77fee5186273046416e626a5e7d75f77 Mon Sep 17 00:00:00 2001 From: Niadev Date: Sat, 28 Feb 2026 01:21:20 +0000 Subject: [PATCH 126/139] Ban Okidogi from National Dex UU (#11779) --- data/formats-data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/formats-data.ts b/data/formats-data.ts index ddaaefa03f..42664c5615 100644 --- a/data/formats-data.ts +++ b/data/formats-data.ts @@ -5773,7 +5773,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = okidogi: { tier: "UUBL", doublesTier: "(DUU)", - natDexTier: "RUBL", + natDexTier: "UUBL", }, munkidori: { tier: "NU", From 76eb3eb3bfeef0b9aa414659923b0e09468469ef Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Fri, 27 Feb 2026 19:50:24 -0700 Subject: [PATCH 127/139] Update Kalos starter Mega abilities (#11781) --- data/pokedex.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/pokedex.ts b/data/pokedex.ts index 15f545e973..e0700637b1 100644 --- a/data/pokedex.ts +++ b/data/pokedex.ts @@ -12034,7 +12034,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = { types: ["Grass", "Fighting"], genderRatio: { M: 0.875, F: 0.125 }, baseStats: { hp: 88, atk: 137, def: 172, spa: 74, spd: 115, spe: 44 }, - abilities: { 0: "Overgrow", H: "Bulletproof" }, + abilities: { 0: "Bulletproof" }, heightm: 1.6, weightkg: 90, color: "Green", @@ -12094,7 +12094,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = { types: ["Fire", "Psychic"], genderRatio: { M: 0.875, F: 0.125 }, baseStats: { hp: 75, atk: 69, def: 72, spa: 159, spd: 125, spe: 134 }, - abilities: { 0: "Blaze", H: "Magician" }, + abilities: { 0: "Levitate" }, heightm: 1.5, weightkg: 39, color: "Red", @@ -12186,7 +12186,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = { types: ["Water", "Dark"], genderRatio: { M: 0.875, F: 0.125 }, baseStats: { hp: 72, atk: 125, def: 77, spa: 133, spd: 81, spe: 142 }, - abilities: { 0: "Torrent", H: "Protean" }, + abilities: { 0: "Protean" }, heightm: 1.5, weightkg: 40, color: "Blue", From 8a0685b03f94ae8d8308b4f037f86244040af71a Mon Sep 17 00:00:00 2001 From: Mia <49593536+mia-pi-git@users.noreply.github.com> Date: Sun, 1 Mar 2026 01:11:09 -0600 Subject: [PATCH 128/139] Ladder tours: Cap deadline length --- server/chat-plugins/laddertours.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/chat-plugins/laddertours.ts b/server/chat-plugins/laddertours.ts index 518ae8041e..fccbada35f 100644 --- a/server/chat-plugins/laddertours.ts +++ b/server/chat-plugins/laddertours.ts @@ -87,13 +87,17 @@ export class LadderTracker { this.deadline = date; if (this.final) clearTimeout(this.final); + const timeDiff = (+this.deadline - Date.now()) - 500; + if (timeDiff >= Number.MAX_SAFE_INTEGER) { + throw new Chat.ErrorMessage("Deadline is too far away. Please wait and set it later."); + } // We set the timer to fire slightly before the deadline and then // repeatedly do process.nextTick checks for accuracy this.final = setTimeout(() => { this.stop(); // eslint-disable-next-line @typescript-eslint/no-floating-promises this.captureFinalLeaderboard(); - }, (+this.deadline - Date.now()) - 500); + }, timeDiff); if (save) LadderTracker.save(); } From be25932afff89949f9bcda3eecb1df445f0beaeb Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Mar 2026 03:19:22 -0700 Subject: [PATCH 129/139] Update rotational ladders (#11785) * Update Kalos starter Mega abilities * Update rotational ladders --- config/formats.ts | 489 ++++++++++-------- data/aliases.ts | 8 +- data/mods/gen8linked/items.ts | 14 - .../mods/{gen8linked => linked}/conditions.ts | 13 +- data/mods/{gen8linked => linked}/moves.ts | 261 ++++++---- data/mods/{gen8linked => linked}/scripts.ts | 87 +++- 6 files changed, 505 insertions(+), 367 deletions(-) delete mode 100644 data/mods/gen8linked/items.ts rename data/mods/{gen8linked => linked}/conditions.ts (82%) rename data/mods/{gen8linked => linked}/moves.ts (59%) rename data/mods/{gen8linked => linked}/scripts.ts (88%) diff --git a/config/formats.ts b/config/formats.ts index 65f2ae1270..a04fa483f6 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -358,6 +358,21 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Sneasel-Hisui', 'Ursaring', 'Vigoroth', 'Vulpix-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Shadow Tag', 'Baton Pass', ], }, + { + name: "[Gen 9] Ubers UU", + mod: 'gen9', + searchShow: false, + ruleset: ['[Gen 9] Ubers'], + banlist: [ + // Ubers OU + 'Arceus-Normal', 'Arceus-Fairy', 'Arceus-Ghost', 'Arceus-Ground', 'Arceus-Water', 'Calyrex-Ice', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto', + 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina-Origin', 'Glimmora', 'Gliscor', 'Grimmsnarl', 'Groudon', 'Hatterene', 'Ho-Oh', 'Kingambit', 'Koraidon', + 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Ribombee', 'Skeledirge', 'Terapagos', 'Ting-Lu', 'Zacian-Crowned', + // Ubers UUBL + Lunala, Arceus-Ghost, Arceus-Water + 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Giratina', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', + 'Zekrom', + ], + }, // Draft League /////////////////////////////////////////////////////////////////// @@ -481,199 +496,135 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Flat Rules', 'VGC Timer', 'Best of = 3'], }, { - name: "[Gen 9] Flipped", - desc: `All Pokémon have their base stats flipped. For example, Sylveon's HP and Speed stats, Attack and Special Defense stats, and Defense and Special Attack stats swap.`, - mod: 'gen9', - ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], - banlist: [ - 'Annihilape', 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', - 'Deoxys-Speed', 'Dialga', 'Dialga-Origin', 'Espathra', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', - 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', - 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', - 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', - 'Last Respects', 'Shed Tail', - ], - }, - { - name: "[Gen 9] The Loser's Game", - desc: `The first player to lose all of their Pokémon wins.`, - mod: 'gen9', + name: "[Gen 9] Linked", + desc: `The first two moves in a Pokémon's moveset are used simultaneously.`, + mod: 'linked', // searchShow: false, - ruleset: ['Standard OMs', 'Sleep Clause Mod', '!OHKO Clause', 'Picked Team Size = 6', 'Adjust Level = 100'], - banlist: ['Infiltrator', 'Choice Scarf', 'Explosion', 'Final Gambit', 'Healing Wish', 'Lunar Dance', 'Magic Room', 'Memento', 'Misty Explosion', 'Self-Destruct'], - onValidateTeam(team) { - const familyTable = new Set(); - for (const set of team) { - let species = this.dex.species.get(set.species); - while (species.prevo) { - species = this.dex.species.get(species.prevo); - } - if (familyTable.has(species.id)) { - return [ - `You are limited to one Pokémon from each family by the Family Clause.`, - `(You have more than one evolution of ${species.name}.)`, - ]; - } - familyTable.add(species.id); - } - }, - battle: { - tiebreak() { - if (this.ended) return false; - - this.inputLog.push(`>tiebreak`); - this.add('message', "Time's up! Going to tiebreaker..."); - const notFainted = this.sides.map(side => ( - side.pokemon.filter(pokemon => !pokemon.fainted).length - )); - this.add('-message', this.sides.map((side, i) => ( - `${side.name}: ${notFainted[i]} Pokemon left` - )).join('; ')); - const maxNotFainted = Math.max(...notFainted); - let tiedSides = this.sides.filter((side, i) => notFainted[i] === maxNotFainted); - if (tiedSides.length <= 1) { - return this.win(tiedSides[1]); - } - - const hpPercentage = tiedSides.map(side => ( - side.pokemon.map(pokemon => pokemon.hp / pokemon.maxhp).reduce((a, b) => a + b) * 100 / 6 - )); - this.add('-message', tiedSides.map((side, i) => ( - `${side.name}: ${Math.round(hpPercentage[i])}% total HP left` - )).join('; ')); - const maxPercentage = Math.max(...hpPercentage); - tiedSides = tiedSides.filter((side, i) => hpPercentage[i] === maxPercentage); - if (tiedSides.length <= 1) { - return this.win(tiedSides[1]); - } - - const hpTotal = tiedSides.map(side => ( - side.pokemon.map(pokemon => pokemon.hp).reduce((a, b) => a + b) - )); - this.add('-message', tiedSides.map((side, i) => ( - `${side.name}: ${Math.round(hpTotal[i])} total HP left` - )).join('; ')); - const maxTotal = Math.max(...hpTotal); - tiedSides = tiedSides.filter((side, i) => hpTotal[i] === maxTotal); - if (tiedSides.length <= 1) { - return this.win(tiedSides[1]); - } - return this.tie(); - }, - checkWin(faintData) { - const team1PokemonLeft = this.sides[0].pokemonLeft; - const team2PokemonLeft = this.sides[1].pokemonLeft; - if (!team1PokemonLeft && !team2PokemonLeft) { - this.win(faintData?.target.side || null); - return true; - } - for (const side of this.sides) { - if (!side.pokemonLeft) { - this.win(side); - return true; - } - } - }, - }, - }, - { - name: "[Gen 9] STABmons Mix and Mega", - desc: `Mega evolve any Pokémon with any mega stone, or transform them with Genesect Drives, Primal orbs, Origin orbs, Rusted items, Ogerpon Masks, Arceus Plates, and Silvally Memories with no limit. Pokémon can use any move of their typing, in addition to the moves they can normally learn. Mega and Primal boosts based on form changes from gen 7.`, - mod: 'mixandmega', - ruleset: ['Standard OMs', 'STABmons Move Legality', 'Evasion Items Clause', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Terastal Clause'], + ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Clause', 'Terastal Clause'], banlist: [ - 'Arceus', 'Calyrex-Shadow', 'Enamorus-Incarnate', 'Koraidon', 'Kyogre', 'Miraidon', 'Komala', 'Moody', 'Shadow Tag', - 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite Z', 'Malamarite', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Red Orb', 'Zygardite', - 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Shed Tail', + 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Normal', 'Dialga', 'Dialga-Origin', 'Eternatus', + 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', + 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin', 'Raichu-Alola', + 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Volcarona', + 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Chlorophyll', 'Moody', 'Sand Rush', 'Shadow Tag', 'Slush Rush', 'Speed Boost', 'Swift Swim', 'Unburden', + 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', ], restricted: [ - 'Basculegion-M', 'Calyrex-Ice', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dragapult', 'Eternatus', 'Flutter Mane', 'Gengar', 'Giratina', 'Gouging Fire', - 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Manaphy', 'Meloetta', 'Mewtwo', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', - 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Slaking', 'Sneasler', 'Solgaleo', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Walking Wake', - 'Zacian', 'Zekrom', 'Zoroark-Hisui', 'Acupressure', 'Astral Barrage', 'Belly Drum', 'Blood Moon', 'Boomburst', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw', - 'Dragon Energy', 'Electro Shot', 'Extreme Speed', 'Fillet Away', 'Gigaton Hammer', 'Jet Punch', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Power Trip', - 'Rage Fist', 'Revival Blessing', 'Shell Smash', 'Shift Gear', 'Surging Strikes', 'Torch Song', 'Triple Arrows', 'V-create', 'Victory Dance', 'Wicked Blow', + 'Baneful Bunker', 'Bounce', 'Burning Bulwark', 'Detect', 'Dig', 'Dive', 'Fly', 'Imprison', 'Phantom Force', 'Protect', + 'Ruination', 'Shadow Force', 'Silk Trap', 'Spiky Shield', 'Super Fang', 'Taunt', 'Trick Room', ], - onValidateTeam(team) { - const itemTable = new Set(); - for (const set of team) { - const item = this.dex.items.get(set.item); - if (!(item.forcedForme && !item.zMove) && !item.megaStone && - !item.isPrimalOrb && !item.name.startsWith('Rusted')) continue; - const natdex = this.ruleTable.has('natdexmod'); - if (natdex && item.id !== 'ultranecroziumz') continue; - const species = this.dex.species.get(set.species); - if (species.isNonstandard && !this.ruleTable.has(`+pokemontag:${this.toID(species.isNonstandard)}`)) { - return [`${species.baseSpecies} does not exist in gen 9.`]; + onValidateSet(set) { + const problems = []; + for (const [i, moveid] of set.moves.entries()) { + const move = this.dex.moves.get(moveid); + if ([0, 1].includes(i) && this.ruleTable.isRestricted(`move:${move.id}`)) { + problems.push(`${set.name || set.species}'s move ${move.name} cannot be linked.`); } - if (((item.itemUser?.includes(species.name) || item.forcedForme === species.name) && - !item.megaStone && !item.isPrimalOrb) || (natdex && species.name.startsWith('Necrozma-') && - item.id === 'ultranecroziumz')) { - continue; + } + return problems; + }, + }, + { + name: "[Gen 9] 350 Cup", + desc: `Pokemon with a BST of 350 or lower have their stats doubled.`, + mod: 'gen9', + // searchShow: false, + ruleset: ['Standard OMs', 'Sleep Moves Clause', '350 Cup Mod', 'Evasion Clause'], + banlist: ['Calyrex-Shadow', 'Flittle', 'Gastly', 'Miraidon', 'Pikachu', 'Rufflet', 'Arena Trap', 'Moody', 'Shadow Tag', 'Eviolite', 'Baton Pass'], + }, + { + name: "[Gen 9] Pokebilities AAA", + desc: `Pokémon have all of their released abilities simultaneously, as well as one ability they cannot normally use.`, + mod: 'pokebilities', + // searchShow: false, + ruleset: ['Standard OMs', '!Obtainable Abilities', 'Ability Clause = 1', 'AAA Restricted Abilities', 'Terastal Clause', 'Sleep Moves Clause'], + banlist: [ + 'Annihilape', 'Arcanine-Hisui', 'Arceus', 'Archaludon', 'Azumarill', 'Basculegion', 'Basculin', 'Baxcalibur', 'Blaziken', 'Braviary-Hisui', 'Calyrex-Ice', 'Calyrex-Shadow', + 'Ceruledge', 'Chi-Yu', 'Chien-Pao', 'Clefable', 'Cloyster', 'Conkeldurr', 'Darkrai', 'Deoxys', 'Deoxys-Attack', 'Dialga', 'Enamorus-Base', 'Espathra', 'Eternatus', 'Excadrill', + 'Flutter Mane', 'Gholdengo', 'Giratina', 'Gouging Fire', 'Groudon', 'Hawlucha', 'Ho-Oh', 'Hoopa-Unbound', 'Iron Bundle', 'Iron Valiant', 'Kingambit', 'Keldeo', 'Kleavor', + 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', + 'Necrozma-Dusk-Mane', 'Noivern', 'Ogerpon-Hearthflame', 'Palkia', 'Porygon-Z', 'Raging Bolt', 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Serperior', 'Shaymin-Sky', 'Smeargle', + 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Volcarona', 'Walking Wake', 'Weavile', 'Zacian', + 'Zacian-Crowned', 'Zapdos-Galar', 'Zekrom', 'Zoroark-Hisui', 'Arena Trap', 'Magnet Pull', 'Moody', 'Shadow Tag', 'Regenerator + Wimp Out', 'Regenerator + Emergency Exit', + 'Regenerator > 2', + 'Drizzle + Swift Swim', 'Primordial Sea + Swift Swim', 'Drought + Chlorophyll', 'Desolate Land + Chlorophyll', 'Electric Surge + Surge Surfer', 'Hadron Engine + Surge Surfer', + 'Hadron Engine + Quark Drive', 'Electric Surge + Quark Drive', 'Drought + Protosynthesis', 'Sand Stream + Sand Rush', 'Sand Stream + Sand Veil', 'Snow Warning + Snow Cloak', + 'Snow Warning + Slush Rush', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Revival Blessing', 'Shed Tail', + ], + restricted: [ + 'Comatose', 'Contrary', 'Fur Coat', 'Good as Gold', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Magic Bounce', 'Neutralizing Gas', + 'Orichalcum Pulse', 'Parental Bond', 'Poison Heal', 'Pure Power', 'Simple', 'Speed Boost', 'Stakeout', 'Toxic Debris', 'Triage', 'Unburden', 'Water Bubble', 'Wonder Guard', + ], + onValidateSet(set) { + const species = this.dex.species.get(set.species); + const unSeenAbilities = Object.keys(species.abilities) + .filter(key => key !== 'S' && (key !== 'H' || !species.unreleasedHidden)) + .map(key => species.abilities[key as "0" | "1" | "H" | "S"]) + .filter(ability => ability !== set.ability); + if (unSeenAbilities.length && this.toID(set.ability) !== this.toID(species.abilities['S'])) { + for (const abilityName of unSeenAbilities) { + const banReason = this.ruleTable.check('ability:' + this.toID(abilityName)); + if (banReason) { + return [`${set.name}'s ability ${abilityName} is ${banReason}.`]; + } } - if (this.ruleTable.isRestrictedSpecies(species) || this.toID(set.ability) === 'powerconstruct') { - return [`${species.name} is not allowed to hold ${item.name}.`]; - } - if (itemTable.has(item.id)) { - return [ - `You are limited to one of each Mega Stone/Primal Orb/Rusted item/Origin item/Ogerpon Mask/Arceus Plate/Silvally Memory.`, - `(You have more than one ${item.name})`, - ]; - } - itemTable.add(item.id); } }, onBegin() { for (const pokemon of this.getAllPokemon()) { - pokemon.m.originalSpecies = pokemon.baseSpecies.name; + if (pokemon.ability === this.toID(pokemon.species.abilities['S'])) { + continue; + } + pokemon.m.innates = Object.keys(pokemon.species.abilities) + .filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden)) + .map(key => this.toID(pokemon.species.abilities[key as "0" | "1" | "H" | "S"])) + .filter(ability => ability !== pokemon.ability); } }, - onSwitchIn(pokemon) { - const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); - if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { - // Place volatiles on the Pokémon to show its mega-evolved condition and details - this.add('-start', pokemon, originalSpecies.requiredItems?.[0] || originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); - const oSpecies = this.dex.species.get(pokemon.m.originalSpecies); - if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { - this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); + onBeforeSwitchIn(pokemon) { + if (pokemon.m.innates) { + for (const innate of pokemon.m.innates) { + if (pokemon.hasAbility(innate)) continue; + const effect = 'ability:' + this.toID(innate); + pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon }); } } }, onSwitchOut(pokemon) { - const originalSpecies = this.dex.species.get((pokemon.species as any).originalSpecies); - if (originalSpecies.exists && pokemon.m.originalSpecies !== originalSpecies.baseSpecies) { - this.add('-end', pokemon, originalSpecies.requiredItems?.[0] || originalSpecies.requiredItem || originalSpecies.requiredMove, '[silent]'); + for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) { + pokemon.removeVolatile(innate); } }, + onFaint(pokemon) { + for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) { + const innateEffect = this.dex.conditions.get(innate) as Effect; + this.singleEvent('End', innateEffect, null, pokemon); + } + }, + onAfterMega(pokemon) { + for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) { + pokemon.removeVolatile(innate); + } + pokemon.m.innates = undefined; + }, }, { - name: "[Gen 9] Ubers UU", - mod: 'gen9', - // searchShow: false, - ruleset: ['[Gen 9] Ubers'], + name: "[Gen 9] 4v4 Doubles UU", + desc: "VGC rules, but only Pokémon that get less than 4.52% usage on the VGC ladder are legal, as well as a few other guidelines.", + ruleset: ['[Gen 9] VGC 2026 Reg F', 'Evasion Abilities Clause', 'Evasion Moves Clause', 'OHKO Clause'], banlist: [ - // Ubers OU - 'Arceus-Normal', 'Arceus-Fairy', 'Arceus-Ghost', 'Arceus-Ground', 'Arceus-Water', 'Calyrex-Ice', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto', - 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina-Origin', 'Glimmora', 'Gliscor', 'Grimmsnarl', 'Groudon', 'Hatterene', 'Ho-Oh', 'Kingambit', 'Koraidon', - 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Ribombee', 'Skeledirge', 'Terapagos', 'Ting-Lu', 'Zacian-Crowned', - // Ubers UUBL + Lunala, Arceus-Ghost, Arceus-Water - 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Giratina', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', - 'Zekrom', + 'Amoonguss', 'Annihilape', 'Arcanine-Hisui', 'Basculegion-M', 'Chi-Yu', 'Chien-Pao', 'Cresselia', 'Dondozo', 'Dragonite', 'Enamorus-Incarnate', 'Farigiraf', 'Flutter Mane', + 'Gholdengo', 'Gouging Fire', 'Incineroar', 'Indeedee-F', 'Iron Crown', 'Landorus-Incarnate', 'Landorus-Therian', 'Ogerpon-Cornerstone', 'Ogerpon-Hearthflame', 'Ogerpon-Wellspring', + 'Porygon2', 'Raging Bolt', 'Regidrago', 'Rillaboom', 'Roaring Moon', 'Sneasler', 'Ting-Lu', 'Torkoal', 'Tornadus-Incarnate', 'Ursaluna-Base', 'Urshifu-Single-Strike', + 'Urshifu-Rapid-Strike', 'Whimsicott', 'Commander', 'Bright Powder', 'King\'s Rock', 'Razor Fang', ], }, { - name: "[Gen 9] National Dex Ubers UU", + name: "[Gen 9] National Dex RU", mod: 'gen9', // searchShow: false, - ruleset: ['[Gen 9] National Dex Ubers'], - banlist: [ - 'Alomomola', 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal', - 'Hatterene', 'Ho-Oh', 'Kingambit', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal', - 'Zacian-Crowned', 'Zygarde-50%', - // UUBL - 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon', - 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects', - ], + ruleset: ['[Gen 9] National Dex UU'], + banlist: ['ND UU', 'ND RUBL', 'Slowbronite'], }, { name: "[Gen 9] Six by Six Random Battle", @@ -718,32 +669,27 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, }, { - name: "[Gen 3] Ubers", - mod: 'gen3', + name: "[Gen 4] Ubers", + mod: 'gen4', // searchShow: false, - ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'], - banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'], + ruleset: ['Standard'], + banlist: ['AG'], }, { - name: "[Gen 1] NC 1997", - mod: 'gen1jpn', - bestOfDefault: true, + name: "[Gen 6] NU", + mod: 'gen6', // searchShow: false, - ruleset: [ - 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155', - 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'Cancel Mod', 'NC 1997 Move Legality', - ], - banlist: ['Uber'], + ruleset: ['[Gen 6] RU'], + banlist: ['RU', 'NUBL'], }, { - name: "[Gen 7] VGC 2019", - mod: 'gen7', + name: "[Gen 4] VGC 2009", + mod: 'gen4pt', gameType: 'doubles', - // searchShow: false, bestOfDefault: true, - ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', 'Limit Two Restricted'], - restricted: ['Restricted Legendary'], - banlist: ['Unown', 'Battle Bond'], + // searchShow: false, + ruleset: ['Flat Rules', '! Adjust Level Down', 'Max Level = 50'], + banlist: ['Tyranitar', 'Rotom', 'Judgment', 'Soul Dew'], }, // Other Metagames @@ -1003,14 +949,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ }, }, }, - { - name: "[Gen 9] 350 Cup", - desc: `Pokemon with a BST of 350 or lower have their stats doubled.`, - mod: 'gen9', - searchShow: false, - ruleset: ['Standard OMs', 'Sleep Moves Clause', '350 Cup Mod', 'Evasion Clause'], - banlist: ['Calyrex-Shadow', 'Flittle', 'Gastly', 'Miraidon', 'Pikachu', 'Rufflet', 'Arena Trap', 'Moody', 'Shadow Tag', 'Eviolite', 'Baton Pass'], - }, { name: "[Gen 9] Alphabet Cup", desc: `Allows Pokémon to use any move that shares the same first letter as their name or a previous evolution's name.`, @@ -1482,6 +1420,21 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], // Implemented the mechanics as a Rule because I'm too lazy to make battles read base format for `onResidual` at the moment }, + { + name: "[Gen 9] Flipped", + desc: `All Pokémon have their base stats flipped. For example, Sylveon's HP and Speed stats, Attack and Special Defense stats, and Defense and Special Attack stats swap.`, + mod: 'gen9', + searchShow: false, + ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'], + banlist: [ + 'Annihilape', 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal', + 'Deoxys-Speed', 'Dialga', 'Dialga-Origin', 'Espathra', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre', + 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', + 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian', + 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass', + 'Last Respects', 'Shed Tail', + ], + }, { name: "[Gen 9] Foresighters", desc: `Moves in the first moveslot will be delayed by two turns.`, @@ -2741,6 +2694,88 @@ export const Formats: import('../sim/dex-formats').FormatList = [ pokemon.apparentType = pokemon.getTypes(true).join('/'); }, }, + { + name: "[Gen 9] The Loser's Game", + desc: `The first player to lose all of their Pokémon wins.`, + mod: 'gen9', + searchShow: false, + ruleset: ['Standard OMs', 'Sleep Clause Mod', '!OHKO Clause', 'Picked Team Size = 6', 'Adjust Level = 100'], + banlist: ['Infiltrator', 'Choice Scarf', 'Explosion', 'Final Gambit', 'Healing Wish', 'Lunar Dance', 'Magic Room', 'Memento', 'Misty Explosion', 'Self-Destruct'], + onValidateTeam(team) { + const familyTable = new Set(); + for (const set of team) { + let species = this.dex.species.get(set.species); + while (species.prevo) { + species = this.dex.species.get(species.prevo); + } + if (familyTable.has(species.id)) { + return [ + `You are limited to one Pokémon from each family by the Family Clause.`, + `(You have more than one evolution of ${species.name}.)`, + ]; + } + familyTable.add(species.id); + } + }, + battle: { + tiebreak() { + if (this.ended) return false; + + this.inputLog.push(`>tiebreak`); + this.add('message', "Time's up! Going to tiebreaker..."); + const notFainted = this.sides.map(side => ( + side.pokemon.filter(pokemon => !pokemon.fainted).length + )); + this.add('-message', this.sides.map((side, i) => ( + `${side.name}: ${notFainted[i]} Pokemon left` + )).join('; ')); + const maxNotFainted = Math.max(...notFainted); + let tiedSides = this.sides.filter((side, i) => notFainted[i] === maxNotFainted); + if (tiedSides.length <= 1) { + return this.win(tiedSides[1]); + } + + const hpPercentage = tiedSides.map(side => ( + side.pokemon.map(pokemon => pokemon.hp / pokemon.maxhp).reduce((a, b) => a + b) * 100 / 6 + )); + this.add('-message', tiedSides.map((side, i) => ( + `${side.name}: ${Math.round(hpPercentage[i])}% total HP left` + )).join('; ')); + const maxPercentage = Math.max(...hpPercentage); + tiedSides = tiedSides.filter((side, i) => hpPercentage[i] === maxPercentage); + if (tiedSides.length <= 1) { + return this.win(tiedSides[1]); + } + + const hpTotal = tiedSides.map(side => ( + side.pokemon.map(pokemon => pokemon.hp).reduce((a, b) => a + b) + )); + this.add('-message', tiedSides.map((side, i) => ( + `${side.name}: ${Math.round(hpTotal[i])} total HP left` + )).join('; ')); + const maxTotal = Math.max(...hpTotal); + tiedSides = tiedSides.filter((side, i) => hpTotal[i] === maxTotal); + if (tiedSides.length <= 1) { + return this.win(tiedSides[1]); + } + return this.tie(); + }, + checkWin(faintData) { + const team1PokemonLeft = this.sides[0].pokemonLeft; + const team2PokemonLeft = this.sides[1].pokemonLeft; + if (!team1PokemonLeft && !team2PokemonLeft) { + this.win(faintData?.target.side || null); + return true; + } + for (const side of this.sides) { + if (!side.pokemonLeft) { + this.win(side); + return true; + } + } + }, + }, + }, { name: "[Gen 9] Tier Shift", desc: `Pokémon below OU get their stats, excluding HP, boosted. UU/RUBL get +15, RU/NUBL get +20, NU/PUBL get +25, and PU or lower get +30.`, @@ -3205,11 +3240,18 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: ['ND OU', 'ND UUBL', 'Drizzle', 'Drought', 'Light Clay'], }, { - name: "[Gen 9] National Dex RU", + name: "[Gen 9] National Dex Ubers UU", mod: 'gen9', searchShow: false, - ruleset: ['[Gen 9] National Dex UU'], - banlist: ['ND UU', 'ND RUBL', 'Slowbronite'], + ruleset: ['[Gen 9] National Dex Ubers'], + banlist: [ + 'Alomomola', 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal', + 'Hatterene', 'Ho-Oh', 'Kingambit', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal', + 'Zacian-Crowned', 'Zygarde-50%', + // UUBL + 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon', + 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects', + ], }, { name: "[Gen 9] National Dex LC", @@ -4552,6 +4594,16 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['[Gen 7] Doubles OU'], banlist: ['DOU', 'DBL'], }, + { + name: "[Gen 7] VGC 2019", + mod: 'gen7', + gameType: 'doubles', + searchShow: false, + bestOfDefault: true, + ruleset: ['Flat Rules', '!! Adjust Level = 50', 'Min Source Gen = 7', 'VGC Timer', 'Limit Two Restricted'], + restricted: ['Restricted Legendary'], + banlist: ['Unown', 'Battle Bond'], + }, { name: "[Gen 7] VGC 2018", mod: 'gen7', @@ -4628,13 +4680,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['[Gen 6] UU'], banlist: ['UU', 'RUBL'], }, - { - name: "[Gen 6] NU", - mod: 'gen6', - searchShow: false, - ruleset: ['[Gen 6] RU'], - banlist: ['RU', 'NUBL'], - }, { name: "[Gen 6] PU", mod: 'gen6', @@ -4982,13 +5027,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ section: "DPP Singles", column: 4, }, - { - name: "[Gen 4] Ubers", - mod: 'gen4', - searchShow: false, - ruleset: ['Standard'], - banlist: ['AG'], - }, { name: "[Gen 4] UU", mod: 'gen4', @@ -5134,15 +5172,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [ } }, }, - { - name: "[Gen 4] VGC 2009", - mod: 'gen4pt', - gameType: 'doubles', - searchShow: false, - bestOfDefault: true, - ruleset: ['Flat Rules', '! Adjust Level Down', 'Max Level = 50'], - banlist: ['Tyranitar', 'Rotom', 'Judgment', 'Soul Dew'], - }, { name: "[Gen 4] Doubles Custom Game", mod: 'gen4', @@ -5162,11 +5191,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ column: 4, }, { - name: "[Gen 3] RU", + name: "[Gen 3] Ubers", mod: 'gen3', searchShow: false, - ruleset: ['Standard'], - banlist: ['Uber', 'OU', 'UUBL', 'UU', 'RUBL', 'Glalie', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'], + ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'], + banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'], }, { name: "[Gen 3] UU", @@ -5175,6 +5204,13 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard'], banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'], }, + { + name: "[Gen 3] RU", + mod: 'gen3', + searchShow: false, + ruleset: ['Standard'], + banlist: ['Uber', 'OU', 'UUBL', 'UU', 'RUBL', 'Glalie', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'], + }, { name: "[Gen 3] NU", mod: 'gen3', @@ -5406,6 +5442,17 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], banlist: ['Mew', 'Mewtwo', 'Bind', 'Clamp', 'Explosion', 'Fire Spin', 'Self-Destruct', 'Wrap'], }, + { + name: "[Gen 1] NC 1997", + mod: 'gen1jpn', + bestOfDefault: true, + searchShow: false, + ruleset: [ + 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155', + 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'Cancel Mod', 'NC 1997 Move Legality', + ], + banlist: ['Uber'], + }, { name: "[Gen 1] Japanese OU", desc: `Generation 1 with Japanese battle mechanics.`, diff --git a/data/aliases.ts b/data/aliases.ts index 72eb6bfa03..d5bd11694f 100644 --- a/data/aliases.ts +++ b/data/aliases.ts @@ -91,10 +91,10 @@ export const Aliases: import('../sim/dex').AliasesTable = { zaou: "[Gen 9] Legends Z-A OU", legendsou: "[Gen 9] Legends Z-A OU", plzaou: "[Gen 9] Legends Z-A OU", - omotm: "[Gen 9] Flipped", - lcotm: "[Gen 9] The Loser's Game", - ommotm: "[Gen 9] STABmons Mix and Mega", - ommspotlight: "[Gen 9] STABmons Mix and Mega", + omotm: "[Gen 9] Linked", + lcotm: "[Gen 9] 350 Cup", + ommotm: "[Gen 9] Pokebilities AAA", + ommspotlight: "[Gen 9] Pokebilities AAA", // mega evos --- 1st ordered alphabetically by species, 2nd by alias megasnow: "Abomasnow-Mega", diff --git a/data/mods/gen8linked/items.ts b/data/mods/gen8linked/items.ts deleted file mode 100644 index 2765c2ed4a..0000000000 --- a/data/mods/gen8linked/items.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { - leppaberry: { - inherit: true, - onUpdate(pokemon) { - if (!pokemon.hp) return; - const moveSlot = pokemon.getMoveData(pokemon.m.lastMoveAbsolute); - if (moveSlot?.pp === 0) { - pokemon.addVolatile('leppaberry'); - pokemon.volatiles['leppaberry'].moveSlot = moveSlot; - pokemon.eatItem(); - } - }, - }, -}; diff --git a/data/mods/gen8linked/conditions.ts b/data/mods/linked/conditions.ts similarity index 82% rename from data/mods/gen8linked/conditions.ts rename to data/mods/linked/conditions.ts index de549ffb2a..014a218bc6 100644 --- a/data/mods/gen8linked/conditions.ts +++ b/data/mods/linked/conditions.ts @@ -21,7 +21,7 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa frz: { inherit: true, onBeforeMove(pokemon, target, move) { - if (move.flags['defrost']) return; + if (move.flags['defrost'] && !(move.id === 'burnup' && !pokemon.hasType('Fire'))) return; if (this.effectState.durationRolled !== this.turn && this.randomChance(1, 5)) { pokemon.cureStatus(); return; @@ -46,17 +46,14 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa } } this.add('-activate', pokemon, 'confusion'); - if (!this.randomChance(1, 3)) { + if (!this.randomChance(33, 100)) { return; } this.activeTarget = pokemon; - const damage = this.actions.getDamage(pokemon, pokemon, 40); + const damage = this.actions.getConfusionDamage(pokemon, 40); if (typeof damage !== 'number') throw new Error("Confusion damage not dealt"); - this.damage(damage, pokemon, pokemon, { - id: 'confused' as ID, - effectType: 'Move', - type: '???', - } as unknown as ActiveMove); + const activeMove = { id: this.toID('confused'), effectType: 'Move', type: '???' }; + this.damage(damage, pokemon, pokemon, activeMove as ActiveMove); return false; }, }, diff --git a/data/mods/gen8linked/moves.ts b/data/mods/linked/moves.ts similarity index 59% rename from data/mods/gen8linked/moves.ts rename to data/mods/linked/moves.ts index 4cf9d26437..e401244c0f 100644 --- a/data/mods/gen8linked/moves.ts +++ b/data/mods/linked/moves.ts @@ -1,35 +1,38 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { pursuit: { inherit: true, - beforeTurnCallback(pokemon, target) { + beforeTurnCallback(pokemon) { // @ts-expect-error modded const linkedMoves: [string, string] = pokemon.getLinkedMoves(); if (linkedMoves.length) { if (linkedMoves[0] !== 'pursuit' && linkedMoves[1] === 'pursuit') return; } - target.side.addSideCondition('pursuit', pokemon); - if (!target.side.sideConditions['pursuit'].sources) { - target.side.sideConditions['pursuit'].sources = []; + for (const target of pokemon.foes()) { + target.addVolatile('pursuit'); + const data = target.volatiles['pursuit']; + if (!data.sources) { + data.sources = []; + } + data.sources.push(pokemon); } - target.side.sideConditions['pursuit'].sources.push(pokemon); }, }, mefirst: { inherit: true, onTryHit(target, pokemon) { const action = this.queue.willMove(target); - if (action) { - // Mod-specific: Me First copies the first move in the link - // @ts-expect-error modded - const move = this.dex.getActiveMove(action.linked?.[0] || action.move); - if (move.category !== 'Status' && !move.flags['failmefirst']) { - pokemon.addVolatile('mefirst'); - this.actions.useMove(move, pokemon, { target }); - return null; - } - } - return false; + if (!action) return false; + // Mod-specific: Me First copies the first move in the link + // @ts-expect-error modded + const move = this.dex.getActiveMove(action.linked?.[0] || action.move.id); + if (action.zmove || move.isZ || move.isMax) return false; + if (target.volatiles['mustrecharge']) return false; + if (move.category === 'Status' || move.flags['failmefirst']) return false; + + pokemon.addVolatile('mefirst'); + this.actions.useMove(move, pokemon, { target }); + return null; }, }, @@ -38,7 +41,9 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { inherit: true, onTry(source, target) { const action = this.queue.willMove(target); - if (!action || action.choice !== 'move') { + if (!action || action.choice !== 'move' || + // @ts-expect-error modded + (!action.linked && action.move.category === 'Status' && action.move.id !== 'mefirst')) { this.attrLastMove('[still]'); this.add('-fail', source); return null; @@ -51,13 +56,67 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { return null; } // @ts-expect-error modded - if (!action.linked) { - if (action.move.category === 'Status' && action.move.id !== 'mefirst') { - this.attrLastMove('[still]'); - this.add('-fail', source); - return null; + if (action.linked) { + // @ts-expect-error modded + for (const linkedMove of action.linked) { + if (linkedMove.category !== 'Status' || linkedMove.id === 'mefirst') return; } - } else { + this.attrLastMove('[still]'); + this.add('-fail', source); + return null; + } + }, + }, + thunderclap: { + inherit: true, + onTry(source, target) { + const action = this.queue.willMove(target); + if (!action || action.choice !== 'move' || + // @ts-expect-error modded + (!action.linked && action.move.category === 'Status' && action.move.id !== 'mefirst')) { + this.attrLastMove('[still]'); + this.add('-fail', source); + return null; + } + if (target.volatiles.mustrecharge && target.volatiles.mustrecharge.duration! < 2) { + // Duration may not be lower than 2 if Sucker Punch is used as a low-priority move + // i.e. if Sucker Punch is linked with a negative priority move + this.attrLastMove('[still]'); + this.add('-fail', source); + return null; + } + // @ts-expect-error modded + if (action.linked) { + // @ts-expect-error modded + for (const linkedMove of action.linked) { + if (linkedMove.category !== 'Status' || linkedMove.id === 'mefirst') return; + } + this.attrLastMove('[still]'); + this.add('-fail', source); + return null; + } + }, + }, + upperhand: { + inherit: true, + onTry(source, target) { + const action = this.queue.willMove(target); + if (!action || action.choice !== 'move' || action.move.priority < 0.1 || + // @ts-expect-error modded + (!action.linked && action.move.category === 'Status' && action.move.id !== 'mefirst')) { + this.attrLastMove('[still]'); + this.add('-fail', source); + return null; + } + if (target.volatiles.mustrecharge && target.volatiles.mustrecharge.duration! < 2) { + // Duration may not be lower than 2 if Sucker Punch is used as a low-priority move + // i.e. if Sucker Punch is linked with a negative priority move + this.attrLastMove('[still]'); + this.add('-fail', source); + return null; + } + // @ts-expect-error modded + if (action.linked) { // @ts-expect-error modded for (const linkedMove of action.linked) { if (linkedMove.category !== 'Status' || linkedMove.id === 'mefirst') return; @@ -73,13 +132,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { sketch: { inherit: true, onHit(target, source) { - const disallowedMoves = ['chatter', 'sketch', 'struggle']; - const lastMove: Move = target.m.lastMoveAbsolute; - if (source.transformed || !lastMove || disallowedMoves.includes(lastMove.id) || - source.moves.includes(lastMove.id) || lastMove.isZ) return false; + const move = target.m.lastMoveAbsolute; + if (source.transformed || !move || source.moves.includes(move.id)) return false; + if (move.flags['nosketch'] || move.isZ || move.isMax) return false; const sketchIndex = source.moves.indexOf('sketch'); if (sketchIndex < 0) return false; - const move = this.dex.moves.get(lastMove); const sketchedMove = { move: move.name, id: move.id, @@ -97,12 +154,14 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { mimic: { inherit: true, onHit(target, source) { - const lastMove: Move = target.m.lastMoveAbsolute; - if (source.transformed || !lastMove || lastMove.flags['failmimic'] || - source.moves.includes(lastMove.id) || lastMove.isZ) return false; + const move = target.m.lastMoveAbsolute; + if (source.transformed || !move || move.flags['failmimic'] || source.moves.includes(move.id)) { + return false; + } + if (move.isZ || move.isMax) return false; const mimicIndex = source.moves.indexOf('mimic'); if (mimicIndex < 0) return false; - const move = this.dex.moves.get(lastMove); + source.moveSlots[mimicIndex] = { move: move.name, id: move.id, @@ -121,25 +180,30 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { instruct: { inherit: true, onHit(target, source) { - const lastMove: Move | ActiveMove | null = target.m.lastMoveAbsolute; + const lastMove = target.m.lastMoveAbsolute; if (!lastMove || target.volatiles['dynamax']) return false; - const moveIndex = target.moves.indexOf(lastMove.id); + const moveSlot = target.getMoveData(lastMove.id); if ( lastMove.flags['failinstruct'] || lastMove.isZ || lastMove.isMax || lastMove.flags['charge'] || lastMove.flags['recharge'] || target.volatiles['beakblast'] || target.volatiles['focuspunch'] || target.volatiles['shelltrap'] || - (target.moveSlots[moveIndex] && target.moveSlots[moveIndex].pp <= 0) + (moveSlot && moveSlot.pp <= 0) ) { return false; } this.add('-singleturn', target, 'move: Instruct', `[of] ${source}`); - this.actions.runMove(lastMove.id, target, target.lastMoveTargetLoc!); + this.queue.prioritizeAction(this.queue.resolveAction({ + choice: 'move', + pokemon: target, + moveid: lastMove.id, + targetLoc: target.lastMoveTargetLoc!, + })[0] as MoveAction); }, }, mirrormove: { inherit: true, onTryHit(target, pokemon) { - const move: Move | ActiveMove | null = target.m.lastMoveAbsolute; + const move = target.m.lastMoveAbsolute; if (!move?.flags['mirror'] || move.isZ || move.isMax) { return false; } @@ -155,15 +219,16 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { duration: 5, noCopy: true, // doesn't get copied by Baton Pass onStart(pokemon, source, effect) { - const lastMove: Move | ActiveMove | null = pokemon.m.lastMoveAbsolute; + // The target hasn't taken its turn, or Cursed Body activated and the move was not used through Dancer or Instruct if ( this.queue.willMove(pokemon) || (pokemon === this.activePokemon && this.activeMove && !this.activeMove.isExternal) ) { this.effectState.duration!--; } + const lastMove = pokemon.m.lastMoveAbsolute; if (!lastMove) { - this.debug('pokemon hasn\'t moved yet'); + this.debug(`Pokemon hasn't moved yet`); return false; } for (const moveSlot of pokemon.moveSlots) { @@ -171,18 +236,15 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { if (!moveSlot.pp) { this.debug('Move out of PP'); return false; - } else { - if (effect.id === 'cursedbody') { - this.add('-start', pokemon, 'Disable', moveSlot.move, '[from] ability: Cursed Body', `[of] ${source}`); - } else { - this.add('-start', pokemon, 'Disable', moveSlot.move); - } - this.effectState.move = lastMove.id; - return; } } } - return false; + if (effect.effectType === 'Ability') { + this.add('-start', pokemon, 'Disable', lastMove.name, '[from] ability: ' + effect.name, `[of] ${source}`); + } else { + this.add('-start', pokemon, 'Disable', lastMove.name); + } + this.effectState.move = lastMove.id; }, onResidualOrder: 14, onEnd(pokemon) { @@ -190,7 +252,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, onBeforeMovePriority: 7, onBeforeMove(attacker, defender, move) { - if (!move.isZ && move.id === this.effectState.move) { + if (!(move.isZ && move.isZOrMaxPowered) && move.id === this.effectState.move) { this.add('cant', attacker, 'Disable', move); return false; } @@ -210,28 +272,26 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { duration: 3, noCopy: true, // doesn't get copied by Z-Baton Pass onStart(target) { - let lastMove: Move | ActiveMove | null = target.m.lastMoveAbsolute; - if (!lastMove || target.volatiles['dynamax']) return false; - if ((lastMove as ActiveMove).isZOrMaxPowered) lastMove = this.dex.moves.get(lastMove.baseMove); + let move: Move | ActiveMove | null = target.m.lastMoveAbsolute; + if (!move || target.volatiles['dynamax']) return false; + // Encore only works on Max Moves if the base move is not itself a Max Move + if (move.isMax && move.baseMove) move = this.dex.moves.get(move.baseMove); // @ts-expect-error modded const linkedMoves: [string, string] = target.getLinkedMoves(true); - const moveIndex = target.moves.indexOf(lastMove.id); - if (linkedMoves.includes(lastMove.id) && this.dex.moves.get((linkedMoves[0])).flags['failencore'] && - this.dex.moves.get((linkedMoves[1])).flags['failencore']) { + const moveSlot = target.getMoveData(move.id); + if (linkedMoves.includes(move.id) && linkedMoves.every(m => !!this.dex.moves.get(m).flags['failencore'])) { // both moves cannot be encored delete target.volatiles['encore']; return false; } - if (lastMove.isZ || lastMove.flags['failencore'] || - (target.moveSlots[moveIndex] && target.moveSlots[moveIndex].pp <= 0)) { + if (move.isZ || move.isMax || move.flags['failencore'] || !moveSlot || moveSlot.pp <= 0) { // it failed - delete target.volatiles['encore']; return false; } - this.effectState.turnsActivated = {}; - this.effectState.move = lastMove.id; + this.effectState.timesActivated = {}; + this.effectState.move = move.id; this.add('-start', target, 'Encore'); - if (linkedMoves.includes(lastMove.id)) { + if (linkedMoves.includes(move.id)) { this.effectState.move = linkedMoves; } if (!this.queue.willMove(target)) { @@ -239,51 +299,50 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { } }, onOverrideAction(pokemon, target, move) { - if (!this.effectState.turnsActivated[this.turn]) { + if (!this.effectState.timesActivated[this.turn]) { // Initialize Encore effect for this turn - this.effectState.turnsActivated[this.turn] = 0; - } else if ( - this.effectState.turnsActivated[this.turn] >= (Array.isArray(this.effectState.move) ? - this.effectState.move.length : 1)) { + this.effectState.timesActivated[this.turn] = 0; + } else if (this.effectState.timesActivated[this.turn] >= (Array.isArray(this.effectState.move) ? + this.effectState.move.length : 1)) { // Finish Encore effect for this turn return; } - this.effectState.turnsActivated[this.turn]++; + this.effectState.timesActivated[this.turn]++; if (!Array.isArray(this.effectState.move)) { this.queue.cancelAction(pokemon); if (move.id !== this.effectState.move) return this.effectState.move; - return; - } - + } else { // Locked into a link - switch (this.effectState.turnsActivated[this.turn]) { - case 1: { - if (this.effectState.move[0] !== move.id) return this.effectState.move[0]; - return; - } - case 2: - if (this.effectState.move[1] !== move.id) return this.effectState.move[1]; - return; + switch (this.effectState.timesActivated[this.turn]) { + case 1: { + if (this.effectState.move[0] !== move.id) return this.effectState.move[0]; + return; + } + case 2: + if (this.effectState.move[1] !== move.id) return this.effectState.move[1]; + return; + } } }, onResidualOrder: 13, onResidual(target) { // early termination if you run out of PP const lastMove = target.m.lastMoveAbsolute; - const index = target.moves.indexOf(lastMove.id); - if (index === -1) return; // no last move + const moveSlot = target.getMoveData(lastMove); + if (!moveSlot) { + target.removeVolatile('encore'); + return; // no last move + } // @ts-expect-error modded if (target.hasLinkedMove(lastMove.id)) { // TODO: Check instead whether the last executed move was linked if (target.moveSlots[0].pp <= 0 || target.moveSlots[1].pp <= 0) { - delete target.volatiles.encore; - this.add('-end', target, 'Encore'); + target.removeVolatile('encore'); } } else { - if (target.moveSlots[index].pp <= 0) { - delete target.volatiles.encore; - this.add('-end', target, 'Encore'); + if (moveSlot.pp <= 0) { + target.removeVolatile('encore'); } } }, @@ -313,22 +372,25 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { inherit: true, condition: { noCopy: true, - onStart(pokemon) { + onStart(pokemon, source, effect) { if (pokemon.volatiles['dynamax']) { delete pokemon.volatiles['torment']; return false; } + if (effect?.id === 'gmaxmeltdown') this.effectState.duration = 3; this.add('-start', pokemon, 'Torment'); }, onEnd(pokemon) { this.add('-end', pokemon, 'Torment'); }, onDisableMove(pokemon) { - const lastMove = pokemon.lastMove; + const lastMove = pokemon.m.lastMoveAbsolute; if (!lastMove || lastMove.id === 'struggle') return; - if (Array.isArray(lastMove)) { - for (const move of lastMove) { + // @ts-expect-error + if (pokemon.hasLinkedMove(lastMove.id)) { + // @ts-expect-error + for (const move of pokemon.getLinkedMoves()) { pokemon.disableMove(move.id); } } else { @@ -347,12 +409,13 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { }, onFaint(target, source, effect) { if (!source || source.fainted || !effect) return; - const lastMove: Move | ActiveMove | null = source.m.lastMoveAbsolute; - if (effect.effectType === 'Move' && !effect.flags['futuremove'] && lastMove) { + let move = source.m.lastMoveAbsolute; + if (effect.effectType === 'Move' && !effect.flags['futuremove'] && move) { + if (move.isMax && move.baseMove) move = this.dex.moves.get(move.baseMove); for (const moveSlot of source.moveSlots) { - if (moveSlot.id === lastMove.id) { + if (moveSlot.id === move.id) { moveSlot.pp = 0; - this.add('-activate', source, 'move: Grudge', this.dex.moves.get(lastMove.id).name); + this.add('-activate', source, 'move: Grudge', move.name); } } } @@ -368,11 +431,13 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { spite: { inherit: true, onHit(target) { - const lastMove: Move | ActiveMove | null = target.m.lastMoveAbsolute; - if (!lastMove || lastMove.isZ || lastMove.isMax) return false; - const ppDeducted = target.deductPP(lastMove.id, 4); + let move: Move | ActiveMove | null = target.m.lastMoveAbsolute; + if (!move || move.isZ) return false; + if (move.isMax && move.baseMove) move = this.dex.moves.get(move.baseMove); + + const ppDeducted = target.deductPP(move.id, 4); if (!ppDeducted) return false; - this.add("-activate", target, 'move: Spite', lastMove.name, ppDeducted); + this.add("-activate", target, 'move: Spite', move.name, ppDeducted); }, }, @@ -407,7 +472,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { this.add('-singlemove', pokemon, 'Destiny Bond'); }, onFaint(target, source, effect) { - if (!source || !effect || target.side === source.side) return; + if (!source || !effect || target.isAlly(source)) return; if (effect.effectType === 'Move' && !effect.flags['futuremove']) { if (source.volatiles['dynamax']) { this.add('-hint', "Dynamaxed Pokémon are immune to Destiny Bond."); diff --git a/data/mods/gen8linked/scripts.ts b/data/mods/linked/scripts.ts similarity index 88% rename from data/mods/gen8linked/scripts.ts rename to data/mods/linked/scripts.ts index 7a9766829f..2d03e008f7 100644 --- a/data/mods/gen8linked/scripts.ts +++ b/data/mods/linked/scripts.ts @@ -1,6 +1,5 @@ export const Scripts: ModdedBattleScriptsData = { - inherit: 'gen8', - gen: 8, + gen: 9, getActionSpeed(action) { if (action.choice === 'move') { let move = action.move; @@ -106,8 +105,9 @@ export const Scripts: ModdedBattleScriptsData = { // @ts-expect-error modded const linkedMoves: ActiveMove[] = action.linked; for (let i = linkedMoves.length - 1; i >= 0; i--) { - const validTarget = this.validTargetLoc(action.targetLoc, action.pokemon, linkedMoves[i].target); - const targetLoc = validTarget ? action.targetLoc : 0; + const isValidTarget = this.validTargetLoc(action.targetLoc, action.pokemon, linkedMoves[i].target); + const targetLoc = isValidTarget ? action.targetLoc : + action.pokemon.getLocOf(this.getRandomTarget(action.pokemon, linkedMoves[i])!); const pseudoAction: Action = { choice: 'move', priority: action.priority, speed: action.speed, pokemon: action.pokemon, targetLoc, moveid: linkedMoves[i].id, move: linkedMoves[i], mega: action.mega, @@ -334,15 +334,12 @@ export const Scripts: ModdedBattleScriptsData = { // THIS IS PURELY A SANITY CHECK // DO NOT TAKE ADVANTAGE OF THIS TO PREVENT A POKEMON FROM MOVING; // USE this.queue.cancelMove INSTEAD - this.debug(`${pokemon.id} INCONSISTENT STATE, ALREADY MOVED: ${pokemon.moveThisTurn}`); - this.clearActiveMove(true); + this.battle.debug(`${pokemon.id} INCONSISTENT STATE, ALREADY MOVED: ${pokemon.moveThisTurn}`); + this.battle.clearActiveMove(true); return; - } */ + } */ const willTryMove = this.battle.runEvent('BeforeMove', pokemon, target, move); if (!willTryMove) { - if (pokemon.volatiles['twoturnmove']?.move === move.id) { - pokemon.removeVolatile('twoturnmove'); - } this.battle.runEvent('MoveAborted', pokemon, target, move); this.battle.clearActiveMove(true); // The event 'BeforeMove' could have returned false or null @@ -351,6 +348,12 @@ export const Scripts: ModdedBattleScriptsData = { pokemon.moveThisTurnResult = willTryMove; return; } + + // Used exclusively for a hint later + if (move.flags['cantusetwice'] && pokemon.m.lastMoveAbsolute?.id === move.id) { + pokemon.addVolatile(move.id); + } + if (move.beforeMoveCallback) { if (move.beforeMoveCallback.call(this.battle, pokemon, target, move)) { this.battle.clearActiveMove(true); @@ -366,10 +369,6 @@ export const Scripts: ModdedBattleScriptsData = { if (!lockedMove) { if (!pokemon.deductPP(baseMove, null, target) && (move.id !== 'struggle')) { this.battle.add('cant', pokemon, 'nopp', move); - const gameConsole = [ - null, 'Game Boy', 'Game Boy Color', 'Game Boy Advance', 'DS', 'DS', '3DS', '3DS', - ][this.battle.gen] || 'Switch'; - this.battle.hint(`This is not a bug, this is really how it works on the ${gameConsole}; try it yourself if you don't believe us.`); this.battle.clearActiveMove(true); pokemon.moveThisTurnResult = false; return; @@ -382,7 +381,7 @@ export const Scripts: ModdedBattleScriptsData = { // Dancer Petal Dance hack // TODO: implement properly - const noLock = externalMove && !pokemon.volatiles.lockedmove; + const noLock = externalMove && !pokemon.volatiles['lockedmove']; if (zMove) { if (pokemon.illusion) { @@ -391,12 +390,19 @@ export const Scripts: ModdedBattleScriptsData = { this.battle.add('-zpower', pokemon); pokemon.side.zMoveUsed = true; } + + const oldActiveMove = move; + const moveDidSomething = this.useMove(baseMove, pokemon, { target, sourceEffect, zMove, maxMove }); this.battle.lastSuccessfulMoveThisTurn = moveDidSomething ? this.battle.activeMove && this.battle.activeMove.id : null; if (this.battle.activeMove) move = this.battle.activeMove; this.battle.singleEvent('AfterMove', move, null, pokemon, target, move); this.battle.runEvent('AfterMove', pokemon, target, move); + if (move.flags['cantusetwice'] && pokemon.removeVolatile(move.id)) { + this.battle.add('-hint', `Some effects can force a Pokemon to use ${move.name} again in a row.`); + } + // TODO: Refactor to use BattleQueue#prioritizeAction in onAnyAfterMove handlers // Dancer's activation order is completely different from any other event, so it's handled separately if (move.flags['dance'] && moveDidSomething && !move.isExternal) { const dancers = []; @@ -410,20 +416,29 @@ export const Scripts: ModdedBattleScriptsData = { // Note that the speed stat used is after any volatile replacements like Speed Swap, // but before any multipliers like Agility or Choice Scarf // Ties go to whichever Pokemon has had the ability for the least amount of time - dancers.sort((a, b) => -(b.storedStats['spe'] - a.storedStats['spe']) || - b.abilityState.effectOrder - a.abilityState.effectOrder); + dancers.sort( + (a, b) => -(b.storedStats['spe'] - a.storedStats['spe']) || b.abilityState.effectOrder - a.abilityState.effectOrder + ); + const targetOf1stDance = this.battle.activeTarget!; for (const dancer of dancers) { if (this.battle.faintMessages()) break; if (dancer.fainted) continue; this.battle.add('-activate', dancer, 'ability: Dancer'); - const dancersTarget = !target!.isAlly(dancer) && pokemon.isAlly(dancer) ? target! : pokemon; - this.runMove(move.id, dancer, dancer.getLocOf(dancersTarget), - { sourceEffect: this.dex.abilities.get('dancer'), externalMove: true }); + const dancersTarget = !targetOf1stDance.isAlly(dancer) && pokemon.isAlly(dancer) ? + targetOf1stDance : + pokemon; + const dancersTargetLoc = dancer.getLocOf(dancersTarget); + this.runMove(move.id, dancer, dancersTargetLoc, { sourceEffect: this.dex.abilities.get('dancer'), externalMove: true }); } } if (noLock && pokemon.volatiles['lockedmove']) delete pokemon.volatiles['lockedmove']; this.battle.faintMessages(); this.battle.checkWin(); + + if (this.battle.gen <= 4) { + // In gen 4, the outermost move is considered the last move for Copycat + this.battle.activeMove = oldActiveMove; + } }, }, queue: { @@ -441,13 +456,16 @@ export const Scripts: ModdedBattleScriptsData = { instaswitch: 3, beforeTurn: 4, beforeTurnMove: 5, + revivalblessing: 6, - runUnnerve: 100, runSwitch: 101, - // runPrimal: 102, (deprecated) switch: 103, megaEvo: 104, + megaEvoX: 104, + megaEvoY: 104, runDynamax: 105, + terastallize: 106, + priorityChargeMove: 107, shift: 200, // default is 200 (for moves) @@ -476,12 +494,37 @@ export const Scripts: ModdedBattleScriptsData = { pokemon: action.pokemon, })); } + if (action.megax && !action.pokemon.isSkyDropped()) { + actions.unshift(...this.resolveAction({ + choice: 'megaEvoX', + pokemon: action.pokemon, + })); + } + if (action.megay && !action.pokemon.isSkyDropped()) { + actions.unshift(...this.resolveAction({ + choice: 'megaEvoY', + pokemon: action.pokemon, + })); + } + if (action.terastallize && !action.pokemon.terastallized) { + actions.unshift(...this.resolveAction({ + choice: 'terastallize', + pokemon: action.pokemon, + })); + } if (action.maxMove && !action.pokemon.volatiles['dynamax']) { actions.unshift(...this.resolveAction({ choice: 'runDynamax', pokemon: action.pokemon, })); } + if (!action.maxMove && !action.zmove && action.move.priorityChargeCallback) { + actions.unshift(...this.resolveAction({ + choice: 'priorityChargeMove', + pokemon: action.pokemon, + move: action.move, + })); + } action.fractionalPriority = this.battle.runEvent('FractionalPriority', action.pokemon, null, action.move, 0); const linkedMoves: [string, string] = action.pokemon.getLinkedMoves(); if ( From 261dcddca6a0f76b114a13206a5313ac9305462d Mon Sep 17 00:00:00 2001 From: demir Date: Sun, 1 Mar 2026 13:19:50 +0300 Subject: [PATCH 130/139] 35 Pokes: Update list of allowed Pokemon for March 2026 (#11784) --- config/formats.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index a04fa483f6..5d1e9281c9 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3204,10 +3204,10 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Razor Fang', 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin', 'Baton Pass + Well-Baked Body', ], unbanlist: [ - 'Articuno-Galar', 'Aurorus', 'Bellossom', 'Bewear', 'Blastoise-Base', 'Dodrio', 'Entei', 'Falinks-Base', 'Flygon', 'Furret', 'Goodra-Hisui', - 'Gumshoos-Base', 'Heliolisk', 'Hydrapple', 'Indeedee-F', 'Iron Thorns', 'Leavanny', 'Lickilicky', 'Ludicolo', 'Maractus', 'Meganium-Base', - 'Polteageist', 'Probopass', 'Regieleki', 'Rhyperior', 'Seismitoad', 'Shiinotic', 'Slaking', 'Spidops', 'Spiritomb', 'Unfezant', 'Vanilluxe', - 'Victreebel-Base', 'Weezing-Galar', 'Wyrdeer', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', 'Yawn', + 'Aerodactyl-Base', 'Arctozolt', 'Armaldo', 'Armarouge', 'Bronzong', 'Centiskorch', 'Cherrim-Base', 'Cyclizar', 'Dhelmise', 'Dondozo', + 'Drakloak', 'Empoleon', 'Glaceon', 'Golduck', 'Gyarados-Base', 'Jellicent', 'Jumpluff', 'Kecleon', 'Kilowattrel', 'Kingdra', 'Lunatone', + 'Musharna', 'Noivern', 'Palossand', 'Pincurchin', 'Reuniclus', 'Revavroom', 'Sandslash-Alola', 'Snorlax', 'Solrock', 'Stonjourner', + 'Tyranitar-Base', 'Vaporeon', 'Virizion', 'Wigglytuff', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', 'Yawn', ], // Stupid hardcode onValidateSet(set, format, setHas, teamHas) { From 1d8968acdf011351c454021965561f851fe3dcc2 Mon Sep 17 00:00:00 2001 From: livid washed <115855253+livid-washed@users.noreply.github.com> Date: Sun, 1 Mar 2026 21:20:05 +1100 Subject: [PATCH 131/139] Randomized formats update (#11782) * Randomized set updates * fix some things * add resttalk primarina gen 7 * Create Pokemon incompability system * Simplify code * tghost oinkolognes * Give sash back to doubles smeargle * Give sash back to doubles smeargle --- data/random-battles/gen2/sets.json | 8 +- data/random-battles/gen2/teams.ts | 28 ++++ data/random-battles/gen3/sets.json | 21 ++- data/random-battles/gen3/teams.ts | 36 +++- data/random-battles/gen4/sets.json | 2 +- data/random-battles/gen4/teams.ts | 32 +++- data/random-battles/gen5/sets.json | 35 ++-- data/random-battles/gen5/teams.ts | 40 ++++- data/random-battles/gen6/sets.json | 44 ++--- data/random-battles/gen6/teams.ts | 3 +- data/random-battles/gen7/sets.json | 65 ++++---- data/random-battles/gen7/teams.ts | 60 ++++++- data/random-battles/gen8/teams.ts | 2 +- data/random-battles/gen9/doubles-sets.json | 182 +++++++++++++-------- data/random-battles/gen9/sets.json | 48 +++--- data/random-battles/gen9/teams.ts | 96 ++++++++++- sim/global-types.ts | 1 + 17 files changed, 505 insertions(+), 198 deletions(-) diff --git a/data/random-battles/gen2/sets.json b/data/random-battles/gen2/sets.json index 8d1d325055..f119307e27 100644 --- a/data/random-battles/gen2/sets.json +++ b/data/random-battles/gen2/sets.json @@ -450,7 +450,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["explosion", "icebeam", "rapidspin", "spikes", "surf", "toxic"] + "movepool": ["explosion", "icebeam", "spikes", "surf"] }, { "role": "Generalist", @@ -1360,11 +1360,7 @@ "sets": [ { "role": "Generalist", - "movepool": ["haze", "hydropump", "rest", "sleeptalk", "sludgebomb", "spikes"] - }, - { - "role": "Bulky Setup", - "movepool": ["curse", "hiddenpowerground", "hydropump", "sludgebomb", "spikes"] + "movepool": ["curse", "haze", "hydropump", "sludgebomb", "spikes"] } ] }, diff --git a/data/random-battles/gen2/teams.ts b/data/random-battles/gen2/teams.ts index 36022fc378..5e90da3e81 100644 --- a/data/random-battles/gen2/teams.ts +++ b/data/random-battles/gen2/teams.ts @@ -473,6 +473,7 @@ export class RandomGen2Teams extends RandomGen3Teams { return { name: species.baseSpecies, species: forme, + speciesId: species.id, level, moves: shuffledMoves, ability: 'No Ability', @@ -485,6 +486,33 @@ export class RandomGen2Teams extends RandomGen3Teams { gender: species.gender ? species.gender : 'M', }; } + + /** + * Checks if the new species is compatible with the other mons currently on the team. + */ + override getPokemonCompatibility( + species: Species, + pokemon: RandomTeamsTypes.RandomSet[], + ): boolean { + const spikesSetters = ['cloyster', 'delibird', 'qwilfish', 'forretress', 'smeargle']; + const incompatibilityList = [ + // These combinations are prevented to avoid double spikes. + [spikesSetters, spikesSetters], + ]; + + for (const pair of incompatibilityList) { + const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]]; + const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]]; + if (monsArrayB.includes(species.id)) { + if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false; + } + if (monsArrayA.includes(species.id)) { + if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false; + } + } + + return true; + } } export default RandomGen2Teams; diff --git a/data/random-battles/gen3/sets.json b/data/random-battles/gen3/sets.json index 4549e95064..0274430dd1 100644 --- a/data/random-battles/gen3/sets.json +++ b/data/random-battles/gen3/sets.json @@ -188,9 +188,14 @@ "level": 82, "sets": [ { - "role": "Wallbreaker", + "role": "Fast Attacker", "movepool": ["earthquake", "fireblast", "icebeam", "shadowball", "sludgebomb", "substitute", "thunderbolt"], "abilities": ["Poison Point"] + }, + { + "role": "Wallbreaker", + "movepool": ["earthquake", "fireblast", "icebeam", "rockslide", "shadowball", "sludgebomb"], + "abilities": ["Poison Point"] } ] }, @@ -198,9 +203,14 @@ "level": 82, "sets": [ { - "role": "Wallbreaker", + "role": "Fast Attacker", "movepool": ["earthquake", "fireblast", "icebeam", "megahorn", "shadowball", "sludgebomb", "substitute", "thunderbolt"], "abilities": ["Poison Point"] + }, + { + "role": "Wallbreaker", + "movepool": ["earthquake", "fireblast", "icebeam", "megahorn", "rockslide", "shadowball", "sludgebomb"], + "abilities": ["Poison Point"] } ] }, @@ -608,6 +618,11 @@ "role": "Setup Sweeper", "movepool": ["doubleedge", "hiddenpowerghost", "hiddenpowerground", "surf", "swordsdance"], "abilities": ["Hyper Cutter"] + }, + { + "role": "Bulky Setup", + "movepool": ["doubleedge", "hiddenpowerghost", "mudshot", "swordsdance"], + "abilities": ["Hyper Cutter"] } ] }, @@ -1544,7 +1559,7 @@ }, { "role": "Wallbreaker", - "movepool": ["doubleedge", "earthquake", "protect", "psychic", "return", "shadowball", "thunderbolt", "thunderwave", "toxic", "wish"], + "movepool": ["doubleedge", "earthquake", "protect", "psychic", "return", "thunderwave", "toxic", "wish"], "abilities": ["Early Bird"] } ] diff --git a/data/random-battles/gen3/teams.ts b/data/random-battles/gen3/teams.ts index 6c229c924b..c260b28708 100644 --- a/data/random-battles/gen3/teams.ts +++ b/data/random-battles/gen3/teams.ts @@ -618,6 +618,7 @@ export class RandomGen3Teams extends RandomGen4Teams { return { name: species.baseSpecies, species: forme, + speciesId: species.id, gender: species.gender, shiny: this.randomChance(1, 1024), level, @@ -630,6 +631,35 @@ export class RandomGen3Teams extends RandomGen4Teams { }; } + /** + * Checks if the new species is compatible with the other mons currently on the team. + */ + override getPokemonCompatibility( + species: Species, + pokemon: RandomTeamsTypes.RandomSet[], + ): boolean { + const incompatibilityList = [ + // These Pokemon are incompatible because the presence of one actively harms the other. + // Prevent Shedinja + Tyranitar + ['shedinja', 'tyranitar'], + // Prevent Reversal/Flail users + Tyranitar + [['dodrio', 'raticate', 'primeape', 'hitmonlee', 'furret', 'yanma', 'heracross', 'blaziken', 'medicham'], 'tyranitar'], + ]; + + for (const pair of incompatibilityList) { + const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]]; + const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]]; + if (monsArrayB.includes(species.id)) { + if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false; + } + if (monsArrayA.includes(species.id)) { + if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false; + } + } + + return true; + } + override randomTeam() { this.enforceNoDirectCustomBanlistChanges(); @@ -659,9 +689,6 @@ export class RandomGen3Teams extends RandomGen4Teams { // Limit to one of each species (Species Clause) if (baseFormes[species.baseSpecies]) continue; - // Prevent Shedinja from generating after Tyranitar - if (species.name === 'Shedinja' && teamDetails.sand) continue; - // Limit to one Wobbuffet per battle (not just per team) if (species.name === 'Wobbuffet' && this.battleHasWobbuffet) continue; // Limit to one Ditto per battle in Gen 2 @@ -707,6 +734,9 @@ export class RandomGen3Teams extends RandomGen4Teams { if (!this.adjustLevel && (this.getLevel(species) === 100) && numMaxLevelPokemon >= limitFactor) { continue; } + + // Check compatibility with team + if (!this.getPokemonCompatibility(species, pokemon)) continue; } // Okay, the set passes, add it to our team diff --git a/data/random-battles/gen4/sets.json b/data/random-battles/gen4/sets.json index c9a7112bb5..1b94aa0a29 100644 --- a/data/random-battles/gen4/sets.json +++ b/data/random-battles/gen4/sets.json @@ -1512,7 +1512,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["earthquake", "hypnosis", "megahorn", "return", "suckerpunch", "thunderbolt"], + "movepool": ["doubleedge", "earthquake", "hypnosis", "megahorn", "return", "suckerpunch", "thunderbolt", "thunderwave"], "abilities": ["Intimidate"], "preferredTypes": ["Ground"] } diff --git a/data/random-battles/gen4/teams.ts b/data/random-battles/gen4/teams.ts index 66ebe587c3..beadb292ca 100644 --- a/data/random-battles/gen4/teams.ts +++ b/data/random-battles/gen4/teams.ts @@ -210,7 +210,7 @@ export class RandomGen4Teams extends RandomGen5Teams { for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); - const statusInflictingMoves = ['stunspore', 'thunderwave', 'toxic', 'willowisp', 'yawn']; + const statusInflictingMoves = ['hypnosis', 'stunspore', 'thunderwave', 'toxic', 'willowisp', 'yawn']; if (role !== 'Staller') { this.incompatibleMoves(moves, movePool, statusInflictingMoves, statusInflictingMoves); } @@ -766,6 +766,7 @@ export class RandomGen4Teams extends RandomGen5Teams { return { name: species.baseSpecies, species: forme, + speciesId: species.id, gender: species.gender, shiny: this.randomChance(1, 1024), level, @@ -777,6 +778,35 @@ export class RandomGen4Teams extends RandomGen5Teams { role, }; } + + /** + * Checks if the new species is compatible with the other mons currently on the team. + */ + override getPokemonCompatibility( + species: Species, + pokemon: RandomTeamsTypes.RandomSet[], + ): boolean { + const incompatibilityList = [ + // These Pokemon are incompatible because the presence of one actively harms the other. + // Prevent Dry Skin + sun setting ability + [['parasect', 'toxicroak'], 'groudon'], + // Prevent Shedinja + sand/hail setting ability + ['shedinja', ['tyranitar', 'hippowdon', 'abomasnow']], + ]; + + for (const pair of incompatibilityList) { + const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]]; + const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]]; + if (monsArrayB.includes(species.id)) { + if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false; + } + if (monsArrayA.includes(species.id)) { + if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false; + } + } + + return true; + } } export default RandomGen4Teams; diff --git a/data/random-battles/gen5/sets.json b/data/random-battles/gen5/sets.json index acee027540..53315306f1 100644 --- a/data/random-battles/gen5/sets.json +++ b/data/random-battles/gen5/sets.json @@ -458,20 +458,15 @@ "level": 83, "sets": [ { - "role": "Bulky Support", + "role": "Bulky Attacker", "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], - "abilities": ["Regenerator"] + "abilities": ["Regenerator"], + "preferredTypes": ["Psychic"] }, { "role": "Staller", "movepool": ["calmmind", "psyshock", "scald", "slackoff"], "abilities": ["Regenerator"] - }, - { - "role": "Wallbreaker", - "movepool": ["fireblast", "icebeam", "psyshock", "surf", "trick", "trickroom"], - "abilities": ["Regenerator"], - "preferredTypes": ["Psychic"] } ] }, @@ -1274,13 +1269,8 @@ "level": 83, "sets": [ { - "role": "Bulky Support", + "role": "Bulky Attacker", "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], - "abilities": ["Regenerator"] - }, - { - "role": "Wallbreaker", - "movepool": ["fireblast", "icebeam", "psyshock", "surf", "trick", "trickroom"], "abilities": ["Regenerator"], "preferredTypes": ["Psychic"] } @@ -1397,7 +1387,7 @@ "sets": [ { "role": "Fast Support", - "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], + "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], "abilities": ["Intimidate"] } ] @@ -1579,7 +1569,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["doubleedge", "earthquake", "hypnosis", "jumpkick", "megahorn", "suckerpunch", "thunderwave"], + "movepool": ["doubleedge", "earthquake", "hypnosis", "jumpkick", "megahorn", "return", "suckerpunch", "thunderwave"], "abilities": ["Intimidate"], "preferredTypes": ["Ground"] } @@ -3319,12 +3309,12 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["earthquake", "hiddenpowerfire", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder"], + "movepool": ["earthquake", "gigadrain", "hiddenpowerfire", "leafstorm", "leechseed", "morningsun", "rockslide", "sleeppowder"], "abilities": ["Regenerator"] }, { "role": "Bulky Support", - "movepool": ["earthquake", "hiddenpowerfire", "leafstorm", "powerwhip", "rockslide", "sleeppowder"], + "movepool": ["earthquake", "gigadrain", "hiddenpowerfire", "leafstorm", "rockslide", "sleeppowder"], "abilities": ["Regenerator"] } ] @@ -4020,14 +4010,19 @@ "level": 86, "sets": [ { - "role": "Fast Attacker", + "role": "Wallbreaker", "movepool": ["aquajet", "grassknot", "hydropump", "icebeam", "megahorn", "superpower"], "abilities": ["Torrent"] }, { - "role": "Wallbreaker", + "role": "Setup Sweeper", "movepool": ["aquajet", "megahorn", "superpower", "swordsdance", "waterfall"], "abilities": ["Torrent"] + }, + { + "role": "Fast Attacker", + "movepool": ["grassknot", "hydropump", "icebeam", "scald"], + "abilities": ["Torrent"] } ] }, diff --git a/data/random-battles/gen5/teams.ts b/data/random-battles/gen5/teams.ts index 0774d4a494..21af10e2ef 100644 --- a/data/random-battles/gen5/teams.ts +++ b/data/random-battles/gen5/teams.ts @@ -830,6 +830,7 @@ export class RandomGen5Teams extends RandomGen6Teams { return { name: species.baseSpecies, species: forme, + speciesId: species.id, gender: species.gender, shiny: this.randomChance(1, 1024), level, @@ -842,6 +843,39 @@ export class RandomGen5Teams extends RandomGen6Teams { }; } + /** + * Checks if the new species is compatible with the other mons currently on the team. + */ + override getPokemonCompatibility( + species: Species, + pokemon: RandomTeamsTypes.RandomSet[], + ): boolean { + const incompatibilityList = [ + // These Pokemon with support roles are considered too similar to each other. + ['blissey', 'chansey'], + ['illumise', 'volbeat'], + + // These Pokemon are incompatible because the presence of one actively harms the other. + // Prevent Dry Skin + sun setting ability + [['parasect', 'jynx', 'toxicroak'], ['ninetales', 'groudon']], + // Prevent Shedinja + sand/hail setting ability + ['shedinja', ['tyranitar', 'hippowdon', 'abomasnow']], + ]; + + for (const pair of incompatibilityList) { + const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]]; + const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]]; + if (monsArrayB.includes(species.id)) { + if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false; + } + if (monsArrayA.includes(species.id)) { + if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false; + } + } + + return true; + } + override randomTeam() { this.enforceNoDirectCustomBanlistChanges(); @@ -874,9 +908,6 @@ export class RandomGen5Teams extends RandomGen6Teams { // Illusion shouldn't be in the last slot if (species.name === 'Zoroark' && pokemon.length >= (this.maxTeamSize - 1)) continue; - // Prevent Shedinja from generating after Sandstorm/Hail setters - if (species.name === 'Shedinja' && (teamDetails.sand || teamDetails.hail)) continue; - // Dynamically scale limits for different team sizes. The default and minimum value is 1. const limitFactor = Math.round(this.maxTeamSize / 6) || 1; @@ -924,6 +955,9 @@ export class RandomGen5Teams extends RandomGen6Teams { if (!this.adjustLevel && (this.getLevel(species) === 100) && numMaxLevelPokemon >= limitFactor) { continue; } + + // Check compatibility with team + if (!this.getPokemonCompatibility(species, pokemon)) continue; } const set = this.randomSet(species, teamDetails, pokemon.length === 0); diff --git a/data/random-battles/gen6/sets.json b/data/random-battles/gen6/sets.json index d50f9c1849..26445ce53a 100644 --- a/data/random-battles/gen6/sets.json +++ b/data/random-battles/gen6/sets.json @@ -501,14 +501,10 @@ "level": 82, "sets": [ { - "role": "Bulky Support", - "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], - "abilities": ["Regenerator"] - }, - { - "role": "AV Pivot", - "movepool": ["fireblast", "futuresight", "icebeam", "psyshock", "scald"], - "abilities": ["Regenerator"] + "role": "Bulky Attacker", + "movepool": ["calmmind", "fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], + "abilities": ["Regenerator"], + "preferredTypes": ["Psychic"] } ] }, @@ -1382,14 +1378,10 @@ "level": 86, "sets": [ { - "role": "Bulky Support", - "movepool": ["fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], - "abilities": ["Regenerator"] - }, - { - "role": "AV Pivot", - "movepool": ["dragontail", "fireblast", "futuresight", "icebeam", "psyshock", "scald"], - "abilities": ["Regenerator"] + "role": "Bulky Attacker", + "movepool": ["dragontail", "fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], + "abilities": ["Regenerator"], + "preferredTypes": ["Psychic"] } ] }, @@ -1738,7 +1730,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "suckerpunch", "thunderwave"], + "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "return", "suckerpunch", "thunderwave"], "abilities": ["Intimidate"], "preferredTypes": ["Ground"] } @@ -3135,11 +3127,6 @@ "role": "Bulky Support", "movepool": ["knockoff", "recover", "seismictoss", "spikes", "stealthrock", "taunt", "toxic"], "abilities": ["Pressure"] - }, - { - "role": "Bulky Setup", - "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "recover", "signalbeam"], - "abilities": ["Pressure"] } ] }, @@ -3752,12 +3739,12 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["earthquake", "knockoff", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder", "sludgebomb"], + "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "leechseed", "morningsun", "rockslide", "sleeppowder", "sludgebomb"], "abilities": ["Regenerator"] }, { "role": "AV Pivot", - "movepool": ["earthquake", "gigadrain", "knockoff", "powerwhip", "rockslide", "sludgebomb"], + "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "rockslide", "sludgebomb"], "abilities": ["Regenerator"] } ] @@ -4008,7 +3995,7 @@ "level": 86, "sets": [ { - "role": "Fast Support", + "role": "Bulky Attacker", "movepool": ["hiddenpowerice", "leafstorm", "thunderbolt", "trick", "voltswitch", "willowisp"], "abilities": ["Levitate"] } @@ -4494,9 +4481,14 @@ "abilities": ["Torrent"] }, { - "role": "Fast Attacker", + "role": "Setup Sweeper", "movepool": ["aquajet", "knockoff", "megahorn", "superpower", "swordsdance", "waterfall"], "abilities": ["Torrent"] + }, + { + "role": "Fast Attacker", + "movepool": ["grassknot", "hydropump", "icebeam", "scald"], + "abilities": ["Torrent"] } ] }, diff --git a/data/random-battles/gen6/teams.ts b/data/random-battles/gen6/teams.ts index 40bbbc656a..9730d0dbd8 100644 --- a/data/random-battles/gen6/teams.ts +++ b/data/random-battles/gen6/teams.ts @@ -260,7 +260,7 @@ export class RandomGen6Teams extends RandomGen7Teams { this.incompatibleMoves(moves, movePool, 'knockoff', ['pursuit', 'suckerpunch']); } - const statusInflictingMoves = ['thunderwave', 'toxic', 'willowisp', 'yawn']; + const statusInflictingMoves = ["nuzzle", 'thunderwave', 'toxic', 'willowisp', 'yawn']; if (!abilities.includes('Prankster') && role !== 'Staller') { this.incompatibleMoves(moves, movePool, statusInflictingMoves, statusInflictingMoves); } @@ -883,6 +883,7 @@ export class RandomGen6Teams extends RandomGen7Teams { return { name: species.baseSpecies, species: forme, + speciesId: species.id, gender: species.gender || (this.random(2) ? 'F' : 'M'), shiny: this.randomChance(1, 1024), level, diff --git a/data/random-battles/gen7/sets.json b/data/random-battles/gen7/sets.json index 5654350ef9..6f0d4b3593 100644 --- a/data/random-battles/gen7/sets.json +++ b/data/random-battles/gen7/sets.json @@ -642,14 +642,10 @@ "level": 85, "sets": [ { - "role": "Bulky Support", - "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], - "abilities": ["Regenerator"] - }, - { - "role": "AV Pivot", - "movepool": ["fireblast", "futuresight", "icebeam", "psyshock", "scald"], - "abilities": ["Regenerator"] + "role": "Bulky Attacker", + "movepool": ["calmmind", "fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], + "abilities": ["Regenerator"], + "preferredTypes": ["Psychic"] } ] }, @@ -1594,14 +1590,10 @@ "level": 89, "sets": [ { - "role": "Bulky Support", - "movepool": ["fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], - "abilities": ["Regenerator"] - }, - { - "role": "AV Pivot", - "movepool": ["dragontail", "fireblast", "futuresight", "icebeam", "psyshock", "scald"], - "abilities": ["Regenerator"] + "role": "Bulky Attacker", + "movepool": ["dragontail", "fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], + "abilities": ["Regenerator"], + "preferredTypes": ["Psychic"] } ] }, @@ -1958,7 +1950,7 @@ "sets": [ { "role": "Wallbreaker", - "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "suckerpunch", "throatchop", "thunderwave"], + "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "return", "suckerpunch", "throatchop", "thunderwave"], "abilities": ["Intimidate"], "preferredTypes": ["Ground"] } @@ -3420,11 +3412,6 @@ "role": "Bulky Support", "movepool": ["knockoff", "recover", "seismictoss", "spikes", "stealthrock", "taunt", "toxic"], "abilities": ["Pressure"] - }, - { - "role": "Bulky Setup", - "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "recover", "signalbeam"], - "abilities": ["Pressure"] } ] }, @@ -3467,12 +3454,6 @@ "movepool": ["closecombat", "grassknot", "machpunch", "overheat", "stealthrock"], "abilities": ["Blaze", "Iron Fist"] }, - { - "role": "Z-Move user", - "movepool": ["fireblast", "focusblast", "grassknot", "nastyplot", "vacuumwave"], - "abilities": ["Blaze"], - "preferredTypes": ["Fighting"] - }, { "role": "Fast Support", "movepool": ["closecombat", "flareblitz", "machpunch", "stoneedge", "swordsdance", "uturn"], @@ -4069,12 +4050,12 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["earthquake", "knockoff", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder", "sludgebomb"], + "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "leechseed", "morningsun", "rockslide", "sleeppowder", "sludgebomb"], "abilities": ["Regenerator"] }, { "role": "AV Pivot", - "movepool": ["earthquake", "gigadrain", "knockoff", "powerwhip", "rockslide", "sludgebomb"], + "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "rockslide", "sludgebomb"], "abilities": ["Regenerator"] } ] @@ -4343,7 +4324,7 @@ "level": 86, "sets": [ { - "role": "Fast Support", + "role": "Bulky Attacker", "movepool": ["defog", "hiddenpowerice", "leafstorm", "thunderbolt", "trick", "voltswitch", "willowisp"], "abilities": ["Levitate"] } @@ -4864,9 +4845,14 @@ "abilities": ["Torrent"] }, { - "role": "Fast Attacker", + "role": "Setup Sweeper", "movepool": ["aquajet", "knockoff", "liquidation", "megahorn", "sacredsword", "swordsdance"], "abilities": ["Torrent"] + }, + { + "role": "Fast Attacker", + "movepool": ["grassknot", "hydropump", "icebeam", "scald"], + "abilities": ["Torrent"] } ] }, @@ -5097,6 +5083,11 @@ "movepool": ["bulkup", "facade", "knockoff", "stormthrow"], "abilities": ["Guts"] }, + { + "role": "Wallbreaker", + "movepool": ["facade", "knockoff", "stormthrow", "superpower"], + "abilities": ["Guts"] + }, { "role": "Bulky Support", "movepool": ["bulkup", "circlethrow", "knockoff", "rest", "sleeptalk"], @@ -6675,6 +6666,11 @@ "role": "Bulky Attacker", "movepool": ["hydropump", "moonblast", "psychic", "scald"], "abilities": ["Torrent"] + }, + { + "role": "Bulky Support", + "movepool": ["moonblast", "rest", "scald", "sleeptalk"], + "abilities": ["Torrent"] } ] }, @@ -7447,6 +7443,11 @@ "role": "Bulky Setup", "movepool": ["calmmind", "hydropump", "icebeam", "moonblast", "surf", "taunt"], "abilities": ["Misty Surge"] + }, + { + "role": "Bulky Support", + "movepool": ["defog", "hydropump", "knockoff", "moonblast", "naturesmadness", "surf", "taunt"], + "abilities": ["Misty Surge"] } ] }, diff --git a/data/random-battles/gen7/teams.ts b/data/random-battles/gen7/teams.ts index 553e7e4469..e54572d390 100644 --- a/data/random-battles/gen7/teams.ts +++ b/data/random-battles/gen7/teams.ts @@ -377,7 +377,7 @@ export class RandomGen7Teams extends RandomGen8Teams { this.incompatibleMoves(moves, movePool, 'knockoff', ['pursuit', 'suckerpunch']); } - const statusInflictingMoves = ['thunderwave', 'toxic', 'willowisp', 'yawn']; + const statusInflictingMoves = ["nuzzle", 'thunderwave', 'toxic', 'willowisp', 'yawn']; if (!abilities.includes('Prankster') && role !== 'Staller') { this.incompatibleMoves(moves, movePool, statusInflictingMoves, statusInflictingMoves); } @@ -1172,6 +1172,7 @@ export class RandomGen7Teams extends RandomGen8Teams { return { name: species.baseSpecies, species: forme, + speciesId: species.id, gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')), shiny: this.randomChance(1, 1024), level, @@ -1184,6 +1185,60 @@ export class RandomGen7Teams extends RandomGen8Teams { }; } + /** + * Checks if the new species is compatible with the other mons currently on the team. + */ + getPokemonCompatibility( + species: Species, + pokemon: RandomTeamsTypes.RandomSet[], + ): boolean { + const webSetters = [ + 'ariados', 'shuckle', 'smeargle', 'masquerain', 'kricketune', 'leavanny', 'galvantula', 'ribombee', 'araquanid', + ]; + + // Some pokes are setters in gen 7 but not gen 6 + const gen6ScreenSetters = ['meowstic', 'carbink']; + const screenSetters = (this.gen === 7) ? [...gen6ScreenSetters, 'electrode', 'ninetalesalola'] : gen6ScreenSetters; + + const gen6SunSetters = ['charizardmegay', 'ninetales', 'groudon']; + const sunSetters = (this.gen === 7) ? [...gen6SunSetters, 'torkoal'] : gen6SunSetters; + + const gen6SandSetters = ['tyranitar', 'tyranitarmega', 'hippowdon']; + const sandSetters = (this.gen === 7) ? [...gen6SandSetters, 'gigalith'] : gen6SandSetters; + + const gen6HailSetters = ['abomasnow', 'abomasnowmega', 'aurorus']; + const hailSetters = (this.gen === 7) ? [...gen6HailSetters, 'vanilluxe', 'ninetalesalola'] : gen6HailSetters; + + const incompatibilityList = [ + // These Pokemon with support roles are considered too similar to each other. + ['blissey', 'chansey'], + ['illumise', 'volbeat'], + + // These combinations are prevented to avoid double webs or screens. + [webSetters, webSetters], + [screenSetters, screenSetters], + + // These Pokemon are incompatible because the presence of one actively harms the other. + // Prevent Dry Skin + sun setting ability + ['parasect', 'jynx', 'toxicroak', 'heliolisk', sunSetters], + // Prevent Shedinja + sand/hail setting ability + ['shedinja', [...sandSetters, ...hailSetters]], + ]; + + for (const pair of incompatibilityList) { + const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]]; + const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]]; + if (monsArrayB.includes(species.id)) { + if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false; + } + if (monsArrayA.includes(species.id)) { + if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false; + } + } + + return true; + } + override randomTeam() { this.enforceNoDirectCustomBanlistChanges(); @@ -1300,6 +1355,9 @@ export class RandomGen7Teams extends RandomGen8Teams { if (!this.adjustLevel && (this.getLevel(species) === 100) && numMaxLevelPokemon >= limitFactor) { continue; } + + // Check compatibility with team + if (!this.getPokemonCompatibility(species, pokemon)) continue; } // Limit three of any type combination in Monotype diff --git a/data/random-battles/gen8/teams.ts b/data/random-battles/gen8/teams.ts index 6daf9528f1..468d4b932f 100644 --- a/data/random-battles/gen8/teams.ts +++ b/data/random-battles/gen8/teams.ts @@ -1526,7 +1526,7 @@ export class RandomGen8Teams { case 'Cloud Nine': return (!isNoDynamax || species.id !== 'golduck'); case 'Competitive': - return (!counter.get('Special') || moves.has('rest') && moves.has('sleeptalk')); + return species.id === 'boltund'; case 'Compound Eyes': case 'No Guard': return !counter.get('inaccurate'); case 'Cursed Body': diff --git a/data/random-battles/gen9/doubles-sets.json b/data/random-battles/gen9/doubles-sets.json index 2045bd1ba4..bfbaada009 100644 --- a/data/random-battles/gen9/doubles-sets.json +++ b/data/random-battles/gen9/doubles-sets.json @@ -150,15 +150,15 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Heal Pulse", "Icy Wind", "Knock Off", "Life Dew", "Moonblast", "Thunder Wave"], - "abilities": ["Magic Guard", "Unaware"], - "teraTypes": ["Fire", "Steel", "Water"] + "movepool": ["Dazzling Gleam", "Fire Blast", "Icy Wind", "Moonblast", "Protect", "Thunder Wave"], + "abilities": ["Magic Guard"], + "teraTypes": ["Fire", "Steel"] }, { "role": "Doubles Support", - "movepool": ["Encore", "Fire Blast", "Follow Me", "Helping Hand", "Life Dew", "Moonblast", "Moonlight"], + "movepool": ["Follow Me", "Helping Hand", "Knock Off", "Life Dew", "Moonblast", "Moonlight"], "abilities": ["Unaware"], - "teraTypes": ["Fire", "Steel", "Water"] + "teraTypes": ["Steel", "Water"] } ] }, @@ -195,7 +195,7 @@ "sets": [ { "role": "Doubles Support", - "movepool": ["Dazzling Gleam", "Disable", "Encore", "Fire Blast", "Heal Pulse", "Helping Hand", "Icy Wind", "Thunder Wave"], + "movepool": ["Dazzling Gleam", "Encore", "Fire Blast", "Helping Hand", "Icy Wind", "Thunder Wave"], "abilities": ["Competitive"], "teraTypes": ["Fire", "Steel"] } @@ -209,6 +209,18 @@ "movepool": ["Pollen Puff", "Sludge Bomb", "Strength Sap", "Stun Spore"], "abilities": ["Effect Spore"], "teraTypes": ["Steel", "Water"] + }, + { + "role": "Doubles Bulky Attacker", + "movepool": ["Energy Ball", "Sludge Bomb", "Strength Sap", "Stun Spore"], + "abilities": ["Effect Spore"], + "teraTypes": ["Steel", "Water"] + }, + { + "role": "Bulky Protect", + "movepool": ["Leech Seed", "Pollen Puff", "Protect", "Sludge Bomb"], + "abilities": ["Effect Spore"], + "teraTypes": ["Steel", "Water"] } ] }, @@ -451,8 +463,8 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Drain Punch", "Gunk Shot", "Helping Hand", "Ice Punch", "Knock Off", "Poison Gas", "Poison Jab", "Shadow Sneak"], - "abilities": ["Poison Touch", "Sticky Hold"], + "movepool": ["Drain Punch", "Gunk Shot", "Helping Hand", "Ice Punch", "Knock Off", "Poison Jab", "Shadow Sneak", "Toxic Spikes"], + "abilities": ["Poison Touch"], "teraTypes": ["Dark"] } ] @@ -814,7 +826,7 @@ "sets": [ { "role": "Doubles Wallbreaker", - "movepool": ["Crunch", "Double-Edge", "Hammer Arm", "Heat Crash", "High Horsepower"], + "movepool": ["Body Slam", "Crunch", "Double-Edge", "Hammer Arm", "Heat Crash", "High Horsepower"], "abilities": ["Thick Fat"], "teraTypes": ["Fire", "Ghost", "Ground"] }, @@ -825,9 +837,9 @@ "teraTypes": ["Ghost", "Ground"] }, { - "role": "Doubles Bulky Setup", - "movepool": ["Body Slam", "Crunch", "Curse", "High Horsepower", "Protect", "Recycle"], - "abilities": ["Gluttony"], + "role": "Bulky Protect", + "movepool": ["Body Slam", "Curse", "High Horsepower", "Protect"], + "abilities": ["Thick Fat"], "teraTypes": ["Ground", "Poison"] } ] @@ -1172,7 +1184,7 @@ "level": 91, "sets": [ { - "role": "Doubles Bulky Attacker", + "role": "Doubles Support", "movepool": ["Helping Hand", "High Horsepower", "Icy Wind", "Liquidation", "Recover", "Yawn"], "abilities": ["Unaware", "Water Absorb"], "teraTypes": ["Fire", "Poison", "Steel"] @@ -1401,10 +1413,16 @@ "level": 86, "sets": [ { - "role": "Doubles Fast Attacker", + "role": "Offensive Protect", "movepool": ["Dark Pulse", "Heat Wave", "Nasty Plot", "Protect", "Sucker Punch"], "abilities": ["Flash Fire", "Unnerve"], "teraTypes": ["Dark", "Fire", "Ghost", "Grass"] + }, + { + "role": "Doubles Fast Attacker", + "movepool": ["Dark Pulse", "Heat Wave", "Nasty Plot", "Protect"], + "abilities": ["Flash Fire", "Unnerve"], + "teraTypes": ["Dark", "Fire", "Ghost", "Grass"] } ] }, @@ -1620,8 +1638,8 @@ "level": 82, "sets": [ { - "role": "Doubles Bulky Attacker", - "movepool": ["Flip Turn", "High Horsepower", "Ice Beam", "Icy Wind", "Knock Off", "Muddy Water"], + "role": "Doubles Support", + "movepool": ["Flip Turn", "High Horsepower", "Icy Wind", "Knock Off", "Muddy Water"], "abilities": ["Torrent"], "teraTypes": ["Fire", "Steel"] } @@ -1659,7 +1677,7 @@ "level": 84, "sets": [ { - "role": "Doubles Fast Attacker", + "role": "Doubles Wallbreaker", "movepool": ["Fake Out", "Knock Off", "Leaf Blade", "Tailwind"], "abilities": ["Wind Rider"], "teraTypes": ["Ghost"] @@ -1817,7 +1835,7 @@ "level": 92, "sets": [ { - "role": "Doubles Fast Attacker", + "role": "Doubles Setup Sweeper", "movepool": ["Alluring Voice", "Nasty Plot", "Protect", "Thunderbolt"], "abilities": ["Lightning Rod"], "teraTypes": ["Flying"] @@ -1874,7 +1892,7 @@ "sets": [ { "role": "Doubles Bulky Attacker", - "movepool": ["Encore", "Gunk Shot", "Helping Hand", "Knock Off", "Poison Gas", "Thunder Wave", "Toxic Spikes"], + "movepool": ["Encore", "Gunk Shot", "Helping Hand", "Knock Off", "Thunder Wave", "Toxic Spikes"], "abilities": ["Gluttony"], "teraTypes": ["Dark"] } @@ -1990,7 +2008,7 @@ "level": 88, "sets": [ { - "role": "Doubles Bulky Attacker", + "role": "Doubles Support", "movepool": ["Helping Hand", "High Horsepower", "Icy Wind", "Muddy Water", "Protect"], "abilities": ["Oblivious"], "teraTypes": ["Fire", "Steel"] @@ -2317,7 +2335,7 @@ { "role": "Doubles Setup Sweeper", "movepool": ["Headlong Rush", "Protect", "Rock Slide", "Shell Smash"], - "abilities": ["Overgrow"], + "abilities": ["Shell Armor"], "teraTypes": ["Rock"] } ] @@ -2453,9 +2471,15 @@ "gastrodon": { "level": 82, "sets": [ + { + "role": "Doubles Support", + "movepool": ["Earth Power", "Helping Hand", "Icy Wind", "Muddy Water", "Recover", "Yawn"], + "abilities": ["Storm Drain"], + "teraTypes": ["Fire"] + }, { "role": "Doubles Bulky Attacker", - "movepool": ["Clear Smog", "Earth Power", "Helping Hand", "Icy Wind", "Muddy Water", "Recover"], + "movepool": ["Earth Power", "Ice Beam", "Recover", "Yawn"], "abilities": ["Storm Drain"], "teraTypes": ["Fire"] } @@ -2594,7 +2618,13 @@ "sets": [ { "role": "Doubles Fast Attacker", - "movepool": ["Close Combat", "Fake Out", "Gunk Shot", "Protect", "Sucker Punch", "Swords Dance"], + "movepool": ["Close Combat", "Fake Out", "Gunk Shot", "Protect", "Sucker Punch"], + "abilities": ["Dry Skin"], + "teraTypes": ["Dark", "Fighting", "Poison"] + }, + { + "role": "Doubles Setup Sweeper", + "movepool": ["Close Combat", "Gunk Shot", "Protect", "Sucker Punch", "Swords Dance"], "abilities": ["Dry Skin"], "teraTypes": ["Dark", "Fighting", "Poison"] } @@ -2656,7 +2686,7 @@ { "role": "Doubles Support", "movepool": ["Electroweb", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"], - "abilities": ["Sturdy"], + "abilities": ["Magnet Pull"], "teraTypes": ["Flying"] } ] @@ -2683,13 +2713,13 @@ "sets": [ { "role": "Doubles Fast Attacker", - "movepool": ["Cross Chop", "Flamethrower", "Ice Punch", "Protect", "Volt Switch", "Wild Charge"], + "movepool": ["Flamethrower", "Ice Punch", "Protect", "Wild Charge"], "abilities": ["Motor Drive"], "teraTypes": ["Flying"] }, { "role": "Doubles Bulky Attacker", - "movepool": ["Cross Chop", "Flamethrower", "Ice Punch", "Knock Off", "Volt Switch", "Wild Charge"], + "movepool": ["Electroweb", "Ice Punch", "Knock Off", "Volt Switch", "Wild Charge"], "abilities": ["Motor Drive"], "teraTypes": ["Flying"] } @@ -2721,6 +2751,12 @@ "abilities": ["Tinted Lens"], "teraTypes": ["Bug"] }, + { + "role": "Doubles Fast Attacker", + "movepool": ["Air Slash", "Bug Buzz", "Protect", "Tailwind"], + "abilities": ["Tinted Lens"], + "teraTypes": ["Ground", "Steel"] + }, { "role": "Tera Blast user", "movepool": ["Air Slash", "Bug Buzz", "Protect", "Tera Blast"], @@ -2961,17 +2997,17 @@ "azelf": { "level": 83, "sets": [ - { - "role": "Doubles Fast Attacker", - "movepool": ["Dazzling Gleam", "Energy Ball", "Fire Blast", "Nasty Plot", "Psychic", "U-turn"], - "abilities": ["Levitate"], - "teraTypes": ["Fairy", "Fire"] - }, { "role": "Offensive Protect", "movepool": ["Dazzling Gleam", "Fire Blast", "Nasty Plot", "Protect", "Psychic", "Thunderbolt"], "abilities": ["Levitate"], "teraTypes": ["Electric", "Fairy", "Fire"] + }, + { + "role": "Doubles Wallbreaker", + "movepool": ["Dazzling Gleam", "Fire Blast", "Psychic", "U-turn"], + "abilities": ["Levitate"], + "teraTypes": ["Fairy", "Fire"] } ] }, @@ -3279,12 +3315,6 @@ "arceusghost": { "level": 72, "sets": [ - { - "role": "Doubles Setup Sweeper", - "movepool": ["Brick Break", "Extreme Speed", "Phantom Force", "Swords Dance"], - "abilities": ["Multitype"], - "teraTypes": ["Normal"] - }, { "role": "Doubles Bulky Setup", "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"], @@ -3471,13 +3501,13 @@ "level": 87, "sets": [ { - "role": "Offensive Protect", + "role": "Doubles Fast Attacker", "movepool": ["High Horsepower", "Overheat", "Protect", "Wild Charge"], "abilities": ["Sap Sipper"], "teraTypes": ["Ground"] }, { - "role": "Doubles Fast Attacker", + "role": "Doubles Wallbreaker", "movepool": ["High Horsepower", "Overheat", "Protect", "Thunderbolt"], "abilities": ["Lightning Rod"], "teraTypes": ["Flying", "Water"] @@ -3847,15 +3877,21 @@ "sets": [ { "role": "Doubles Fast Attacker", - "movepool": ["Close Combat", "Fake Out", "Knock Off", "Triple Axel", "U-turn"], + "movepool": ["Close Combat", "Fake Out", "Knock Off", "U-turn"], "abilities": ["Regenerator"], - "teraTypes": ["Dark"] + "teraTypes": ["Dark", "Steel"] }, { "role": "Doubles Bulky Attacker", "movepool": ["Close Combat", "Fake Out", "Knock Off", "U-turn"], "abilities": ["Regenerator"], "teraTypes": ["Dark", "Steel"] + }, + { + "role": "Doubles Wallbreaker", + "movepool": ["Close Combat", "Knock Off", "Triple Axel", "U-turn"], + "abilities": ["Inner Focus"], + "teraTypes": ["Dark", "Steel"] } ] }, @@ -4251,10 +4287,16 @@ "level": 88, "sets": [ { - "role": "Doubles Support", + "role": "Doubles Fast Attacker", "movepool": ["Hurricane", "Pollen Puff", "Protect", "Sleep Powder"], "abilities": ["Compound Eyes"], "teraTypes": ["Flying", "Steel"] + }, + { + "role": "Doubles Fast Attacker", + "movepool": ["Hurricane", "Protect", "Sleep Powder", "Tailwind"], + "abilities": ["Compound Eyes"], + "teraTypes": ["Flying", "Steel"] } ] }, @@ -4508,9 +4550,9 @@ }, { "role": "Bulky Protect", - "movepool": ["Diamond Storm", "Moonblast", "Protect", "Trick Room"], + "movepool": ["Body Press", "Diamond Storm", "Moonblast", "Trick Room"], "abilities": ["Clear Body"], - "teraTypes": ["Grass", "Steel"] + "teraTypes": ["Fighting"] } ] }, @@ -4596,8 +4638,8 @@ "teraTypes": ["Water"] }, { - "role": "Bulky Protect", - "movepool": ["Calm Mind", "Hyper Voice", "Moonblast", "Protect"], + "role": "Offensive Protect", + "movepool": ["Hyper Voice", "Icy Wind", "Life Dew", "Moonblast", "Protect"], "abilities": ["Liquid Voice"], "teraTypes": ["Grass", "Steel"] } @@ -4636,7 +4678,7 @@ "sets": [ { "role": "Bulky Protect", - "movepool": ["Bug Buzz", "Electroweb", "Protect", "Sticky Web", "Thunderbolt"], + "movepool": ["Bug Buzz", "Protect", "Sticky Web", "Thunderbolt"], "abilities": ["Levitate"], "teraTypes": ["Electric"] } @@ -4725,7 +4767,7 @@ "level": 86, "sets": [ { - "role": "Doubles Support", + "role": "Doubles Fast Attacker", "movepool": ["Moonblast", "Pollen Puff", "Protect", "Tailwind"], "abilities": ["Shield Dust"], "teraTypes": ["Steel"] @@ -4844,7 +4886,7 @@ "sets": [ { "role": "Doubles Fast Attacker", - "movepool": ["Encore", "Fake Out", "Fire Blast", "Heat Wave", "Poison Gas", "Protect", "Sludge Bomb"], + "movepool": ["Encore", "Fake Out", "Fire Blast", "Heat Wave", "Protect", "Sludge Bomb"], "abilities": ["Corrosion"], "teraTypes": ["Fire", "Flying", "Water"] } @@ -5877,15 +5919,15 @@ "sets": [ { "role": "Doubles Support", - "movepool": ["Double-Edge", "Helping Hand", "Lash Out", "Protect", "Yawn"], - "abilities": ["Gluttony"], + "movepool": ["Double-Edge", "Helping Hand", "Protect", "Yawn"], + "abilities": ["Thick Fat"], "teraTypes": ["Ghost", "Normal"] }, { "role": "Doubles Wallbreaker", - "movepool": ["Double-Edge", "High Horsepower", "Lash Out", "Play Rough"], + "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Lash Out"], "abilities": ["Thick Fat"], - "teraTypes": ["Fairy", "Ground", "Normal"] + "teraTypes": ["Ghost", "Ground", "Normal"] } ] }, @@ -5894,15 +5936,15 @@ "sets": [ { "role": "Doubles Support", - "movepool": ["Double-Edge", "Helping Hand", "Lash Out", "Protect", "Yawn"], - "abilities": ["Gluttony"], + "movepool": ["Double-Edge", "Helping Hand", "Protect", "Yawn"], + "abilities": ["Thick Fat"], "teraTypes": ["Ghost", "Normal"] }, { "role": "Doubles Wallbreaker", - "movepool": ["Double-Edge", "High Horsepower", "Lash Out", "Play Rough"], + "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Lash Out"], "abilities": ["Thick Fat"], - "teraTypes": ["Fairy", "Ground", "Normal"] + "teraTypes": ["Ghost", "Ground", "Normal"] } ] }, @@ -5927,13 +5969,13 @@ "teraTypes": ["Bug"] }, { - "role": "Doubles Fast Attacker", + "role": "Doubles Wallbreaker", "movepool": ["First Impression", "Knock Off", "Protect", "Sucker Punch"], "abilities": ["Tinted Lens"], "teraTypes": ["Bug", "Dark"] }, { - "role": "Doubles Wallbreaker", + "role": "Offensive Protect", "movepool": ["First Impression", "Knock Off", "Leech Life", "Protect"], "abilities": ["Tinted Lens"], "teraTypes": ["Bug"] @@ -6098,6 +6140,12 @@ "movepool": ["Hurricane", "Protect", "Tailwind", "Thunderbolt"], "abilities": ["Competitive"], "teraTypes": ["Flying", "Steel"] + }, + { + "role": "Doubles Wallbreaker", + "movepool": ["Hurricane", "Protect", "Tailwind", "Thunderbolt"], + "abilities": ["Competitive"], + "teraTypes": ["Flying", "Steel"] } ] }, @@ -6649,6 +6697,12 @@ "ironbundle": { "level": 78, "sets": [ + { + "role": "Doubles Bulky Attacker", + "movepool": ["Encore", "Freeze-Dry", "Hydro Pump", "Icy Wind", "Protect"], + "abilities": ["Quark Drive"], + "teraTypes": ["Dragon", "Water"] + }, { "role": "Doubles Fast Attacker", "movepool": ["Encore", "Freeze-Dry", "Hydro Pump", "Icy Wind", "Protect"], @@ -6784,12 +6838,6 @@ "movepool": ["Collision Course", "Dragon Claw", "Flare Blitz", "U-turn"], "abilities": ["Orichalcum Pulse"], "teraTypes": ["Fire"] - }, - { - "role": "Offensive Protect", - "movepool": ["Collision Course", "Dragon Claw", "Flare Blitz", "Protect"], - "abilities": ["Orichalcum Pulse"], - "teraTypes": ["Fire"] } ] }, @@ -7109,7 +7157,7 @@ "level": 73, "sets": [ { - "role": "Doubles Bulky Setup", + "role": "Bulky Protect", "movepool": ["Calm Mind", "Earth Power", "Protect", "Tera Starstorm"], "abilities": ["Tera Shift"], "teraTypes": ["Stellar"] diff --git a/data/random-battles/gen9/sets.json b/data/random-battles/gen9/sets.json index 6740222d10..b869ed198e 100644 --- a/data/random-battles/gen9/sets.json +++ b/data/random-battles/gen9/sets.json @@ -77,7 +77,7 @@ "level": 93, "sets": [ { - "role": "Fast Attacker", + "role": "AV Pivot", "movepool": ["Fake Out", "Knock Off", "Play Rough", "Surf", "Volt Switch", "Volt Tackle"], "abilities": ["Lightning Rod"], "teraTypes": ["Water"] @@ -185,7 +185,7 @@ }, { "role": "Fast Attacker", - "movepool": ["Aurora Veil", "Blizzard", "Freeze-Dry", "Moonblast", "Nasty Plot"], + "movepool": ["Aurora Veil", "Blizzard", "Freeze-Dry", "Moonblast"], "abilities": ["Snow Warning"], "teraTypes": ["Steel", "Water"] } @@ -2136,7 +2136,7 @@ "sets": [ { "role": "Bulky Attacker", - "movepool": ["Clear Smog", "Earthquake", "Encore", "Ice Beam", "Knock Off", "Pain Split", "Sludge Bomb", "Toxic Spikes"], + "movepool": ["Clear Smog", "Earthquake", "Encore", "Ice Beam", "Knock Off", "Pain Split", "Sludge Bomb", "Thunder Wave", "Toxic Spikes"], "abilities": ["Liquid Ooze"], "teraTypes": ["Dark"] }, @@ -2379,7 +2379,7 @@ "sets": [ { "role": "Fast Support", - "movepool": ["Disable", "Earthquake", "Freeze-Dry", "Spikes", "Taunt"], + "movepool": ["Earthquake", "Freeze-Dry", "Spikes", "Taunt"], "abilities": ["Inner Focus"], "teraTypes": ["Ghost", "Ground", "Water"] } @@ -2712,7 +2712,7 @@ "sets": [ { "role": "Fast Support", - "movepool": ["Knock Off", "Pounce", "Sticky Web", "Swords Dance", "Taunt"], + "movepool": ["Knock Off", "Pounce", "Sticky Web", "Taunt"], "abilities": ["Technician"], "teraTypes": ["Ghost"] } @@ -3063,13 +3063,13 @@ "role": "Fast Attacker", "movepool": ["Body Press", "Flash Cannon", "Thunderbolt", "Volt Switch"], "abilities": ["Analytic", "Magnet Pull"], - "teraTypes": ["Electric", "Fighting", "Flying", "Water"] + "teraTypes": ["Electric", "Fighting", "Flying"] }, { "role": "AV Pivot", "movepool": ["Body Press", "Discharge", "Flash Cannon", "Mirror Coat", "Thunderbolt", "Volt Switch"], "abilities": ["Analytic", "Magnet Pull"], - "teraTypes": ["Flying", "Water"] + "teraTypes": ["Flying"] }, { "role": "Bulky Setup", @@ -3405,9 +3405,9 @@ }, { "role": "Fast Attacker", - "movepool": ["Dazzling Gleam", "Fire Blast", "Nasty Plot", "Psychic", "Psyshock", "Thunderbolt", "Trick", "U-turn"], + "movepool": ["Dazzling Gleam", "Fire Blast", "Nasty Plot", "Psychic", "Psyshock", "U-turn"], "abilities": ["Levitate"], - "teraTypes": ["Electric", "Fairy", "Fire", "Psychic"] + "teraTypes": ["Fairy", "Fire", "Psychic"] } ] }, @@ -4018,13 +4018,13 @@ "sets": [ { "role": "Fast Support", - "movepool": ["Knock Off", "Leaf Blade", "Lunge", "Sticky Web", "Swords Dance"], + "movepool": ["Knock Off", "Leaf Blade", "Lunge", "Sticky Web"], "abilities": ["Chlorophyll", "Swarm"], "teraTypes": ["Ghost", "Rock"] }, { "role": "Fast Attacker", - "movepool": ["Bullet Seed", "Knock Off", "Sticky Web", "Swords Dance", "Triple Axel"], + "movepool": ["Bullet Seed", "Knock Off", "Sticky Web", "Triple Axel"], "abilities": ["Chlorophyll"], "teraTypes": ["Ghost", "Rock"] } @@ -4273,13 +4273,13 @@ "role": "Bulky Support", "movepool": ["Flip Turn", "Protect", "Scald", "Wish"], "abilities": ["Regenerator"], - "teraTypes": ["Steel"] + "teraTypes": ["Poison", "Steel"] }, { "role": "Fast Support", "movepool": ["Flip Turn", "Protect", "Scald", "Wish"], "abilities": ["Regenerator"], - "teraTypes": ["Steel"] + "teraTypes": ["Poison", "Steel"] } ] }, @@ -4819,7 +4819,7 @@ { "role": "Tera Blast user", "movepool": ["Brave Bird", "Flare Blitz", "Swords Dance", "Tera Blast"], - "abilities": ["Flame Body"], + "abilities": ["Flame Body", "Gale Wings"], "teraTypes": ["Ground"] } ] @@ -5567,7 +5567,7 @@ "sets": [ { "role": "Fast Bulky Setup", - "movepool": ["Boomburst", "Clanging Scales", "Clangorous Soul", "Close Combat", "Iron Head"], + "movepool": ["Boomburst", "Clanging Scales", "Clangorous Soul", "Close Combat", "Drain Punch", "Iron Head"], "abilities": ["Soundproof"], "teraTypes": ["Normal", "Steel"] }, @@ -5721,9 +5721,9 @@ }, { "role": "Fast Support", - "movepool": ["Court Change", "High Jump Kick", "Pyro Ball", "Sucker Punch"], + "movepool": ["Court Change", "Pyro Ball", "U-turn", "Will-O-Wisp"], "abilities": ["Libero"], - "teraTypes": ["Fighting", "Fire"] + "teraTypes": ["Grass"] }, { "role": "Fast Attacker", @@ -7079,12 +7079,6 @@ "movepool": ["Body Slam", "Protect", "Psychic Noise", "Wish"], "abilities": ["Sap Sipper"], "teraTypes": ["Fairy", "Ground", "Water"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Future Sight", "Hyper Voice", "Protect", "Wish"], - "abilities": ["Sap Sipper"], - "teraTypes": ["Fairy", "Ground", "Water"] } ] }, @@ -7348,7 +7342,7 @@ "sets": [ { "role": "Fast Attacker", - "movepool": ["Encore", "Flip Turn", "Freeze-Dry", "Hydro Pump", "Ice Beam", "Substitute"], + "movepool": ["Encore", "Flip Turn", "Freeze-Dry", "Hydro Pump", "Ice Beam"], "abilities": ["Quark Drive"], "teraTypes": ["Ice", "Water"] } @@ -7456,7 +7450,7 @@ }, { "role": "Setup Sweeper", - "movepool": ["Ice Shard", "Icicle Crash", "Sacred Sword", "Sucker Punch", "Swords Dance", "Throat Chop"], + "movepool": ["Icicle Crash", "Sacred Sword", "Sucker Punch", "Swords Dance", "Throat Chop"], "abilities": ["Sword of Ruin"], "teraTypes": ["Dark", "Fighting", "Ice"] } @@ -7511,8 +7505,8 @@ "level": 65, "sets": [ { - "role": "Fast Bulky Setup", - "movepool": ["Calm Mind", "Draco Meteor", "Electro Drift", "Substitute"], + "role": "Setup Sweeper", + "movepool": ["Calm Mind", "Draco Meteor", "Dragon Pulse", "Electro Drift"], "abilities": ["Hadron Engine"], "teraTypes": ["Electric"] }, diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts index 99fea6cb97..4569c1dabc 100644 --- a/data/random-battles/gen9/teams.ts +++ b/data/random-battles/gen9/teams.ts @@ -146,7 +146,7 @@ const DOUBLES_NO_LEAD_POKEMON = [ ]; const DEFENSIVE_TERA_BLAST_USERS = [ - 'alcremie', 'bellossom', 'comfey', 'fezandipiti', 'florges', 'raikou', + 'alcremie', 'bellossom', 'comfey', 'fezandipiti', 'florges', ]; function sereneGraceBenefits(move: Move) { @@ -246,7 +246,9 @@ export class RandomTeams { !counter.get('Steel') && (isDoubles || species.baseStats.atk >= 90 || movePool.includes('gigatonhammer') || movePool.includes('makeitrain')) ), - Water: (movePool, moves, abilities, types, counter) => (!counter.get('Water') && !types.includes('Ground')), + Water: (movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles) => ( + !counter.get('Water') && (!types.includes('Ground') || isDoubles) + ), }; this.poolsCacheKey = undefined; this.cachedPool = undefined; @@ -1157,15 +1159,15 @@ export class RandomTeams { } return this.sample(species.requiredItems); } - if (role === 'AV Pivot') return 'Assault Vest'; if (species.id === 'pikachu') return 'Light Ball'; + if (role === 'AV Pivot') return 'Assault Vest'; if (species.id === 'regieleki') return 'Magnet'; if (types.includes('Normal') && moves.has('doubleedge') && moves.has('fakeout')) return 'Silk Scarf'; if ( species.id === 'froslass' || moves.has('populationbomb') || (ability === 'Hustle' && counter.get('setup') && !isDoubles && this.randomChance(1, 2)) ) return 'Wide Lens'; - if (species.id === 'smeargle' && !isDoubles) return 'Focus Sash'; + if (species.id === 'smeargle') return 'Focus Sash'; if (moves.has('clangoroussoul') || (species.id === 'toxtricity' && moves.has('shiftgear'))) return 'Throat Spray'; if ( (species.baseSpecies === 'Magearna' && role === 'Tera Blast user') || @@ -1285,9 +1287,14 @@ export class RandomTeams { (role === 'Bulky Protect' && counter.get('setup')) || ['irondefense', 'coil', 'acidarmor', 'wish'].some(m => moves.has(m)) || (counter.get('recovery') && !moves.has('strengthsap') && !counter.get('speedcontrol') && !offensiveRole) || + (PROTECT_MOVES.some(m => moves.has(m)) && moves.has('leechseed')) || species.id === 'regigigas' ) return 'Leftovers'; - if (species.id === 'sylveon') return 'Pixie Plate'; + if (moves.has('hypervoice') && !types.includes('Normal')) return 'Throat Spray'; + if ( + role === 'Doubles Fast Attacker' && !counter.get('recoil') && + species.baseStats.hp + species.baseStats.def + species.baseStats.spd <= 230 + ) return 'Focus Sash'; if ( (offensiveRole || (role === 'Tera Blast user' && (species.baseStats.spe >= 80 || moves.has('trickroom')))) && !moves.has('fakeout') && @@ -1300,7 +1307,7 @@ export class RandomTeams { ) ? 'Booster Energy' : 'Life Orb'; } if (isLead && (species.id === 'glimmora' || - (['Doubles Fast Attacker', 'Doubles Wallbreaker', 'Offensive Protect'].includes(role) && + (['Doubles Wallbreaker', 'Offensive Protect'].includes(role) && species.baseStats.hp + species.baseStats.def + species.baseStats.spd <= 230)) ) return 'Focus Sash'; if ( @@ -1582,6 +1589,7 @@ export class RandomTeams { return { name: species.baseSpecies, species: forme, + speciesId: species.id, gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')), shiny: this.randomChance(1, 1024), level, @@ -1630,6 +1638,79 @@ export class RandomTeams { return [pokemonPool, baseSpeciesPool]; } + /** + * Checks if the new species is compatible with the other mons currently on the team. + */ + getPokemonCompatibility( + species: Species, + pokemon: RandomTeamsTypes.RandomSet[], + isDoubles = false + ): boolean { + const webSetters = [ + 'ariados', 'smeargle', 'masquerain', 'kricketune', 'leavanny', 'galvantula', 'vikavolt', 'ribombee', 'araquanid', 'spidops', + ]; + const screenSetters = ['meowstic', 'grimmsnarl', 'ninetalesalola', 'abomasnow']; + + const doublesWebSetters = ['ariados', 'kricketune', 'leavanny', 'galvantula', 'vikavolt', 'araquanid', 'spidops']; + const doublesScreenSetters = ['meowstic', 'klefki', 'grimmsnarl', 'ninetalesalola', 'abomasnow']; + + const sunSetters = ['ninetales', 'torkoal', 'groudon', 'koraidon']; + const rainSetters = ['politoed', 'pelipper', 'kyogre']; + const sandSetters = ['tyranitar', 'hippowdon']; + const snowSetters = ['ninetalesalola', 'abomasnow']; + + const incompatiblePokemon = [ + // These Pokemon with support roles are considered too similar to each other. + ['blissey', 'chansey'], + ['illumise', 'volbeat'], + + // These combinations are prevented to avoid double webs or screens. + [webSetters, webSetters], + [screenSetters, screenSetters], + + // These Pokemon are incompatible because the presence of one actively harms the other. + // Prevent Dry Skin + sun setting ability + ['toxicroak', sunSetters], + ]; + + const doublesIncompatiblePokemon = [ + // These Pokemon with support roles are considered too similar to each other. + ['illumise', 'volbeat'], + [['minun', 'plusle', 'pachirisu', 'raichu'], ['minun', 'plusle', 'pachirisu', 'raichu']], + + // These combinations are prevented to avoid double webs or screens. + [doublesWebSetters, doublesWebSetters], + [doublesScreenSetters, doublesScreenSetters], + + // These Pokemon are incompatible because the presence of one actively harms the other. + // Prevent Dry Skin + sun setting ability + ['toxicroak', sunSetters], + + // Prevent conflicting weather abilities from generating together + [sunSetters, [...rainSetters, ...sandSetters, ...snowSetters]], + [rainSetters, [...sandSetters, ...snowSetters]], + [sandSetters, snowSetters], + + // Prevent conflicting terrain abilities from generating together + [['pincurchin', 'miraidon'], ['indeedee', 'indeedeef', 'rillaboom']], + ['rillaboom', ['indeedee', 'indeedeef']], + ]; + + const incompatibilityList = isDoubles ? doublesIncompatiblePokemon : incompatiblePokemon; + for (const pair of incompatibilityList) { + const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]]; + const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]]; + if (monsArrayB.includes(species.id)) { + if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false; + } + if (monsArrayA.includes(species.id)) { + if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false; + } + } + + return true; + } + randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./sets.json'); randomDoublesSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./doubles-sets.json'); @@ -1737,6 +1818,9 @@ export class RandomTeams { if (!this.adjustLevel && (this.getLevel(species, isDoubles) === 100) && numMaxLevelPokemon >= limitFactor) { continue; } + + // Check compatibility with team + if (!this.getPokemonCompatibility(species, pokemon, isDoubles)) continue; } // Limit three of any type combination in Monotype diff --git a/sim/global-types.ts b/sim/global-types.ts index dab8ed3233..e663413e98 100644 --- a/sim/global-types.ts +++ b/sim/global-types.ts @@ -496,6 +496,7 @@ declare namespace RandomTeamsTypes { export interface RandomSet { name: string; species: string; + speciesId?: string; gender: string | boolean; moves: string[]; ability: string; From 376da145ff1465dd0e5032b93f78e220c894b4f9 Mon Sep 17 00:00:00 2001 From: Yoshiblaze <53023564+Yoshiblaze@users.noreply.github.com> Date: Sun, 1 Mar 2026 05:37:04 -0500 Subject: [PATCH 132/139] Add [Gen 6] Megas Revisited Random Battle (#11778) * March PMOTM Part 1 * March PMOTM Part 2 * March PMOTM Part 3 * March PMOTM Part 4 * March PMOTM Part 5 * Update data/mods/gen6megasrevisited/abilities.ts * Update data/mods/gen6megasrevisited/scripts.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 68 +- data/mods/gen6megasrevisited/abilities.ts | 369 + data/mods/gen6megasrevisited/formats-data.ts | 26 + data/mods/gen6megasrevisited/items.ts | 12 + data/mods/gen6megasrevisited/moves.ts | 77 + data/mods/gen6megasrevisited/pokedex.ts | 249 + data/mods/gen6megasrevisited/rulesets.ts | 33 + data/mods/gen6megasrevisited/scripts.ts | 237 + data/mods/sixbysix/formats-data.ts | 113 - data/mods/sixbysix/items.ts | 32 - data/mods/sixbysix/learnsets.ts | 2580 ---- data/mods/sixbysix/pokedex.ts | 542 - data/mods/sixbysix/rulesets.ts | 17 - data/mods/sixbysix/scripts.ts | 3 - .../gen6megasrevisited/factory-sets.json | 10319 ++++++++++++++++ .../gen6megasrevisited/sets.json | 6301 ++++++++++ .../gen6megasrevisited/teams.ts | 7 + data/random-battles/sixbysix/random-sets.json | 558 - data/random-battles/sixbysix/teams.ts | 960 -- 19 files changed, 17649 insertions(+), 4854 deletions(-) create mode 100644 data/mods/gen6megasrevisited/abilities.ts create mode 100644 data/mods/gen6megasrevisited/formats-data.ts create mode 100644 data/mods/gen6megasrevisited/items.ts create mode 100644 data/mods/gen6megasrevisited/moves.ts create mode 100644 data/mods/gen6megasrevisited/pokedex.ts create mode 100644 data/mods/gen6megasrevisited/rulesets.ts create mode 100644 data/mods/gen6megasrevisited/scripts.ts delete mode 100644 data/mods/sixbysix/formats-data.ts delete mode 100644 data/mods/sixbysix/items.ts delete mode 100644 data/mods/sixbysix/learnsets.ts delete mode 100644 data/mods/sixbysix/pokedex.ts delete mode 100644 data/mods/sixbysix/rulesets.ts delete mode 100644 data/mods/sixbysix/scripts.ts create mode 100644 data/random-battles/gen6megasrevisited/factory-sets.json create mode 100644 data/random-battles/gen6megasrevisited/sets.json create mode 100644 data/random-battles/gen6megasrevisited/teams.ts delete mode 100644 data/random-battles/sixbysix/random-sets.json delete mode 100644 data/random-battles/sixbysix/teams.ts diff --git a/config/formats.ts b/config/formats.ts index 5d1e9281c9..6c5557f8e2 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -627,27 +627,18 @@ export const Formats: import('../sim/dex-formats').FormatList = [ banlist: ['ND UU', 'ND RUBL', 'Slowbronite'], }, { - name: "[Gen 9] Six by Six Random Battle", - desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`, - mod: 'sixbysix', - team: 'random6x6', - ruleset: [ - 'Species Clause', 'HP Percentage Mod', 'Cancel Mod', 'Sleep Clause Mod', 'Illusion Level Mod', - 'Terastal Clause', 'Data Preview', 'Sprite Viewer', - ], + name: "[Gen 6] Megas Revisited Random Battle", + desc: `A Gen 6 metagame where every Mega Evolution was reevaluated and redesigned.`, + mod: 'gen6megasrevisited', + team: 'random', + bestOfDefault: true, + ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod', 'Mega Data Mod'], onBegin() { - this.add('-message', `Welcome to Six by Six!`); - this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`); + this.add(`raw|
    Need help with all of the new Megas and abilities?
    Then make sure to check out the spreadsheet or use /dt!
    `); + this.add('-message', `Welcome to Megas Revisited!`); + this.add('-message', `This is a Generation 6 OU-based Pet Mod where every existing Mega Evolution has been redesigned.`); this.add('-message', `You can find our thread and metagame resources here:`); - this.add('-message', `https://www.smogon.com/forums/threads/3769141/`); - }, - onSwitchInPriority: 100, - onSwitchIn(pokemon) { - if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !== - this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') && - !pokemon.terastallized) { - this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]'); - } + this.add('-message', `https://www.smogon.com/forums/threads/3713949/`); }, }, { @@ -3469,39 +3460,18 @@ export const Formats: import('../sim/dex-formats').FormatList = [ section: "Pet Mods", }, { - name: "[Gen 9] Six by Six", // Roomtours - desc: `A Gen 9 micrometa featuring only 6 Pokemon with 6 forms each.`, - mod: 'sixbysix', + name: "[Gen 6] Megas Revisited", // Roomtours + desc: `A Gen 6 metagame where every Mega Evolution was reevaluated and redesigned.`, + mod: 'gen6megasrevisited', searchShow: false, - ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Terastal Clause', 'Data Preview', 'Sprite Viewer'], - banlist: [ - 'All Pokemon', 'Last Respects', 'Shed Tail', - 'King\'s Rock', 'Razor Fang', 'Baton Pass', - ], - unbanlist: [ - 'Kingdra-Classic', 'Kingdra-Brinepool', 'Kingdra-Druid', 'Kingdra-Bard', 'Kingdra-Gourmet', 'Kingdra-Ancient', - 'Nidoqueen-Classic', 'Nidoqueen-Erudite', 'Nidoqueen-Volcanic', - 'Nidoqueen-Rosegold', 'Nidoqueen-Shaman', 'Nidoqueen-Jasper', - 'Bisharp-Centurion', 'Bisharp-Savage', 'Bisharp-Ronin', 'Bisharp-Mantis', 'Bisharp-Revenant', 'Bisharp-Assassin', - 'Corviknight-Thunderbird', 'Corviknight-Genie', 'Corviknight-Yeti', - 'Corviknight-Analytical', 'Corviknight-Martian', 'Corviknight-Falcon', - 'Krookodile-Infernal', 'Krookodile-Abyssal', 'Krookodile-Wetlander', - 'Krookodile-Cave Dweller', 'Krookodile-Cliffside', 'Krookodile-Quantum', - 'Ogerpon-Muerta', 'Ogerpon-Easter', 'Ogerpon-Ankh', 'Ogerpon-Eid', 'Ogerpon-Vessel', 'Ogerpon-Kitsune', - ], + ruleset: ['Standard', 'Swagger Clause', 'Mega Data Mod'], + banlist: ['Uber', 'Arena Trap', 'Shadow Tag', 'Soul Dew', 'Baton Pass', 'Blaziken + Speed Boost'], onBegin() { - this.add('-message', `Welcome to Six by Six!`); - this.add('-message', `This is a micrometa featuring just 6 Pokemon, each with 6 forms each!`); + this.add(`raw|
    Need help with all of the new Megas and abilities?
    Then make sure to check out the spreadsheet or use /dt!
    `); + this.add('-message', `Welcome to Megas Revisited!`); + this.add('-message', `This is a Generation 6 OU-based Pet Mod where every existing Mega Evolution has been redesigned.`); this.add('-message', `You can find our thread and metagame resources here:`); - this.add('-message', `https://www.smogon.com/forums/threads/3769141/`); - }, - onSwitchInPriority: 100, - onSwitchIn(pokemon) { - if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !== - this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') && - !pokemon.terastallized) { - this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]'); - } + this.add('-message', `https://www.smogon.com/forums/threads/3713949/`); }, }, { diff --git a/data/mods/gen6megasrevisited/abilities.ts b/data/mods/gen6megasrevisited/abilities.ts new file mode 100644 index 0000000000..037690e30b --- /dev/null +++ b/data/mods/gen6megasrevisited/abilities.ts @@ -0,0 +1,369 @@ +export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = { + merciless: { + shortDesc: "This Pokemon's attacks are critical hits if the target is statused.", + onModifyCritRatio(critRatio, source, target) { + if (target?.status) return 5; + }, + name: "Merciless", + rating: 1.5, + num: 196, + gen: 6, + }, + pocketdimension: { + shortDesc: "This Pokemon switches out after using a status move.", + onModifyMove(move, pokemon) { + if (move.category === 'Status') { + move.selfSwitch = true; + this.add('-ability', pokemon, 'Pocket Dimension'); + this.add('-message', `${pokemon.name} will switch out if this moves lands!`); + } + }, + name: "Pocket Dimension", + rating: 4.5, + }, + grassysurge: { + inherit: true, + gen: 6, + }, + mistysurge: { + inherit: true, + gen: 6, + }, + neutralizinggas: { + inherit: true, + // Ability suppression cancelled in scripts.ts + // new Ability suppression implemented in scripts.ts + onSwitchIn(pokemon) {}, + onEnd(source) {}, + onStart(pokemon) { + this.add('-ability', pokemon, 'Neutralizing Gas'); + }, + // onModifyPriority implemented in relevant abilities + onFoeBeforeMovePriority: 13, + onFoeBeforeMove(attacker, defender, move) { + attacker.addVolatile('neutralizinggas'); + }, + condition: { + onAfterMove(pokemon) { + pokemon.removeVolatile('neutralizinggas'); + }, + }, + flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 }, + desc: "While this Pokemon is active, opposing Pokemon's moves and their effects ignore its own Ability. Does not affect the As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, or Zen Mode Abilities.", + shortDesc: "While this Pokemon is active, opposing Pokemon's Ability has no effect when it uses moves.", + gen: 6, + }, + nostalgiatrip: { + shortDesc: "This Pokemon's moves have the damage categories they would have in Gen 3. Fairy-type moves are Special.", + onStart(pokemon) { + this.add('-ability', pokemon, 'Nostalgia Trip'); + this.add('-message', `This Pokemon is experiencing a nostalgia trip!`); + }, + onModifyMovePriority: 8, + onModifyMove(move, pokemon) { + if (move.category === "Status") return; + if (['Fire', 'Water', 'Grass', 'Electric', 'Dark', 'Psychic', 'Dragon', 'Fairy', 'Ice'].includes(move.type)) { + move.category = "Special"; + } else { + move.category = "Physical"; + } + }, + name: "Nostalgia Trip", + rating: 4, + gen: 6, + }, + weatherreport: { + onBeforeMovePriority: 0.5, + onBeforeMove(target, source, move) { + if (move.type === 'Fire') { + this.field.setWeather('sunnyday'); + } else if (move.type === 'Water') { + this.field.setWeather('raindance'); + } + }, + name: "Weather Report", + shortDesc: "Before using a Water or Fire-type move, this Pokemon sets Rain Dance or Sunny Day respectively.", + rating: 4, + gen: 6, + }, + armortail: { + inherit: true, + gen: 6, + }, + brainpower: { + onModifySpAPriority: 5, + onModifySpA(spa) { + return this.chainModify(2); + }, + name: "Brain Power", + shortDesc: "This Pokemon's Special Attack is doubled.", + rating: 5, + }, + neuroforce: { + inherit: true, + gen: 6, + }, + bugzapper: { + onTryHit(target, source, move) { + if (target !== source && move.type === 'Bug') { + if (!source.addVolatile('trapped', target, move, 'trapper')) { + this.add('-immune', target, '[from] ability: Bug Zapper'); + } + return null; + } + }, + name: "Bug Zapper", + shortDesc: "This Pokemon is immune to Bug-type moves and traps the foe if hit by one.", + rating: 5, + }, + exoskeleton: { + onSourceModifyDamage(damage, source, target, move) { + if (move.category === 'Physical') { + return this.chainModify(0.5); + } + }, + name: "Exoskeleton", + shortDesc: "This Pokemon receives 1/2 damage from physical attacks; Hazard immunity.", + rating: 4, + }, + icescales: { + inherit: true, + onModifyAtkPriority: 5, + onModifyAtk(atk, attacker, defender, move) { + if (move.type === 'Ice') { + this.debug('Ice Scales boost'); + return this.chainModify(1.5); + } + }, + onModifySpAPriority: 5, + onModifySpA(atk, attacker, defender, move) { + if (move.type === 'Ice') { + this.debug('Ice Scales boost'); + return this.chainModify(1.5); + } + }, + onImmunity(type, pokemon) { + if (type === 'hail') return false; + }, + shortDesc: "This Pokemon receives 1/2 damage from special attacks. Ice moves have 1.5x power. Hail immunity.", + gen: 6, + }, + eartheater: { + inherit: true, + onDamage(damage, target, source, effect) { + if (effect && (effect.id === 'stealthrock' || effect.id === 'spikes')) { + this.heal(damage); + return false; + } + }, + shortDesc: "Heals 1/4 of its max HP when hit by Ground; Ground immunity. Healed by Spikes and Stealth Rock.", + gen: 6, + }, + toxicchain: { + inherit: true, + gen: 6, + }, + shellejection: { + onModifyMovePriority: -1, + onModifyMove(move, attacker) { + if (move.category === 'Special') { + attacker.addVolatile('shellejection'); + this.add('-ability', attacker, 'Shell Ejection'); + this.add('-message', `${attacker.name} is getting ready to leave the battlefield!`); + this.add('-message', `${attacker.name} can no longer use status moves!`); + } + }, + condition: { + duration: 2, + onDisableMove(pokemon) { + for (const moveSlot of pokemon.moveSlots) { + const move = this.dex.moves.get(moveSlot.id); + if (move.category === 'Status' && move.id !== 'mefirst') { + pokemon.disableMove(moveSlot.id); + } + } + }, + onSwitchOut(pokemon) { + pokemon.heal(pokemon.baseMaxhp / 3); + }, + onEnd(pokemon) { + this.add('-ability', pokemon, 'Shell Ejection'); + this.add('-message', `${pokemon.name} ejected itself from its shell!`); + pokemon.heal(pokemon.baseMaxhp / 3); + pokemon.switchFlag = true; + }, + }, + name: "Shell Ejection", + rating: 3.5, + gen: 6, + shortDesc: "On using Special move: switching heals 1/3, can't use status, switches out at end of next turn.", + }, + sharpness: { + inherit: true, + gen: 6, + }, + dauntlessshield: { + onStart(pokemon) { + this.boost({ def: 1 }, pokemon); + pokemon.addVolatile('dauntlessshield'); + }, + onResidualOrder: 6, + onResidual(pokemon) { + if (pokemon.positiveBoosts()) { + this.heal(pokemon.baseMaxhp / 16); + this.add('-message', `${pokemon.name}'s shield gives it strength!`); + } + }, + name: "Dauntless Shield", + rating: 5, + num: 235, + shortDesc: "+1 Defense on switch-in. Heals 1/16 of max HP if it has a positive boost.", + gen: 6, + }, + confidence: { + onSourceAfterFaint(length, target, source, effect) { + if (effect && effect.effectType === 'Move') { + this.boost({ spa: length }, source); + } + }, + name: "Confidence", + rating: 3, + shortDesc: "This Pokemon's Sp. Atk is raised by 1 stage if it attacks and KOes another Pokemon.", + gen: 6, + }, + electricsurge: { + inherit: true, + gen: 6, + }, + goodasgold: { + inherit: true, + gen: 6, + }, + opportunist: { + inherit: true, + onUpdate(pokemon) { + let activate = false; + const boosts: SparseBoostsTable = {}; + let i: BoostID; + for (i in pokemon.boosts) { + if (pokemon.boosts[i] < 0) { + activate = true; + boosts[i] = 0; + } + } + if (this.effectState.herb) return; + if (activate) { + pokemon.setBoost(boosts); + this.effectState.herb = true; + this.add('-ability', pokemon, 'Opportunist'); + this.add('-clearnegativeboost', pokemon, '[silent]'); + } + }, + onSwitchIn(pokemon) { + delete this.effectState.herb; + }, + shortDesc: "Copies foe's stat gains as they happen. Resets negative stat changes once per switch-in.", + gen: 6, + }, + intoxicate: { + onModifyTypePriority: -1, + onModifyType(move, pokemon) { + const noModifyType = [ + 'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball', + ]; + if (move.type === 'Normal' && !noModifyType.includes(move.id) && + !(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) { + move.type = 'Poison'; + move.typeChangerBoosted = this.effect; + } + }, + onBasePowerPriority: 23, + onBasePower(basePower, pokemon, target, move) { + if (move.typeChangerBoosted) return this.chainModify([5325, 4096]); + }, + name: "Intoxicate", + rating: 4, + shortDesc: "This Pokemon's Normal-type moves become Poison-type and have 1.3x power.", + }, + dragonsgale: { + onStart(source) { + this.field.setWeather('deltastream'); + }, + onAnySetWeather(target, source, weather) { + const strongWeathers = ['desolateland', 'primordialsea', 'deltastream']; + if (this.field.getWeather().id === 'deltastream' && !strongWeathers.includes(weather.id)) return false; + }, + onEnd(pokemon) { + if (this.field.weatherState.source !== pokemon) return; + for (const target of this.getAllActive()) { + if (target === pokemon) continue; + if (target.hasAbility('dragonsgale')) { + this.field.weatherState.source = target; + return; + } + } + this.field.clearWeather(); + }, + onDamage(damage, target, source, effect) { + if (effect && (effect.id === 'stealthrock' || effect.id === 'spikes')) { + return damage / 2; + } + }, + flags: {}, + name: "Dragon's Gale", + shortDesc: "On switch-in, sets Delta Stream. User takes halved damage from hazards.", + rating: 5, + }, + parentalbond: { + onPrepareHit(source, target, move) { + if (move.category === 'Status' || move.selfdestruct || move.multihit) return; + if ([ + 'endeavor', 'seismictoss', 'psywave', 'nightshade', 'sonicboom', 'dragonrage', + 'superfang', 'naturesmadness', 'bide', 'counter', 'mirrorcoat', 'metalburst', + ].includes(move.id)) return; + if (!move.spreadHit && !move.isZ && !move.isMax) { + move.multihit = 2; + move.multihitType = 'parentalbond'; + } + }, + onSourceModifySecondaries(secondaries, target, source, move) { + if (move.multihitType === 'parentalbond' && move.id === 'secretpower' && move.hit < 2) { + // hack to prevent accidentally suppressing King's Rock/Razor Fang + return secondaries.filter(effect => effect.volatileStatus === 'flinch'); + } + }, + name: "Parental Bond", + rating: 4.5, + shortDesc: "This Pokemon's damaging moves hit twice. The second hit has its damage quartered.", + num: 184, + }, + + // for ngas + galewings: { + // for ngas + inherit: true, + onModifyPriority(priority, pokemon, target, move) { + for (const poke of this.getAllActive()) { + if (poke.hasAbility('neutralizinggas') && poke.side.id !== pokemon.side.id && !poke.abilityState.ending) { + return; + } + } + if (move && move.type === 'Flying') return priority + 1; + }, + }, + prankster: { + // for ngas + inherit: true, + onModifyPriority(priority, pokemon, target, move) { + for (const poke of this.getAllActive()) { + if (poke.hasAbility('neutralizinggas') && poke.side.id !== pokemon.side.id && !poke.abilityState.ending) { + return; + } + } + if (move?.category === 'Status') { + move.pranksterBoosted = true; + return priority + 1; + } + }, + }, +}; diff --git a/data/mods/gen6megasrevisited/formats-data.ts b/data/mods/gen6megasrevisited/formats-data.ts new file mode 100644 index 0000000000..a5d97dda38 --- /dev/null +++ b/data/mods/gen6megasrevisited/formats-data.ts @@ -0,0 +1,26 @@ +export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = { + blaziken: { + tier: "OU", + }, + blazikenmega: { + tier: "OU", + }, + gengarmega: { + tier: "OU", + }, + kangaskhanmega: { + tier: "OU", + }, + lucariomega: { + tier: "OU", + }, + mawilemega: { + tier: "OU", + }, + sableyemega: { + tier: "OU", + }, + salamencemega: { + tier: "OU", + }, +}; diff --git a/data/mods/gen6megasrevisited/items.ts b/data/mods/gen6megasrevisited/items.ts new file mode 100644 index 0000000000..90f2c22c71 --- /dev/null +++ b/data/mods/gen6megasrevisited/items.ts @@ -0,0 +1,12 @@ +export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { + meteorite: { + name: "Meteorite", + spritenum: 615, + megaStone: { "Rayquaza": "Rayquaza-Mega" }, + itemUser: ["Rayquaza"], + onTakeItem(item, source) { + return !item.megaStone?.[source.baseSpecies.baseSpecies]; + }, + desc: "If held by a Rayquaza, this item allows it to Mega Evolve in battle.", + }, +}; diff --git a/data/mods/gen6megasrevisited/moves.ts b/data/mods/gen6megasrevisited/moves.ts new file mode 100644 index 0000000000..b8e3a95b36 --- /dev/null +++ b/data/mods/gen6megasrevisited/moves.ts @@ -0,0 +1,77 @@ +export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = { + stealthrock: { + inherit: true, + condition: { + // this is a side condition + onSideStart(side) { + this.add('-sidestart', side, 'move: Stealth Rock'); + }, + onSwitchIn(pokemon) { + if (pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) return; + const typeMod = this.clampIntRange(pokemon.runEffectiveness(this.dex.getActiveMove('stealthrock')), -6, 6); + this.damage(pokemon.maxhp * (2 ** typeMod) / 8); + }, + }, + }, + toxicspikes: { + inherit: true, + condition: { + // this is a side condition + onSideStart(side) { + this.add('-sidestart', side, 'move: Toxic Spikes'); + this.effectState.layers = 1; + }, + onSideRestart(side) { + if (this.effectState.layers >= 2) return false; + this.add('-sidestart', side, 'move: Toxic Spikes'); + this.effectState.layers++; + }, + onSwitchIn(pokemon) { + if (!pokemon.isGrounded()) return; + if (pokemon.hasType('Poison')) { + this.add('-sideend', pokemon.side, 'move: Toxic Spikes', `[of] ${pokemon}`); + pokemon.side.removeSideCondition('toxicspikes'); + } else if (pokemon.hasType('Steel') || pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) { + // do nothing + } else if (this.effectState.layers >= 2) { + pokemon.trySetStatus('tox', pokemon.side.foe.active[0]); + } else { + pokemon.trySetStatus('psn', pokemon.side.foe.active[0]); + } + }, + }, + }, + spikes: { + inherit: true, + condition: { + // this is a side condition + onSideStart(side) { + this.add('-sidestart', side, 'Spikes'); + this.effectState.layers = 1; + }, + onSideRestart(side) { + if (this.effectState.layers >= 3) return false; + this.add('-sidestart', side, 'Spikes'); + this.effectState.layers++; + }, + onSwitchIn(pokemon) { + if (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) return; + const damageAmounts = [0, 3, 4, 6]; // 1/8, 1/6, 1/4 + this.damage(damageAmounts[this.effectState.layers] * pokemon.maxhp / 24); + }, + }, + }, + stickyweb: { + inherit: true, + condition: { + onSideStart(side) { + this.add('-sidestart', side, 'move: Sticky Web'); + }, + onSwitchIn(pokemon) { + if (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) return; + this.add('-activate', pokemon, 'move: Sticky Web'); + this.boost({ spe: -1 }, pokemon, pokemon.side.foe.active[0], this.dex.getActiveMove('stickyweb')); + }, + }, + }, +}; diff --git a/data/mods/gen6megasrevisited/pokedex.ts b/data/mods/gen6megasrevisited/pokedex.ts new file mode 100644 index 0000000000..70821f3c7f --- /dev/null +++ b/data/mods/gen6megasrevisited/pokedex.ts @@ -0,0 +1,249 @@ +export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = { + audinomega: { + inherit: true, + types: ["Normal", "Electric"], + baseStats: { hp: 103, atk: 60, def: 120, spa: 110, spd: 97, spe: 55 }, + abilities: { 0: "Regenerator" }, + }, + houndoommega: { + inherit: true, + types: ["Dark", "Fire"], + baseStats: { hp: 75, atk: 90, def: 90, spa: 140, spd: 90, spe: 115 }, + abilities: { 0: "Merciless" }, + }, + lucariomega: { + inherit: true, + types: ["Fighting", "Steel"], + baseStats: { hp: 70, atk: 125, def: 70, spa: 140, spd: 94, spe: 126 }, + abilities: { 0: "Lightning Rod" }, + }, + banettemega: { + inherit: true, + types: ["Ghost", "Steel"], + baseStats: { hp: 64, atk: 149, def: 75, spa: 83, spd: 83, spe: 101 }, + abilities: { 0: "Pocket Dimension" }, + }, + glaliemega: { + inherit: true, + types: ["Ice", "Steel"], + baseStats: { hp: 80, atk: 160, def: 70, spa: 95, spd: 70, spe: 105 }, + abilities: { 0: "Refrigerate" }, + }, + venusaurmega: { + inherit: true, + types: ["Grass", "Poison"], + baseStats: { hp: 80, atk: 82, def: 123, spa: 120, spd: 120, spe: 100 }, + abilities: { 0: "Grassy Surge" }, + }, + blastoisemega: { + inherit: true, + types: ["Water", "Fairy"], + baseStats: { hp: 79, atk: 83, def: 130, spa: 135, spd: 105, spe: 98 }, + abilities: { 0: "Misty Surge" }, + }, + charizardmegay: { + inherit: true, + types: ["Fire", "Flying"], + baseStats: { hp: 78, atk: 94, def: 93, spa: 159, spd: 110, spe: 100 }, + abilities: { 0: "Dragon's Gale" }, + }, + alakazammega: { + inherit: true, + types: ["Psychic", "Ice"], + baseStats: { hp: 55, atk: 50, def: 75, spa: 155, spd: 125, spe: 140 }, + abilities: { 0: "Magic Guard" }, + }, + pinsirmega: { + inherit: true, + types: ["Bug", "Ice"], + baseStats: { hp: 65, atk: 150, def: 110, spa: 80, spd: 85, spe: 110 }, + abilities: { 0: "Mountaineer" }, + }, + gengarmega: { + inherit: true, + types: ["Ghost", "Poison"], + baseStats: { hp: 60, atk: 65, def: 105, spa: 155, spd: 105, spe: 110 }, + abilities: { 0: "Neutralizing Gas" }, + }, + aerodactylmega: { + inherit: true, + types: ["Rock", "Flying"], + baseStats: { hp: 80, atk: 140, def: 65, spa: 85, spd: 100, spe: 145 }, + abilities: { 0: "Nostalgia Trip" }, + }, + steelixmega: { + inherit: true, + types: ["Steel", "Ground"], + baseStats: { hp: 75, atk: 135, def: 210, spa: 55, spd: 105, spe: 30 }, + abilities: { 0: "Flash Fire" }, + weightkg: 999.9, + }, + altariamega: { + inherit: true, + types: ["Dragon", "Fairy"], + baseStats: { hp: 75, atk: 90, def: 90, spa: 140, spd: 115, spe: 80 }, + abilities: { 0: "Weather Report" }, + }, + sceptilemega: { + inherit: true, + types: ["Grass", "Dragon"], + baseStats: { hp: 70, atk: 95, def: 79, spa: 145, spd: 99, spe: 142 }, + abilities: { 0: "Armor Tail" }, + }, + swampertmega: { + inherit: true, + types: ["Water", "Poison"], + baseStats: { hp: 100, atk: 145, def: 110, spa: 85, spd: 110, spe: 85 }, + abilities: { 0: "Toxic Chain" }, + }, + manectricmega: { + inherit: true, + types: ["Electric"], + baseStats: { hp: 70, atk: 75, def: 80, spa: 135, spd: 85, spe: 130 }, + abilities: { 0: "Bug Zapper" }, + }, + absolmega: { + inherit: true, + types: ["Dark", "Fairy"], + baseStats: { hp: 65, atk: 130, def: 60, spa: 135, spd: 60, spe: 115 }, + abilities: { 0: "Neuroforce" }, + }, + medichammega: { + inherit: true, + types: ["Fighting", "Psychic"], + baseStats: { hp: 60, atk: 60, def: 100, spa: 90, spd: 100, spe: 100 }, + abilities: { 0: "Brain Power" }, + }, + sableyemega: { + inherit: true, + types: ["Dark", "Ghost"], + baseStats: { hp: 50, atk: 95, def: 115, spa: 85, spd: 115, spe: 20 }, + }, + beedrillmega: { + inherit: true, + types: ["Bug", "Rock"], + baseStats: { hp: 65, atk: 140, def: 85, spa: 45, spd: 85, spe: 75 }, + abilities: { 0: "Exoskeleton" }, + }, + mawilemega: { + inherit: true, + types: ["Steel", "Fairy"], + baseStats: { hp: 50, atk: 90, def: 125, spa: 70, spd: 95, spe: 50 }, + abilities: { 0: "Huge Power" }, + }, + abomasnowmega: { + inherit: true, + types: ["Grass"], + abilities: { 0: "Ice Scales" }, + }, + cameruptmega: { + inherit: true, + types: ["Fire", "Ground"], + baseStats: { hp: 70, atk: 80, def: 140, spa: 135, spd: 115, spe: 20 }, + abilities: { 0: "Earth Eater" }, + }, + slowbromega: { + inherit: true, + types: ["Water", "Psychic"], + baseStats: { hp: 95, atk: 75, def: 150, spa: 120, spd: 120, spe: 30 }, + abilities: { 0: "Shell Ejection" }, + }, + gallademega: { + inherit: true, + types: ["Psychic", "Fighting"], + baseStats: { hp: 68, atk: 150, def: 100, spa: 75, spd: 127, spe: 98 }, + abilities: { 0: "Sharpness" }, + }, + ampharosmega: { + inherit: true, + types: ["Electric", "Dragon"], + baseStats: { hp: 90, atk: 95, def: 95, spa: 165, spd: 110, spe: 55 }, + abilities: { 0: "Mega Launcher" }, + }, + gyaradosmega: { + inherit: true, + types: ["Water", "Flying"], + baseStats: { hp: 95, atk: 130, def: 109, spa: 85, spd: 130, spe: 91 }, + abilities: { 0: "Aerilate" }, + }, + heracrossmega: { + inherit: true, + types: ["Bug", "Fighting"], + baseStats: { hp: 80, atk: 150, def: 150, spa: 40, spd: 110, spe: 70 }, + abilities: { 0: "Iron Barbs" }, + }, + sharpedomega: { + inherit: true, + types: ["Water", "Electric"], + baseStats: { hp: 70, atk: 130, def: 55, spa: 145, spd: 55, spe: 105 }, + abilities: { 0: "No Guard" }, + }, + gardevoirmega: { + inherit: true, + types: ["Psychic", "Fairy"], + baseStats: { hp: 68, atk: 65, def: 100, spa: 150, spd: 127, spe: 108 }, + }, + aggronmega: { + inherit: true, + types: ["Steel"], + baseStats: { hp: 70, atk: 145, def: 185, spa: 85, spd: 85, spe: 60 }, + abilities: { 0: "Dauntless Shield" }, + }, + kangaskhanmega: { + inherit: true, + types: ["Normal", "Ground"], + baseStats: { hp: 105, atk: 125, def: 105, spa: 50, spd: 105, spe: 100 }, + }, + salamencemega: { + inherit: true, + types: ["Dragon", "Flying"], + baseStats: { hp: 95, atk: 135, def: 105, spa: 155, spd: 105, spe: 105 }, + abilities: { 0: "Confidence" }, + }, + garchompmega: { + inherit: true, + types: ["Dragon", "Ground"], + baseStats: { hp: 108, atk: 150, def: 115, spa: 140, spd: 85, spe: 102 }, + abilities: { 0: "Water Absorb" }, + }, + tyranitarmega: { + inherit: true, + types: ["Rock", "Electric"], + baseStats: { hp: 100, atk: 144, def: 120, spa: 110, spd: 144, spe: 82 }, + abilities: { 0: "Electric Surge" }, + }, + latiasmega: { + inherit: true, + abilities: { 0: "Trace" }, + }, + latiosmega: { + inherit: true, + baseStats: { hp: 80, atk: 140, def: 100, spa: 150, spd: 120, spe: 110 }, + abilities: { 0: "Opportunist" }, + }, + dianciemega: { + inherit: true, + abilities: { 0: "Good As Gold" }, + }, + blazikenmega: { + inherit: true, + baseStats: { hp: 80, atk: 150, def: 80, spa: 120, spd: 90, spe: 110 }, + abilities: { 0: "Regenerator" }, + }, + mewtwomegax: { + inherit: true, + types: ["Psychic", "Poison"], + baseStats: { hp: 106, atk: 140, def: 130, spa: 154, spd: 120, spe: 130 }, + abilities: { 0: "Intoxicate" }, + }, + mewtwomegay: { + inherit: true, + types: ["Psychic", "Water"], + baseStats: { hp: 106, atk: 120, def: 110, spa: 194, spd: 130, spe: 120 }, + abilities: { 0: "Levitate" }, + }, + rayquazamega: { + inherit: true, + requiredItem: "Meteorite", + }, +}; diff --git a/data/mods/gen6megasrevisited/rulesets.ts b/data/mods/gen6megasrevisited/rulesets.ts new file mode 100644 index 0000000000..b1a52de493 --- /dev/null +++ b/data/mods/gen6megasrevisited/rulesets.ts @@ -0,0 +1,33 @@ +export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = { + megadatamod: { + effectType: 'Rule', + name: 'Mega Data Mod', + desc: 'Gives data on stats, Ability and types when a Pokémon Mega Evolves or undergoes Ultra Burst.', + onSwitchIn(pokemon) { + if (pokemon.species.forme.startsWith('Mega') || pokemon.species.forme.startsWith('Ultra')) { + this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); + } + }, + onAfterMega(pokemon) { + this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]'); + const species = pokemon.species; + let buf = `${species.name} `; + buf += ``; + buf += `${species.types[0]}`; + if (species.types[1]) { + buf += `${species.types[1]}`; + } + buf += ` `; + buf += `${species.abilities[0]}`; + const stats = []; + let stat: StatID; + for (stat in species.baseStats) { + const statNames: { [k in StatID]: string } = { hp: "HP", atk: "Atk", def: "Def", spa: "SpA", spd: "SpD", spe: "Spe" }; + stats.push(`${statNames[stat]}
    ${species.baseStats[stat]}
    `); + } + buf += `${stats.join(' ')}`; + buf += ``; + this.add(`raw|
    • ${buf}
    `); + }, + }, +}; diff --git a/data/mods/gen6megasrevisited/scripts.ts b/data/mods/gen6megasrevisited/scripts.ts new file mode 100644 index 0000000000..fe185cc6a0 --- /dev/null +++ b/data/mods/gen6megasrevisited/scripts.ts @@ -0,0 +1,237 @@ +export const Scripts: ModdedBattleScriptsData = { + gen: 6, + inherit: 'gen6', + actions: { + // for parental bond + modifyDamage( + baseDamage: number, pokemon: Pokemon, target: Pokemon, move: ActiveMove, suppressMessages = false + ) { + const tr = this.battle.trunc; + if (!move.type) move.type = '???'; + const type = move.type; + baseDamage += 2; + if (move.spreadHit) { + // multi-target modifier (doubles only) + const spreadModifier = this.battle.gameType === 'freeforall' ? 0.5 : 0.75; + this.battle.debug(`Spread modifier: ${spreadModifier}`); + baseDamage = this.battle.modify(baseDamage, spreadModifier); + } else if (move.multihitType === 'parentalbond' && move.hit > 1) { + // Parental Bond modifier + const bondModifier = 0.25; + this.battle.debug(`Parental Bond modifier: ${bondModifier}`); + baseDamage = this.battle.modify(baseDamage, bondModifier); + } + baseDamage = this.battle.runEvent('WeatherModifyDamage', pokemon, target, move, baseDamage); + const isCrit = target.getMoveHitData(move).crit; + if (isCrit) { + baseDamage = tr(baseDamage * (move.critModifier || (this.battle.gen >= 6 ? 1.5 : 2))); + } + baseDamage = this.battle.randomizer(baseDamage); + if (type !== '???') { + let stab: number | [number, number] = 1; + const isSTAB = move.forceSTAB || pokemon.hasType(type) || pokemon.getTypes(false, true).includes(type); + if (isSTAB) { + stab = 1.5; + } + if (pokemon.terastallized === 'Stellar') { + if (!pokemon.stellarBoostedTypes.includes(type) || move.stellarBoosted) { + stab = isSTAB ? 2 : [4915, 4096]; + move.stellarBoosted = true; + if (pokemon.species.name !== 'Terapagos-Stellar') { + pokemon.stellarBoostedTypes.push(type); + } + } + } else { + if (pokemon.terastallized === type && pokemon.getTypes(false, true).includes(type)) { + stab = 2; + } + stab = this.battle.runEvent('ModifySTAB', pokemon, target, move, stab); + } + baseDamage = this.battle.modify(baseDamage, stab); + } + let typeMod = target.runEffectiveness(move); + typeMod = this.battle.clampIntRange(typeMod, -6, 6); + target.getMoveHitData(move).typeMod = typeMod; + if (typeMod > 0) { + if (!suppressMessages) this.battle.add('-supereffective', target); + for (let i = 0; i < typeMod; i++) { + baseDamage *= 2; + } + } + if (typeMod < 0) { + if (!suppressMessages) this.battle.add('-resisted', target); + + for (let i = 0; i > typeMod; i--) { + baseDamage = tr(baseDamage / 2); + } + } + if (isCrit && !suppressMessages) this.battle.add('-crit', target); + if (pokemon.status === 'brn' && move.category === 'Physical' && !pokemon.hasAbility('guts')) { + if (this.battle.gen < 6 || move.id !== 'facade') { + baseDamage = this.battle.modify(baseDamage, 0.5); + } + } + // Generation 5, but nothing later, sets damage to 1 before the final damage modifiers + if (this.battle.gen === 5 && !baseDamage) baseDamage = 1; + // Final modifier. Modifiers that modify damage after min damage check, such as Life Orb. + baseDamage = this.battle.runEvent('ModifyDamage', pokemon, target, move, baseDamage); + if (move.isZOrMaxPowered && target.getMoveHitData(move).zBrokeProtect) { + baseDamage = this.battle.modify(baseDamage, 0.25); + this.battle.add('-zbroken', target); + } + // Generation 6-7 moves the check for minimum 1 damage after the final modifier... + if (this.battle.gen !== 5 && !baseDamage) return 1; + // ...but 16-bit truncation happens even later, and can truncate to 0 + return tr(baseDamage, 16); + }, + }, + pokemon: { + // for neutralizing gas + ignoringAbility() { + if (this.battle.gen >= 5 && !this.isActive) return true; + if (this.getAbility().flags['notransform'] && this.transformed) return true; + if (this.getAbility().flags['cantsuppress']) return false; + if (this.volatiles['gastroacid']) return true; + if (this.ability === ('neutralizinggas' as ID)) return false; + if (this.volatiles['neutralizinggas']) return true; + return false; + }, + }, + init() { + this.modData("Learnsets", "lucario").learnset.meteormash = ["6L1"]; + this.modData("Learnsets", "lucario").learnset.machpunch = ["6L1"]; + this.modData("Learnsets", "houndoom").learnset.toxicspikes = ["6L1"]; + this.modData("Learnsets", "houndoom").learnset.venoshock = ["6L1"]; + this.modData("Learnsets", "houndoom").learnset.hex = ["6L1"]; + this.modData("Learnsets", "audino").learnset.discharge = ["6L1"]; + this.modData("Learnsets", "audino").learnset.voltswitch = ["6L1"]; + this.modData("Learnsets", "audino").learnset.chargebeam = ["6L1"]; + this.modData("Learnsets", "audino").learnset.charge = ["6L1"]; + this.modData("Learnsets", "audino").learnset.zapcannon = ["6L1"]; + this.modData("Learnsets", "glalie").learnset.thunderfang = ["6L1"]; + this.modData("Learnsets", "glalie").learnset.partingshot = ["6L1"]; + this.modData("Learnsets", "glalie").learnset.boomburst = ["6L1"]; + this.modData("Learnsets", "banette").learnset.ironhead = ["6L1"]; + this.modData("Learnsets", "banette").learnset.metalsound = ["6L1"]; + this.modData("Learnsets", "banette").learnset.powder = ["6L1"]; + this.modData("Learnsets", "banette").learnset.stealthrock = ["6L1"]; + this.modData("Learnsets", "banette").learnset.defog = ["6L1"]; + this.modData("Learnsets", "venusaur").learnset.psychic = ["6L1"]; + this.modData("Learnsets", "venusaur").learnset.calmmind = ["6L1"]; + this.modData("Learnsets", "blastoise").learnset.moonblast = ["6L1"]; + this.modData("Learnsets", "blastoise").learnset.mistyterrain = ["6L1"]; + this.modData("Learnsets", "blastoise").learnset.taunt = ["6L1"]; + this.modData("Learnsets", "blastoise").learnset.drainingkiss = ["6L1"]; + this.modData("Learnsets", "blastoise").learnset.dazzlinggleam = ["6L1"]; + this.modData("Learnsets", "charizard").learnset.calmmind = ["6L1"]; + this.modData("Learnsets", "charizard").learnset.hurricane = ["6L1"]; + this.modData("Learnsets", "charizard").learnset.lavaplume = ["6L1"]; + this.modData("Learnsets", "gengar").learnset.reflecttype = ["6L1"]; + this.modData("Learnsets", "gengar").learnset.calmmind = ["6L1"]; + this.modData("Learnsets", "alakazam").learnset.blizzard = ["6L1"]; + this.modData("Learnsets", "alakazam").learnset.flashcannon = ["6L1"]; + this.modData("Learnsets", "alakazam").learnset.icebeam = ["6L1"]; + this.modData("Learnsets", "alakazam").learnset.hail = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.hail = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.megahorn = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.uturn = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.iceshard = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.iciclecrash = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.icebeam = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.blizzard = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.roost = ["6L1"]; + this.modData("Learnsets", "pinsir").learnset.iciclespear = ["6L1"]; + this.modData("Learnsets", "aerodactyl").learnset.powergem = ["6L1"]; + this.modData("Learnsets", "aerodactyl").learnset.shadowball = ["6L1"]; + this.modData("Learnsets", "aerodactyl").learnset.hurricane = ["6L1"]; + this.modData("Learnsets", "steelix").learnset.heatcrash = ["6L1"]; + this.modData("Learnsets", "steelix").learnset.rapidspin = ["6L1"]; + this.modData("Learnsets", "steelix").learnset.smackdown = ["6L1"]; + this.modData("Learnsets", "altaria").learnset.scald = ["6L1"]; + this.modData("Learnsets", "altaria").learnset.hydropump = ["6L1"]; + this.modData("Learnsets", "altaria").learnset.thunder = ["6L1"]; + this.modData("Learnsets", "sceptile").learnset.calmmind = ["6L1"]; + this.modData("Learnsets", "sceptile").learnset.sludgewave = ["6L1"]; + this.modData("Learnsets", "swampert").learnset.sludgebomb = ["6L1"]; + this.modData("Learnsets", "swampert").learnset.bulkup = ["6L1"]; + this.modData("Learnsets", "swampert").learnset.toxicspikes = ["6L1"]; + this.modData("Learnsets", "swampert").learnset.aquajet = ["6L1"]; + this.modData("Learnsets", "swampert").learnset.gunkshot = ["6L1"]; + this.modData("Learnsets", "swampert").learnset.poisonjab = ["6L1"]; + this.modData("Learnsets", "pidgeot").learnset.focusblast = ["6L1"]; + this.modData("Learnsets", "absol").learnset.closecombat = ["6L1"]; + this.modData("Learnsets", "absol").learnset.moonblast = ["6L1"]; + this.modData("Learnsets", "absol").learnset.moonlight = ["6L1"]; + this.modData("Learnsets", "medicham").learnset.aurasphere = ["6L1"]; + this.modData("Learnsets", "medicham").learnset.thunderbolt = ["6L1"]; + this.modData("Learnsets", "medicham").learnset.closecombat = ["6L1"]; + this.modData("Learnsets", "medicham").learnset.gunkshot = ["6L1"]; + this.modData("Learnsets", "medicham").learnset.healingwish = ["6L1"]; + this.modData("Learnsets", "beedrill").learnset.earthquake = ["6L1"]; + this.modData("Learnsets", "beedrill").learnset.stoneedge = ["6L1"]; + this.modData("Learnsets", "beedrill").learnset.rockslide = ["6L1"]; + this.modData("Learnsets", "beedrill").learnset.smackdown = ["6L1"]; + this.modData("Learnsets", "beedrill").learnset.stealthrock = ["6L1"]; + this.modData("Learnsets", "beedrill").learnset.diamondstorm = ["6L1"]; + this.modData("Learnsets", "mawile").learnset.firepunch = ["6L1"]; + this.modData("Learnsets", "mawile").learnset.rockslide = ["6L1"]; + this.modData("Learnsets", "mawile").learnset.slackoff = ["6L1"]; + this.modData("Learnsets", "camerupt").learnset.morningsun = ["6L1"]; + this.modData("Learnsets", "abomasnow").learnset.spikyshield = ["6L1"]; + this.modData("Learnsets", "abomasnow").learnset.earthpower = ["6L1"]; + this.modData("Learnsets", "abomasnow").learnset.hornleech = ["6L1"]; + this.modData("Learnsets", "gallade").learnset.sacredsword = ["6L1"]; + this.modData("Learnsets", "gallade").learnset.machpunch = ["6L1"]; + this.modData('Moves', 'aerialace').flags.slicing = 1; + this.modData('Moves', 'aircutter').flags.slicing = 1; + this.modData('Moves', 'airslash').flags.slicing = 1; + this.modData('Moves', 'behemothblade').flags.slicing = 1; + this.modData('Moves', 'crosspoison').flags.slicing = 1; + this.modData('Moves', 'cut').flags.slicing = 1; + this.modData('Moves', 'furycutter').flags.slicing = 1; + this.modData('Moves', 'nightslash').flags.slicing = 1; + this.modData('Moves', 'psychocut').flags.slicing = 1; + this.modData('Moves', 'razorleaf').flags.slicing = 1; + this.modData('Moves', 'razorshell').flags.slicing = 1; + this.modData('Moves', 'sacredsword').flags.slicing = 1; + this.modData('Moves', 'slash').flags.slicing = 1; + this.modData('Moves', 'solarblade').flags.slicing = 1; + this.modData('Moves', 'xscissor').flags.slicing = 1; + this.modData("Learnsets", "ampharos").learnset.waterpulse = ["6L1"]; + this.modData("Learnsets", "ampharos").learnset.aurasphere = ["6L1"]; + this.modData("Learnsets", "ampharos").learnset.darkpulse = ["6L1"]; + this.modData("Learnsets", "ampharos").learnset.defog = ["6L1"]; + this.modData("Learnsets", "ampharos").learnset.slackoff = ["6L1"]; + this.modData("Learnsets", "heracross").learnset.healorder = ["6L1"]; + this.modData("Learnsets", "heracross").learnset.circlethrow = ["6L1"]; + this.modData("Learnsets", "heracross").learnset.spikes = ["6L1"]; + this.modData("Learnsets", "heracross").learnset.icepunch = ["6L1"]; + this.modData("Learnsets", "sharpedo").learnset.thunder = ["6L1"]; + this.modData("Learnsets", "gardevoir").learnset.rapidspin = ["6L1"]; + this.modData("Learnsets", "gardevoir").learnset.mysticalfire = ["6L1"]; + this.modData("Learnsets", "aggron").learnset.voltswitch = ["6L1"]; + this.modData("Learnsets", "kangaskhan").learnset.milkdrink = ["6L1"]; + this.modData("Learnsets", "salamence").learnset.hurricane = ["6L1"]; + this.modData("Learnsets", "salamence").learnset.airslash = ["6L1"]; + this.modData("Learnsets", "salamence").learnset.ironhead = ["6L1"]; + this.modData("Learnsets", "tyranitar").learnset.wildcharge = ["6L1"]; + this.modData("Learnsets", "tyranitar").learnset.waterfall = ["6L1"]; + this.modData("Learnsets", "diancie").learnset.spikyshield = ["6L1"]; + this.modData("Learnsets", "blaziken").learnset.uturn = ["6L1"]; + this.modData("Learnsets", "blaziken").learnset.spikes = ["6L1"]; + this.modData("Learnsets", "blaziken").learnset.roost = ["6L1"]; + this.modData("Learnsets", "blaziken").learnset.closecombat = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.extremespeed = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.sludgewave = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.swordsdance = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.uturn = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.closecombat = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.drainpunch = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.machpunch = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.scald = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.surf = ["6L1"]; + this.modData("Learnsets", "mewtwo").learnset.hydropump = ["6L1"]; + this.modData("Learnsets", "rayquaza").learnset.coil = ["6L1"]; + this.modData("Learnsets", "rayquaza").learnset.defog = ["6L1"]; + }, +}; diff --git a/data/mods/sixbysix/formats-data.ts b/data/mods/sixbysix/formats-data.ts deleted file mode 100644 index 40e510453d..0000000000 --- a/data/mods/sixbysix/formats-data.ts +++ /dev/null @@ -1,113 +0,0 @@ -export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = { - kingdraclassic: { - tier: "OU", - }, - kingdrabrinepool: { - tier: "OU", - }, - kingdradruid: { - tier: "OU", - }, - kingdrabard: { - tier: "OU", - }, - kingdragourmet: { - tier: "OU", - }, - kingdraancient: { - tier: "OU", - }, - nidoqueenclassic: { - tier: "OU", - }, - nidoqueenerudite: { - tier: "OU", - }, - nidoqueenvolcanic: { - tier: "OU", - }, - nidoqueenrosegold: { - tier: "OU", - }, - nidoqueenshaman: { - tier: "OU", - }, - nidoqueenjasper: { - tier: "OU", - }, - bisharpcenturion: { - tier: "OU", - }, - bisharpsavage: { - tier: "OU", - }, - bisharpronin: { - tier: "OU", - }, - bisharpmantis: { - tier: "OU", - }, - bisharprevenant: { - tier: "OU", - }, - bisharpassassin: { - tier: "OU", - }, - corviknightthunderbird: { - tier: "OU", - }, - corviknightgenie: { - tier: "OU", - }, - corviknightyeti: { - tier: "OU", - }, - corviknightanalytical: { - tier: "OU", - }, - corviknightmartian: { - tier: "OU", - }, - corviknightfalcon: { - tier: "OU", - }, - krookodileinfernal: { - tier: "OU", - }, - krookodileabyssal: { - tier: "OU", - }, - krookodilewetlander: { - tier: "OU", - }, - krookodilecavedweller: { - tier: "OU", - }, - krookodilecliffside: { - tier: "OU", - }, - krookodilequantum: { - tier: "OU", - }, - ogerponmuerta: { - tier: "OU", - }, - ogerponeaster: { - tier: "OU", - }, - ogerponankh: { - tier: "OU", - }, - ogerponeid: { - tier: "OU", - }, - ogerponvessel: { - tier: "OU", - }, - ogerponkitsune: { - tier: "OU", - }, - ogerpontealtera: { - tier: "Illegal", - }, -}; diff --git a/data/mods/sixbysix/items.ts b/data/mods/sixbysix/items.ts deleted file mode 100644 index df1a3f90c0..0000000000 --- a/data/mods/sixbysix/items.ts +++ /dev/null @@ -1,32 +0,0 @@ -export const Items: import('../../../sim/dex-items').ModdedItemDataTable = { - cornerstonemask: { - name: "Cornerstone Mask", - spritenum: 758, - fling: { - basePower: 60, - }, - num: 2406, - gen: 9, - desc: "No competitive use.", - }, - hearthflamemask: { - name: "Hearthflame Mask", - spritenum: 760, - fling: { - basePower: 60, - }, - desc: "No competitive use.", - num: 2408, - gen: 9, - }, - wellspringmask: { - name: "Wellspring Mask", - spritenum: 759, - fling: { - basePower: 60, - }, - desc: "No competitive use.", - num: 2407, - gen: 9, - }, -}; diff --git a/data/mods/sixbysix/learnsets.ts b/data/mods/sixbysix/learnsets.ts deleted file mode 100644 index 593627bd62..0000000000 --- a/data/mods/sixbysix/learnsets.ts +++ /dev/null @@ -1,2580 +0,0 @@ -export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTable = { - kingdraclassic: { - learnset: { - aquajet: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - dragonhammer: ["9L1"], - dragontail: ["9L1"], - facade: ["9L1"], - flipturn: ["9L1"], - knockoff: ["9L1"], - liquidation: ["9L1"], - outrage: ["9L1"], - waterfall: ["9L1"], - wavecrash: ["9L1"], - breakingswipe: ["9L1"], - dragonrush: ["9L1"], - flail: ["9L1"], - gigaimpact: ["9L1"], - scaleshot: ["9L1"], - takedown: ["9L1"], - blizzard: ["9L1"], - clearsmog: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - scald: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - aurorabeam: ["9L1"], - bubblebeam: ["9L1"], - chillingwater: ["9L1"], - dragonbreath: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - muddywater: ["9L1"], - swift: ["9L1"], - twister: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - agility: ["9L1"], - disable: ["9L1"], - dragondance: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - dragoncheer: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - scaryface: ["9L1"], - smokescreen: ["9L1"], - snowscape: ["9L1"], - splash: ["9L1"], - yawn: ["9L1"], - }, - }, - kingdrabrinepool: { - learnset: { - gunkshot: ["9L1"], - mortalspin: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - toxic: ["9L1"], - watershuriken: ["9L1"], - acid: ["9L1"], - acidspray: ["9L1"], - aquaring: ["9L1"], - sludge: ["9L1"], - venoshock: ["9L1"], - aquajet: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - dragontail: ["9L1"], - facade: ["9L1"], - flipturn: ["9L1"], - knockoff: ["9L1"], - liquidation: ["9L1"], - waterfall: ["9L1"], - wavecrash: ["9L1"], - flail: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - clearsmog: ["9L1"], - hydropump: ["9L1"], - scald: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - bubblebeam: ["9L1"], - chillingwater: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - muddywater: ["9L1"], - swift: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - agility: ["9L1"], - disable: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - scaryface: ["9L1"], - smokescreen: ["9L1"], - snowscape: ["9L1"], - splash: ["9L1"], - yawn: ["9L1"], - }, - }, - nidoqueenclassic: { - learnset: { - aquatail: ["9L1"], - barbbarrage: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - counter: ["9L1"], - crunch: ["9L1"], - dragontail: ["9L1"], - drillrun: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - firepunch: ["9L1"], - focuspunch: ["9L1"], - highhorsepower: ["9L1"], - icepunch: ["9L1"], - outrage: ["9L1"], - poisonjab: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - seismictoss: ["9L1"], - shadowclaw: ["9L1"], - smackdown: ["9L1"], - stoneedge: ["9L1"], - suckerpunch: ["9L1"], - superfang: ["9L1"], - superpower: ["9L1"], - throatchop: ["9L1"], - thunderpunch: ["9L1"], - aerialace: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - bulldoze: ["9L1"], - cut: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - dynamicpunch: ["9L1"], - fissure: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - headbutt: ["9L1"], - horndrill: ["9L1"], - irontail: ["9L1"], - megakick: ["9L1"], - payday: ["9L1"], - poisonfang: ["9L1"], - poisonsting: ["9L1"], - poisontail: ["9L1"], - rocksmash: ["9L1"], - rocktomb: ["9L1"], - sandtomb: ["9L1"], - scratch: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - blizzard: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - hex: ["9L1"], - icebeam: ["9L1"], - shadowball: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - bubblebeam: ["9L1"], - echoedvoice: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - incinerate: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - round: ["9L1"], - shockwave: ["9L1"], - snore: ["9L1"], - uproar: ["9L1"], - venoshock: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - disable: ["9L1"], - honeclaws: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - slackoff: ["9L1"], - sleeptalk: ["9L1"], - spikes: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - wish: ["9L1"], - attract: ["9L1"], - charm: ["9L1"], - confide: ["9L1"], - defensecurl: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - flatter: ["9L1"], - focusenergy: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - mimic: ["9L1"], - quash: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - sunnyday: ["9L1"], - supersonic: ["9L1"], - swagger: ["9L1"], - tailwhip: ["9L1"], - torment: ["9L1"], - }, - }, - nidoqueenerudite: { - learnset: { - calmmind: ["9L1"], - chillyreception: ["9L1"], - expandingforce: ["9L1"], - futuresight: ["9L1"], - psychic: ["9L1"], - psychicnoise: ["9L1"], - psyshock: ["9L1"], - trickroom: ["9L1"], - zenheadbutt: ["9L1"], - amnesia: ["9L1"], - confusion: ["9L1"], - healpulse: ["9L1"], - imprison: ["9L1"], - magicroom: ["9L1"], - psybeam: ["9L1"], - psychicterrain: ["9L1"], - skillswap: ["9L1"], - wonderroom: ["9L1"], - aquatail: ["9L1"], - bodyslam: ["9L1"], - counter: ["9L1"], - crunch: ["9L1"], - dragontail: ["9L1"], - drillrun: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - firepunch: ["9L1"], - highhorsepower: ["9L1"], - icepunch: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - seismictoss: ["9L1"], - shadowclaw: ["9L1"], - smackdown: ["9L1"], - stoneedge: ["9L1"], - superfang: ["9L1"], - throatchop: ["9L1"], - thunderpunch: ["9L1"], - aerialace: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - bulldoze: ["9L1"], - cut: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - fissure: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - headbutt: ["9L1"], - horndrill: ["9L1"], - irontail: ["9L1"], - megakick: ["9L1"], - payday: ["9L1"], - rocksmash: ["9L1"], - rocktomb: ["9L1"], - sandtomb: ["9L1"], - scratch: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - blizzard: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - icebeam: ["9L1"], - shadowball: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - bubblebeam: ["9L1"], - echoedvoice: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - incinerate: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - round: ["9L1"], - shockwave: ["9L1"], - snore: ["9L1"], - uproar: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - disable: ["9L1"], - honeclaws: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - wish: ["9L1"], - attract: ["9L1"], - charm: ["9L1"], - confide: ["9L1"], - defensecurl: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - flatter: ["9L1"], - focusenergy: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - mimic: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - sunnyday: ["9L1"], - supersonic: ["9L1"], - tailwhip: ["9L1"], - }, - }, - bisharpcenturion: { - learnset: { - bodypress: ["9L1"], - brickbreak: ["9L1"], - bulletpunch: ["9L1"], - drainpunch: ["9L1"], - facade: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - hammerarm: ["9L1"], - ironhead: ["9L1"], - lowkick: ["9L1"], - nightslash: ["9L1"], - poisonjab: ["9L1"], - shadowclaw: ["9L1"], - superpower: ["9L1"], - xscissor: ["9L1"], - bulldoze: ["9L1"], - dig: ["9L1"], - dynamicpunch: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - guillotine: ["9L1"], - headbutt: ["9L1"], - lowsweep: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - retaliate: ["9L1"], - reversal: ["9L1"], - scratch: ["9L1"], - slash: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - upperhand: ["9L1"], - airslash: ["9L1"], - flashcannon: ["9L1"], - focusblast: ["9L1"], - grassknot: ["9L1"], - steelbeam: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - hyperbeam: ["9L1"], - bulkup: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - irondefense: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - swordsdance: ["9L1"], - taunt: ["9L1"], - thunderwave: ["9L1"], - coaching: ["9L1"], - endure: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - metalsound: ["9L1"], - sandstorm: ["9L1"], - sunnyday: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - torment: ["9L1"], - wideguard: ["9L1"], - }, - }, - bisharpsavage: { - learnset: { - knockoff: ["9L1"], - powerwhip: ["9L1"], - leafblade: ["9L1"], - bulletseed: ["9L1"], - grassyglide: ["9L1"], - seedbomb: ["9L1"], - leechseed: ["9L1"], - vinewhip: ["9L1"], - branchpoke: ["9L1"], - leafage: ["9L1"], - megadrain: ["9L1"], - absorb: ["9L1"], - grassyterrain: ["9L1"], - razorleaf: ["9L1"], - bodypress: ["9L1"], - brickbreak: ["9L1"], - bulletpunch: ["9L1"], - facade: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - ironhead: ["9L1"], - nightslash: ["9L1"], - poisonjab: ["9L1"], - superpower: ["9L1"], - xscissor: ["9L1"], - bulldoze: ["9L1"], - dig: ["9L1"], - dynamicpunch: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - guillotine: ["9L1"], - headbutt: ["9L1"], - lowsweep: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - retaliate: ["9L1"], - reversal: ["9L1"], - scratch: ["9L1"], - slash: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - flashcannon: ["9L1"], - grassknot: ["9L1"], - steelbeam: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - hyperbeam: ["9L1"], - bulkup: ["9L1"], - curse: ["9L1"], - irondefense: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - thunderwave: ["9L1"], - coaching: ["9L1"], - endure: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - metalsound: ["9L1"], - sandstorm: ["9L1"], - sunnyday: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - torment: ["9L1"], - wideguard: ["9L1"], - }, - }, - corviknightthunderbird: { - learnset: { - acrobatics: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bravebird: ["9L1"], - doubleedge: ["9L1"], - drillpeck: ["9L1"], - facade: ["9L1"], - supercellslam: ["9L1"], - uturn: ["9L1"], - aerialace: ["9L1"], - dualwingbeat: ["9L1"], - fly: ["9L1"], - furyattack: ["9L1"], - gigaimpact: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - powertrip: ["9L1"], - skyattack: ["9L1"], - spark: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - wildcharge: ["9L1"], - airslash: ["9L1"], - discharge: ["9L1"], - heatwave: ["9L1"], - hurricane: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - voltswitch: ["9L1"], - aircutter: ["9L1"], - chargebeam: ["9L1"], - electroball: ["9L1"], - hyperbeam: ["9L1"], - swift: ["9L1"], - thundershock: ["9L1"], - zapcannon: ["9L1"], - agility: ["9L1"], - curse: ["9L1"], - defog: ["9L1"], - honeclaws: ["9L1"], - irondefense: ["9L1"], - lightscreen: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - tailwind: ["9L1"], - electricterrain: ["9L1"], - endure: ["9L1"], - faketears: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - sandattack: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - }, - }, - corviknightgenie: { - learnset: { - calmmind: ["9L1"], - earthpower: ["9L1"], - earthquake: ["9L1"], - powergem: ["9L1"], - sandsearstorm: ["9L1"], - scorchingsands: ["9L1"], - stealthrock: ["9L1"], - dig: ["9L1"], - sandstorm: ["9L1"], - acrobatics: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - facade: ["9L1"], - uturn: ["9L1"], - aerialace: ["9L1"], - dualwingbeat: ["9L1"], - fly: ["9L1"], - furyattack: ["9L1"], - gigaimpact: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - powertrip: ["9L1"], - skyattack: ["9L1"], - spark: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - heatwave: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - voltswitch: ["9L1"], - aircutter: ["9L1"], - chargebeam: ["9L1"], - electroball: ["9L1"], - hyperbeam: ["9L1"], - swift: ["9L1"], - thundershock: ["9L1"], - agility: ["9L1"], - curse: ["9L1"], - defog: ["9L1"], - honeclaws: ["9L1"], - irondefense: ["9L1"], - lightscreen: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - tailwind: ["9L1"], - electricterrain: ["9L1"], - endure: ["9L1"], - faketears: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - sandattack: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - }, - }, - krookodileinfernal: { - learnset: { - bodyslam: ["9L1"], - brickbreak: ["9L1"], - counter: ["9L1"], - crunch: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragontail: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - firelash: ["9L1"], - flamecharge: ["9L1"], - flareblitz: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - gunkshot: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - outrage: ["9L1"], - shadowclaw: ["9L1"], - throatchop: ["9L1"], - aerialace: ["9L1"], - bite: ["9L1"], - breakingswipe: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - powertrip: ["9L1"], - scaleshot: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - thrash: ["9L1"], - darkpulse: ["9L1"], - dragonpulse: ["9L1"], - eruption: ["9L1"], - fierywrath: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - heatwave: ["9L1"], - magmastorm: ["9L1"], - overheat: ["9L1"], - sludgebomb: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - burningjealousy: ["9L1"], - ember: ["9L1"], - firespin: ["9L1"], - hyperbeam: ["9L1"], - incinerate: ["9L1"], - inferno: ["9L1"], - snarl: ["9L1"], - curse: ["9L1"], - encore: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - taunt: ["9L1"], - willowisp: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - memento: ["9L1"], - sunnyday: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - torment: ["9L1"], - }, - }, - krookodileabyssal: { - learnset: { - dragondance: ["9L1"], - earthquake: ["9L1"], - hydropump: ["9L1"], - liquidation: ["9L1"], - stoneedge: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - counter: ["9L1"], - crunch: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragontail: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - flareblitz: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - gunkshot: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - outrage: ["9L1"], - shadowclaw: ["9L1"], - throatchop: ["9L1"], - aerialace: ["9L1"], - bite: ["9L1"], - breakingswipe: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - powertrip: ["9L1"], - scaleshot: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - thrash: ["9L1"], - dragonpulse: ["9L1"], - sludgebomb: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - burningjealousy: ["9L1"], - ember: ["9L1"], - firespin: ["9L1"], - hyperbeam: ["9L1"], - incinerate: ["9L1"], - inferno: ["9L1"], - snarl: ["9L1"], - curse: ["9L1"], - encore: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - taunt: ["9L1"], - willowisp: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - memento: ["9L1"], - sunnyday: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - torment: ["9L1"], - }, - }, - ogerponmuerta: { - learnset: { - facade: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - poltergeist: ["9L1"], - quickattack: ["9L1"], - shadowclaw: ["9L1"], - shadowsneak: ["9L1"], - throatchop: ["9L1"], - uturn: ["9L1"], - astonish: ["9L1"], - falseswipe: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - phantomforce: ["9L1"], - retaliate: ["9L1"], - rocktomb: ["9L1"], - slam: ["9L1"], - takedown: ["9L1"], - dazzlinggleam: ["9L1"], - drainingkiss: ["9L1"], - fleurcannon: ["9L1"], - hex: ["9L1"], - nightshade: ["9L1"], - shadowball: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - disarmingvoice: ["9L1"], - icywind: ["9L1"], - hyperbeam: ["9L1"], - batonpass: ["9L1"], - curse: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - perishsong: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - thunderwave: ["9L1"], - trick: ["9L1"], - trickroom: ["9L1"], - willowisp: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - confuseray: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - followme: ["9L1"], - gravity: ["9L1"], - growth: ["9L1"], - helpinghand: ["9L1"], - imprison: ["9L1"], - magicroom: ["9L1"], - metronome: ["9L1"], - mistyterrain: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - }, - }, - ogerponeaster: { - learnset: { - bodyslam: ["9L1"], - calmmind: ["9L1"], - hypervoice: ["9L1"], - moonblast: ["9L1"], - mysticalfire: ["9L1"], - playrough: ["9L1"], - softboiled: ["9L1"], - springtidestorm: ["9L1"], - stealthrock: ["9L1"], - aromaticmist: ["9L1"], - celebrate: ["9L1"], - confide: ["9L1"], - covet: ["9L1"], - decorate: ["9L1"], - feint: ["9L1"], - playnice: ["9L1"], - safeguard: ["9L1"], - snore: ["9L1"], - stuffcheeks: ["9L1"], - sweetkiss: ["9L1"], - uproar: ["9L1"], - facade: ["9L1"], - knockoff: ["9L1"], - quickattack: ["9L1"], - throatchop: ["9L1"], - uturn: ["9L1"], - falseswipe: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - phantomforce: ["9L1"], - retaliate: ["9L1"], - rocktomb: ["9L1"], - slam: ["9L1"], - takedown: ["9L1"], - dazzlinggleam: ["9L1"], - drainingkiss: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - disarmingvoice: ["9L1"], - icywind: ["9L1"], - hyperbeam: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - thunderwave: ["9L1"], - trick: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - confuseray: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - followme: ["9L1"], - gravity: ["9L1"], - growth: ["9L1"], - helpinghand: ["9L1"], - imprison: ["9L1"], - metronome: ["9L1"], - mistyterrain: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - }, - }, - ogerponankh: { - learnset: { - swordsdance: ["9L1"], - earthquake: ["9L1"], - earthpower: ["9L1"], - darkpulse: ["9L1"], - stoneedge: ["9L1"], - powergem: ["9L1"], - facade: ["9L1"], - knockoff: ["9L1"], - poltergeist: ["9L1"], - shadowclaw: ["9L1"], - throatchop: ["9L1"], - uturn: ["9L1"], - astonish: ["9L1"], - falseswipe: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - phantomforce: ["9L1"], - retaliate: ["9L1"], - rocktomb: ["9L1"], - slam: ["9L1"], - takedown: ["9L1"], - dazzlinggleam: ["9L1"], - hex: ["9L1"], - shadowball: ["9L1"], - taunt: ["9L1"], - terablast: ["9L1"], - disarmingvoice: ["9L1"], - icywind: ["9L1"], - hyperbeam: ["9L1"], - batonpass: ["9L1"], - destinybond: ["9L1"], - perishsong: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - trick: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - confuseray: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - followme: ["9L1"], - gravity: ["9L1"], - growth: ["9L1"], - helpinghand: ["9L1"], - imprison: ["9L1"], - magicroom: ["9L1"], - metronome: ["9L1"], - mistyterrain: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - }, - }, - kingdradruid: { - learnset: { - bodyslam: ["9L1"], - doubleedge: ["9L1"], - dragontail: ["9L1"], - facade: ["9L1"], - ironhead: ["9L1"], - outrage: ["9L1"], - scaleshot: ["9L1"], - smartstrike: ["9L1"], - breakingswipe: ["9L1"], - dragonrush: ["9L1"], - flail: ["9L1"], - gigaimpact: ["9L1"], - hardpress: ["9L1"], - metalburst: ["9L1"], - steelwing: ["9L1"], - takedown: ["9L1"], - doomdesire: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - flamethrower: ["9L1"], - flashcannon: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - steelbeam: ["9L1"], - tachyoncutter: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - aurorabeam: ["9L1"], - bubblebeam: ["9L1"], - chillingwater: ["9L1"], - dragonbreath: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - swift: ["9L1"], - twister: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - calmmind: ["9L1"], - disable: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - dragoncheer: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - leer: ["9L1"], - metalsound: ["9L1"], - raindance: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - smokescreen: ["9L1"], - snowscape: ["9L1"], - splash: ["9L1"], - yawn: ["9L1"], - }, - }, - nidoqueenvolcanic: { - learnset: { - bodyslam: ["9L1"], - brickbreak: ["9L1"], - crunch: ["9L1"], - dragontail: ["9L1"], - drillrun: ["9L1"], - dynamicpunch: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - firepunch: ["9L1"], - flareblitz: ["9L1"], - focuspunch: ["9L1"], - headbutt: ["9L1"], - heatcrash: ["9L1"], - highhorsepower: ["9L1"], - outrage: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - seismictoss: ["9L1"], - stoneedge: ["9L1"], - suckerpunch: ["9L1"], - superfang: ["9L1"], - superpower: ["9L1"], - temperflare: ["9L1"], - throatchop: ["9L1"], - thunderpunch: ["9L1"], - aerialace: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - bulldoze: ["9L1"], - counter: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - fissure: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - horndrill: ["9L1"], - irontail: ["9L1"], - megakick: ["9L1"], - payday: ["9L1"], - poisontail: ["9L1"], - rocksmash: ["9L1"], - sandtomb: ["9L1"], - scratch: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - icebeam: ["9L1"], - lavaplume: ["9L1"], - meteorbeam: ["9L1"], - overheat: ["9L1"], - powergem: ["9L1"], - shadowball: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - echoedvoice: ["9L1"], - ember: ["9L1"], - firespin: ["9L1"], - hyperbeam: ["9L1"], - incinerate: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - round: ["9L1"], - shockwave: ["9L1"], - snore: ["9L1"], - uproar: ["9L1"], - curse: ["9L1"], - disable: ["9L1"], - honeclaws: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - stealthrock: ["9L1"], - spikes: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - willowisp: ["9L1"], - wish: ["9L1"], - attract: ["9L1"], - charm: ["9L1"], - confide: ["9L1"], - defensecurl: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - flatter: ["9L1"], - focusenergy: ["9L1"], - followme: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - mimic: ["9L1"], - quash: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - sleeptalk: ["9L1"], - sunnyday: ["9L1"], - supersonic: ["9L1"], - swagger: ["9L1"], - tailwhip: ["9L1"], - torment: ["9L1"], - }, - }, - bisharpronin: { - learnset: { - barbbarrage: ["9L1"], - bodypress: ["9L1"], - brickbreak: ["9L1"], - drainpunch: ["9L1"], - dynamicpunch: ["9L1"], - facade: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - headbutt: ["9L1"], - lowkick: ["9L1"], - mortalspin: ["9L1"], - nightslash: ["9L1"], - poisonjab: ["9L1"], - sacredsword: ["9L1"], - shadowclaw: ["9L1"], - uturn: ["9L1"], - xscissor: ["9L1"], - bulldoze: ["9L1"], - crosspoison: ["9L1"], - dig: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - guillotine: ["9L1"], - lowsweep: ["9L1"], - poisonsting: ["9L1"], - retaliate: ["9L1"], - reversal: ["9L1"], - scratch: ["9L1"], - slash: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - upperhand: ["9L1"], - airslash: ["9L1"], - focusblast: ["9L1"], - sludgebomb: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - acid: ["9L1"], - acidspray: ["9L1"], - hyperbeam: ["9L1"], - venoshock: ["9L1"], - detect: ["9L1"], - encore: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - coaching: ["9L1"], - endure: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - poisongas: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - sunnyday: ["9L1"], - torment: ["9L1"], - wideguard: ["9L1"], - }, - }, - corviknightyeti: { - learnset: { - acrobatics: ["9L1"], - bravebird: ["9L1"], - doubleedge: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - facade: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - iciclespear: ["9L1"], - aerialace: ["9L1"], - fly: ["9L1"], - furyattack: ["9L1"], - gigaimpact: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - skyattack: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - airslash: ["9L1"], - bleakwindstorm: ["9L1"], - blizzard: ["9L1"], - hurricane: ["9L1"], - icebeam: ["9L1"], - terablast: ["9L1"], - voltswitch: ["9L1"], - weatherball: ["9L1"], - aircutter: ["9L1"], - chillingwater: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - powdersnow: ["9L1"], - swift: ["9L1"], - waterpulse: ["9L1"], - curse: ["9L1"], - defog: ["9L1"], - encore: ["9L1"], - haze: ["9L1"], - lightscreen: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - substitute: ["9L1"], - tailwind: ["9L1"], - endure: ["9L1"], - faketears: ["9L1"], - leer: ["9L1"], - mist: ["9L1"], - sandattack: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - sleeptalk: ["9L1"], - snowscape: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - }, - }, - krookodilewetlander: { - learnset: { - aquajet: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - bulletseed: ["9L1"], - crunch: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragontail: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - gunkshot: ["9L1"], - knockoff: ["9L1"], - lashout: ["9L1"], - leafblade: ["9L1"], - liquidation: ["9L1"], - rapidspin: ["9L1"], - scaleshot: ["9L1"], - waterfall: ["9L1"], - wavecrash: ["9L1"], - woodhammer: ["9L1"], - aerialace: ["9L1"], - bite: ["9L1"], - breakingswipe: ["9L1"], - counter: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - thrash: ["9L1"], - dragonpulse: ["9L1"], - gigadrain: ["9L1"], - inferno: ["9L1"], - sludgebomb: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - hyperbeam: ["9L1"], - megadrain: ["9L1"], - snarl: ["9L1"], - whirlpool: ["9L1"], - curse: ["9L1"], - encore: ["9L1"], - leechseed: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - strengthsap: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - synthesis: ["9L1"], - taunt: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - torment: ["9L1"], - }, - }, - krookodilecavedweller: { - learnset: { - bodyslam: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - earthquake: ["9L1"], - endeavor: ["9L1"], - explosion: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - firelash: ["9L1"], - flamecharge: ["9L1"], - flareblitz: ["9L1"], - knockoff: ["9L1"], - rapidspin: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - scaleshot: ["9L1"], - stoneedge: ["9L1"], - aerialace: ["9L1"], - breakingswipe: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - thrash: ["9L1"], - dragonpulse: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - heatwave: ["9L1"], - inferno: ["9L1"], - overheat: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - burningjealousy: ["9L1"], - ember: ["9L1"], - firespin: ["9L1"], - hyperbeam: ["9L1"], - incinerate: ["9L1"], - curse: ["9L1"], - encore: ["9L1"], - lightscreen: ["9L1"], - memento: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - taunt: ["9L1"], - willowisp: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - tarshot: ["9L1"], - torment: ["9L1"], - }, - }, - ogerponeid: { - learnset: { - knockoff: ["9L1"], - liquidation: ["9L1"], - rapidspin: ["9L1"], - shadowclaw: ["9L1"], - wavecrash: ["9L1"], - astonish: ["9L1"], - falseswipe: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - lick: ["9L1"], - retaliate: ["9L1"], - slam: ["9L1"], - takedown: ["9L1"], - hex: ["9L1"], - moonblast: ["9L1"], - surf: ["9L1"], - shadowball: ["9L1"], - chillingwater: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - watergun: ["9L1"], - waterpledge: ["9L1"], - waterpulse: ["9L1"], - batonpass: ["9L1"], - healbell: ["9L1"], - lunarblessing: ["9L1"], - lunardance: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - spikes: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - thunderwave: ["9L1"], - toxic: ["9L1"], - aquaring: ["9L1"], - babydolleyes: ["9L1"], - celebrate: ["9L1"], - confuseray: ["9L1"], - cosmicpower: ["9L1"], - decorate: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - followme: ["9L1"], - gravity: ["9L1"], - growth: ["9L1"], - helpinghand: ["9L1"], - imprison: ["9L1"], - instruct: ["9L1"], - lifedew: ["9L1"], - magicroom: ["9L1"], - metronome: ["9L1"], - mistyterrain: ["9L1"], - raindance: ["9L1"], - sleeptalk: ["9L1"], - stuffcheeks: ["9L1"], - }, - }, - corviknightanalytical: { - learnset: { - acrobatics: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - facade: ["9L1"], - supercellslam: ["9L1"], - uturn: ["9L1"], - zenheadbutt: ["9L1"], - aerialace: ["9L1"], - dualwingbeat: ["9L1"], - fly: ["9L1"], - furyattack: ["9L1"], - gigaimpact: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - skyattack: ["9L1"], - spark: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - wildcharge: ["9L1"], - discharge: ["9L1"], - heatwave: ["9L1"], - psychic: ["9L1"], - psyshock: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - voltswitch: ["9L1"], - chargebeam: ["9L1"], - electroball: ["9L1"], - hyperbeam: ["9L1"], - swift: ["9L1"], - thundershock: ["9L1"], - psybeam: ["9L1"], - zapcannon: ["9L1"], - agility: ["9L1"], - calmmind: ["9L1"], - curse: ["9L1"], - lightscreen: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - electricterrain: ["9L1"], - endure: ["9L1"], - faketears: ["9L1"], - leer: ["9L1"], - psychicterrain: ["9L1"], - raindance: ["9L1"], - sandattack: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - }, - }, - bisharpmantis: { - learnset: { - ceaselessedge: ["9L1"], - facade: ["9L1"], - bitterblade: ["9L1"], - firstimpression: ["9L1"], - foulplay: ["9L1"], - leechlife: ["9L1"], - lowkick: ["9L1"], - nightslash: ["9L1"], - poisonjab: ["9L1"], - shadowclaw: ["9L1"], - suckerpunch: ["9L1"], - knockoff: ["9L1"], - xscissor: ["9L1"], - bulldoze: ["9L1"], - dig: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - guillotine: ["9L1"], - retaliate: ["9L1"], - reversal: ["9L1"], - scratch: ["9L1"], - slash: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - solarblade: ["9L1"], - darkpulse: ["9L1"], - bugbuzz: ["9L1"], - snarl: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - hyperbeam: ["9L1"], - agility: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - swordsdance: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - endure: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - stringshot: ["9L1"], - sunnyday: ["9L1"], - scaryface: ["9L1"], - spite: ["9L1"], - torment: ["9L1"], - wideguard: ["9L1"], - }, - }, - nidoqueenrosegold: { - learnset: { - aquatail: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - crunch: ["9L1"], - dragontail: ["9L1"], - drillrun: ["9L1"], - dynamicpunch: ["9L1"], - facade: ["9L1"], - firepunch: ["9L1"], - focuspunch: ["9L1"], - headbutt: ["9L1"], - icepunch: ["9L1"], - poisonjab: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - seismictoss: ["9L1"], - shadowclaw: ["9L1"], - stoneedge: ["9L1"], - suckerpunch: ["9L1"], - superfang: ["9L1"], - superpower: ["9L1"], - throatchop: ["9L1"], - aerialace: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - bulldoze: ["9L1"], - counter: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - horndrill: ["9L1"], - irontail: ["9L1"], - megakick: ["9L1"], - payday: ["9L1"], - poisonfang: ["9L1"], - poisonsting: ["9L1"], - poisontail: ["9L1"], - rocksmash: ["9L1"], - sandtomb: ["9L1"], - scratch: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - blizzard: ["9L1"], - dragonpulse: ["9L1"], - energyball: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - gigadrain: ["9L1"], - hex: ["9L1"], - leafstorm: ["9L1"], - shadowball: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - earthpower: ["9L1"], - absorb: ["9L1"], - bubblebeam: ["9L1"], - echoedvoice: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - incinerate: ["9L1"], - mudslap: ["9L1"], - round: ["9L1"], - shockwave: ["9L1"], - snore: ["9L1"], - uproar: ["9L1"], - venoshock: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - disable: ["9L1"], - honeclaws: ["9L1"], - leechseed: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - slackoff: ["9L1"], - spikes: ["9L1"], - spikyshield: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - wish: ["9L1"], - attract: ["9L1"], - charm: ["9L1"], - confide: ["9L1"], - defensecurl: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - flatter: ["9L1"], - focusenergy: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - mimic: ["9L1"], - quash: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - sleeptalk: ["9L1"], - sunnyday: ["9L1"], - supersonic: ["9L1"], - swagger: ["9L1"], - tailwhip: ["9L1"], - torment: ["9L1"], - }, - }, - kingdrabard: { - learnset: { - aquajet: ["9L1"], - bodyslam: ["9L1"], - doubleedge: ["9L1"], - facade: ["9L1"], - flipturn: ["9L1"], - knockoff: ["9L1"], - waterfall: ["9L1"], - liquidation: ["9L1"], - spiritbreak: ["9L1"], - breakingswipe: ["9L1"], - flail: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - alluringvoice: ["9L1"], - blizzard: ["9L1"], - clearsmog: ["9L1"], - hydropump: ["9L1"], - icebeam: ["9L1"], - moonblast: ["9L1"], - psychicnoise: ["9L1"], - scald: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - aurorabeam: ["9L1"], - bubblebeam: ["9L1"], - chillingwater: ["9L1"], - dragonbreath: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - muddywater: ["9L1"], - swift: ["9L1"], - twister: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - agility: ["9L1"], - disable: ["9L1"], - moonlight: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - dragoncheer: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - smokescreen: ["9L1"], - snowscape: ["9L1"], - splash: ["9L1"], - yawn: ["9L1"], - }, - }, - kingdragourmet: { - learnset: { - bodyslam: ["9L1"], - doubleedge: ["9L1"], - dragontail: ["9L1"], - facade: ["9L1"], - fakeout: ["9L1"], - flipturn: ["9L1"], - knockoff: ["9L1"], - orderup: ["9L1"], - outrage: ["9L1"], - rapidspin: ["9L1"], - scaleshot: ["9L1"], - breakingswipe: ["9L1"], - dragonrush: ["9L1"], - flail: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - clearsmog: ["9L1"], - dracometeor: ["9L1"], - terablast: ["9L1"], - chillingwater: ["9L1"], - dragonbreath: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - swift: ["9L1"], - twister: ["9L1"], - whirlpool: ["9L1"], - banefulbunker: ["9L1"], - defog: ["9L1"], - disable: ["9L1"], - glare: ["9L1"], - healbell: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - toxic: ["9L1"], - whirlwind: ["9L1"], - wish: ["9L1"], - dragoncheer: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - smokescreen: ["9L1"], - snowscape: ["9L1"], - splash: ["9L1"], - yawn: ["9L1"], - }, - }, - nidoqueenshaman: { - learnset: { - bodyslam: ["9L1"], - brickbreak: ["9L1"], - drillrun: ["9L1"], - dynamicpunch: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - focuspunch: ["9L1"], - headbutt: ["9L1"], - poisonjab: ["9L1"], - poltergeist: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - seismictoss: ["9L1"], - shadowclaw: ["9L1"], - shadowsneak: ["9L1"], - superfang: ["9L1"], - superpower: ["9L1"], - aerialace: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - bulldoze: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - fissure: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - horndrill: ["9L1"], - irontail: ["9L1"], - lick: ["9L1"], - megakick: ["9L1"], - payday: ["9L1"], - poisonfang: ["9L1"], - poisonsting: ["9L1"], - poisontail: ["9L1"], - rocksmash: ["9L1"], - sandtomb: ["9L1"], - scratch: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - earthpower: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - hex: ["9L1"], - icebeam: ["9L1"], - shadowball: ["9L1"], - sludgebomb: ["9L1"], - sludgewave: ["9L1"], - surf: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - bubblebeam: ["9L1"], - echoedvoice: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - incinerate: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - round: ["9L1"], - shockwave: ["9L1"], - snore: ["9L1"], - uproar: ["9L1"], - venoshock: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - disable: ["9L1"], - honeclaws: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - slackoff: ["9L1"], - spikes: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - toxicspikes: ["9L1"], - willowisp: ["9L1"], - wish: ["9L1"], - attract: ["9L1"], - charm: ["9L1"], - confide: ["9L1"], - defensecurl: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - flatter: ["9L1"], - focusenergy: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - mimic: ["9L1"], - quash: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - sleeptalk: ["9L1"], - sunnyday: ["9L1"], - supersonic: ["9L1"], - swagger: ["9L1"], - tailwhip: ["9L1"], - torment: ["9L1"], - }, - }, - bisharprevenant: { - learnset: { - behemothblade: ["9L1"], - brickbreak: ["9L1"], - drainpunch: ["9L1"], - facade: ["9L1"], - foulplay: ["9L1"], - headbutt: ["9L1"], - ironhead: ["9L1"], - nightslash: ["9L1"], - poisonjab: ["9L1"], - poltergeist: ["9L1"], - sacredsword: ["9L1"], - shadowclaw: ["9L1"], - shadowsneak: ["9L1"], - superpower: ["9L1"], - xscissor: ["9L1"], - bulldoze: ["9L1"], - dig: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - guillotine: ["9L1"], - lowsweep: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - phantomforce: ["9L1"], - retaliate: ["9L1"], - reversal: ["9L1"], - scratch: ["9L1"], - slash: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - upperhand: ["9L1"], - flashcannon: ["9L1"], - focusblast: ["9L1"], - hex: ["9L1"], - nightshade: ["9L1"], - shadowball: ["9L1"], - steelbeam: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - hyperbeam: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - irondefense: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - swordsdance: ["9L1"], - thunderwave: ["9L1"], - coaching: ["9L1"], - endure: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - metalsound: ["9L1"], - sandstorm: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - sunnyday: ["9L1"], - torment: ["9L1"], - wideguard: ["9L1"], - }, - }, - corviknightmartian: { - learnset: { - bodypress: ["9L1"], - bodyslam: ["9L1"], - ironhead: ["9L1"], - zenheadbutt: ["9L1"], - aerialace: ["9L1"], - dualwingbeat: ["9L1"], - fly: ["9L1"], - gigaimpact: ["9L1"], - gyroball: ["9L1"], - hardpress: ["9L1"], - psychocut: ["9L1"], - takedown: ["9L1"], - thunderbolt: ["9L1"], - psychic: ["9L1"], - doomdesire: ["9L1"], - flashcannon: ["9L1"], - psychicnoise: ["9L1"], - steelbeam: ["9L1"], - storedpower: ["9L1"], - chargebeam: ["9L1"], - hyperbeam: ["9L1"], - swift: ["9L1"], - psybeam: ["9L1"], - calmmind: ["9L1"], - defog: ["9L1"], - irondefense: ["9L1"], - lightscreen: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - sleeptalk: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - teleport: ["9L1"], - trickroom: ["9L1"], - electricterrain: ["9L1"], - endure: ["9L1"], - gravity: ["9L1"], - leer: ["9L1"], - psychicterrain: ["9L1"], - raindance: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - skillswap: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - }, - }, - krookodilecliffside: { - learnset: { - bodyslam: ["9L1"], - crunch: ["9L1"], - doubleedge: ["9L1"], - dragonclaw: ["9L1"], - dragontail: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - firefang: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - gunkshot: ["9L1"], - knockoff: ["9L1"], - powertrip: ["9L1"], - scaleshot: ["9L1"], - throatchop: ["9L1"], - aerialace: ["9L1"], - bite: ["9L1"], - breakingswipe: ["9L1"], - counter: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - thrash: ["9L1"], - darkpulse: ["9L1"], - dracometeor: ["9L1"], - dragonpulse: ["9L1"], - flamethrower: ["9L1"], - flashcannon: ["9L1"], - focusblast: ["9L1"], - inferno: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - burningjealousy: ["9L1"], - ember: ["9L1"], - firespin: ["9L1"], - hyperbeam: ["9L1"], - incinerate: ["9L1"], - snarl: ["9L1"], - curse: ["9L1"], - defog: ["9L1"], - encore: ["9L1"], - memento: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - torment: ["9L1"], - }, - }, - ogerponvessel: { - learnset: { - axekick: ["9L1"], - explosion: ["9L1"], - knockoff: ["9L1"], - leechlife: ["9L1"], - lunge: ["9L1"], - rocktomb: ["9L1"], - sacredsword: ["9L1"], - thunderouskick: ["9L1"], - uturn: ["9L1"], - gigaimpact: ["9L1"], - highjumpkick: ["9L1"], - retaliate: ["9L1"], - skittersmack: ["9L1"], - slam: ["9L1"], - takedown: ["9L1"], - terablast: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - defog: ["9L1"], - destinybond: ["9L1"], - disable: ["9L1"], - encore: ["9L1"], - lightscreen: ["9L1"], - perishsong: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - spikes: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - trick: ["9L1"], - endure: ["9L1"], - gravity: ["9L1"], - growth: ["9L1"], - helpinghand: ["9L1"], - imprison: ["9L1"], - metronome: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - topsyturvy: ["9L1"], - }, - }, - kingdraancient: { - learnset: { - bodyslam: ["9L1"], - doubleedge: ["9L1"], - facade: ["9L1"], - flareblitz: ["9L1"], - flipturn: ["9L1"], - knockoff: ["9L1"], - liquidation: ["9L1"], - outrage: ["9L1"], - scaleshot: ["9L1"], - seedbomb: ["9L1"], - breakingswipe: ["9L1"], - dragonrush: ["9L1"], - flail: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - clearsmog: ["9L1"], - energyball: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - gigadrain: ["9L1"], - hydropump: ["9L1"], - leafstorm: ["9L1"], - overheat: ["9L1"], - scald: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - aurorabeam: ["9L1"], - bubblebeam: ["9L1"], - chillingwater: ["9L1"], - dragonbreath: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - muddywater: ["9L1"], - swift: ["9L1"], - twister: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - agility: ["9L1"], - disable: ["9L1"], - leechseed: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - synthesis: ["9L1"], - dragoncheer: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - smokescreen: ["9L1"], - snowscape: ["9L1"], - splash: ["9L1"], - yawn: ["9L1"], - }, - }, - nidoqueenjasper: { - learnset: { - accelerock: ["9L1"], - aquatail: ["9L1"], - bodyslam: ["9L1"], - brickbreak: ["9L1"], - crunch: ["9L1"], - dragontail: ["9L1"], - drillrun: ["9L1"], - dynamicpunch: ["9L1"], - earthquake: ["9L1"], - facade: ["9L1"], - firepunch: ["9L1"], - focuspunch: ["9L1"], - gunkshot: ["9L1"], - headbutt: ["9L1"], - highhorsepower: ["9L1"], - icepunch: ["9L1"], - outrage: ["9L1"], - poisonjab: ["9L1"], - rockblast: ["9L1"], - rockslide: ["9L1"], - rocktomb: ["9L1"], - saltcure: ["9L1"], - seismictoss: ["9L1"], - shadowclaw: ["9L1"], - stoneedge: ["9L1"], - superfang: ["9L1"], - superpower: ["9L1"], - throatchop: ["9L1"], - thunderpunch: ["9L1"], - aerialace: ["9L1"], - beatup: ["9L1"], - bite: ["9L1"], - bulldoze: ["9L1"], - counter: ["9L1"], - dig: ["9L1"], - doublekick: ["9L1"], - fissure: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - furyswipes: ["9L1"], - gigaimpact: ["9L1"], - horndrill: ["9L1"], - irontail: ["9L1"], - megakick: ["9L1"], - payday: ["9L1"], - poisonfang: ["9L1"], - poisonsting: ["9L1"], - poisontail: ["9L1"], - rocksmash: ["9L1"], - sandtomb: ["9L1"], - scratch: ["9L1"], - stompingtantrum: ["9L1"], - strength: ["9L1"], - tackle: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - blizzard: ["9L1"], - dragonpulse: ["9L1"], - earthpower: ["9L1"], - fireblast: ["9L1"], - flamethrower: ["9L1"], - focusblast: ["9L1"], - icebeam: ["9L1"], - shadowball: ["9L1"], - sludgebomb: ["9L1"], - terablast: ["9L1"], - thunder: ["9L1"], - thunderbolt: ["9L1"], - bubblebeam: ["9L1"], - echoedvoice: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - incinerate: ["9L1"], - mudshot: ["9L1"], - mudslap: ["9L1"], - round: ["9L1"], - shockwave: ["9L1"], - snore: ["9L1"], - uproar: ["9L1"], - venoshock: ["9L1"], - watergun: ["9L1"], - waterpulse: ["9L1"], - whirlpool: ["9L1"], - curse: ["9L1"], - disable: ["9L1"], - glare: ["9L1"], - honeclaws: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roar: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - toxic: ["9L1"], - attract: ["9L1"], - charm: ["9L1"], - confide: ["9L1"], - defensecurl: ["9L1"], - doubleteam: ["9L1"], - endure: ["9L1"], - flatter: ["9L1"], - focusenergy: ["9L1"], - growl: ["9L1"], - helpinghand: ["9L1"], - mimic: ["9L1"], - quash: ["9L1"], - raindance: ["9L1"], - sandstorm: ["9L1"], - sleeptalk: ["9L1"], - sunnyday: ["9L1"], - supersonic: ["9L1"], - swagger: ["9L1"], - tailwhip: ["9L1"], - torment: ["9L1"], - }, - }, - bisharpassassin: { - learnset: { - bodypress: ["9L1"], - brickbreak: ["9L1"], - drainpunch: ["9L1"], - dynamicpunch: ["9L1"], - facade: ["9L1"], - focuspunch: ["9L1"], - foulplay: ["9L1"], - hammerarm: ["9L1"], - headbutt: ["9L1"], - iceshard: ["9L1"], - icespinner: ["9L1"], - lowkick: ["9L1"], - machpunch: ["9L1"], - nightslash: ["9L1"], - poisonjab: ["9L1"], - sacredsword: ["9L1"], - shadowclaw: ["9L1"], - tripleaxel: ["9L1"], - xscissor: ["9L1"], - bulldoze: ["9L1"], - dig: ["9L1"], - falseswipe: ["9L1"], - feint: ["9L1"], - fling: ["9L1"], - furycutter: ["9L1"], - gigaimpact: ["9L1"], - guillotine: ["9L1"], - lowsweep: ["9L1"], - metalburst: ["9L1"], - metalclaw: ["9L1"], - retaliate: ["9L1"], - reversal: ["9L1"], - scratch: ["9L1"], - slash: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - upperhand: ["9L1"], - blizzard: ["9L1"], - focusblast: ["9L1"], - grassknot: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - hyperbeam: ["9L1"], - auroraveil: ["9L1"], - curse: ["9L1"], - detect: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - taunt: ["9L1"], - coaching: ["9L1"], - endure: ["9L1"], - leer: ["9L1"], - meanlook: ["9L1"], - metalsound: ["9L1"], - sandstorm: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - sunnyday: ["9L1"], - torment: ["9L1"], - wideguard: ["9L1"], - }, - }, - corviknightfalcon: { - learnset: { - acrobatics: ["9L1"], - bodypress: ["9L1"], - bodyslam: ["9L1"], - bravebird: ["9L1"], - closecombat: ["9L1"], - doubleedge: ["9L1"], - drillpeck: ["9L1"], - dualwingbeat: ["9L1"], - facade: ["9L1"], - knockoff: ["9L1"], - lowkick: ["9L1"], - powertrip: ["9L1"], - uturn: ["9L1"], - wildcharge: ["9L1"], - aerialace: ["9L1"], - fly: ["9L1"], - flyingpress: ["9L1"], - furyattack: ["9L1"], - gigaimpact: ["9L1"], - highjumpkick: ["9L1"], - peck: ["9L1"], - pluck: ["9L1"], - skyattack: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - airslash: ["9L1"], - focusblast: ["9L1"], - heatwave: ["9L1"], - hurricane: ["9L1"], - terablast: ["9L1"], - aircutter: ["9L1"], - hyperbeam: ["9L1"], - swift: ["9L1"], - agility: ["9L1"], - curse: ["9L1"], - defog: ["9L1"], - lightscreen: ["9L1"], - protect: ["9L1"], - reflect: ["9L1"], - rest: ["9L1"], - roost: ["9L1"], - substitute: ["9L1"], - tailwind: ["9L1"], - taunt: ["9L1"], - endure: ["9L1"], - faketears: ["9L1"], - leer: ["9L1"], - raindance: ["9L1"], - sandattack: ["9L1"], - scaryface: ["9L1"], - screech: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - swagger: ["9L1"], - }, - }, - krookodilequantum: { - learnset: { - bodyslam: ["9L1"], - brickbreak: ["9L1"], - doubleshock: ["9L1"], - doubleedge: ["9L1"], - dragontail: ["9L1"], - earthquake: ["9L1"], - endeavor: ["9L1"], - facade: ["9L1"], - flamecharge: ["9L1"], - focuspunch: ["9L1"], - headsmash: ["9L1"], - knockoff: ["9L1"], - powertrip: ["9L1"], - rockblast: ["9L1"], - scaleshot: ["9L1"], - stoneedge: ["9L1"], - volttackle: ["9L1"], - aerialace: ["9L1"], - bite: ["9L1"], - breakingswipe: ["9L1"], - counter: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - takedown: ["9L1"], - thief: ["9L1"], - thrash: ["9L1"], - discharge: ["9L1"], - dragonpulse: ["9L1"], - electroshot: ["9L1"], - flamethrower: ["9L1"], - inferno: ["9L1"], - meteorbeam: ["9L1"], - powergem: ["9L1"], - sludgebomb: ["9L1"], - terablast: ["9L1"], - thunderbolt: ["9L1"], - voltswitch: ["9L1"], - weatherball: ["9L1"], - burningjealousy: ["9L1"], - electroball: ["9L1"], - ember: ["9L1"], - firespin: ["9L1"], - hyperbeam: ["9L1"], - incinerate: ["9L1"], - snarl: ["9L1"], - curse: ["9L1"], - encore: ["9L1"], - memento: ["9L1"], - partingshot: ["9L1"], - protect: ["9L1"], - recover: ["9L1"], - rest: ["9L1"], - stealthrock: ["9L1"], - substitute: ["9L1"], - switcheroo: ["9L1"], - taunt: ["9L1"], - thunderwave: ["9L1"], - charge: ["9L1"], - conversion: ["9L1"], - conversion2: ["9L1"], - eerieimpulse: ["9L1"], - electricterrain: ["9L1"], - endure: ["9L1"], - helpinghand: ["9L1"], - leer: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - sunnyday: ["9L1"], - swagger: ["9L1"], - torment: ["9L1"], - }, - }, - ogerponkitsune: { - learnset: { - aquastep: ["9L1"], - blazekick: ["9L1"], - facade: ["9L1"], - knockoff: ["9L1"], - powerwhip: ["9L1"], - rocktomb: ["9L1"], - shadowsneak: ["9L1"], - uturn: ["9L1"], - zingzap: ["9L1"], - astonish: ["9L1"], - falseswipe: ["9L1"], - fling: ["9L1"], - gigaimpact: ["9L1"], - phantomforce: ["9L1"], - retaliate: ["9L1"], - slam: ["9L1"], - takedown: ["9L1"], - aurasphere: ["9L1"], - dazzlinggleam: ["9L1"], - earthpower: ["9L1"], - flashcannon: ["9L1"], - powergem: ["9L1"], - shadowball: ["9L1"], - terablast: ["9L1"], - weatherball: ["9L1"], - disarmingvoice: ["9L1"], - hyperbeam: ["9L1"], - icywind: ["9L1"], - protect: ["9L1"], - rest: ["9L1"], - substitute: ["9L1"], - transform: ["9L1"], - trickroom: ["9L1"], - babydolleyes: ["9L1"], - charm: ["9L1"], - confuseray: ["9L1"], - endure: ["9L1"], - focusenergy: ["9L1"], - followme: ["9L1"], - gravity: ["9L1"], - growth: ["9L1"], - helpinghand: ["9L1"], - imprison: ["9L1"], - magicroom: ["9L1"], - metronome: ["9L1"], - mistyterrain: ["9L1"], - scaryface: ["9L1"], - sleeptalk: ["9L1"], - spite: ["9L1"], - }, - }, -}; diff --git a/data/mods/sixbysix/pokedex.ts b/data/mods/sixbysix/pokedex.ts deleted file mode 100644 index a06fef7146..0000000000 --- a/data/mods/sixbysix/pokedex.ts +++ /dev/null @@ -1,542 +0,0 @@ -export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = { - kingdra: { - inherit: true, - otherFormes: ["Kingdra-Classic", "Kingdra-Brinepool", "Kingdra-Druid", "Kingdra-Bard", "Kingdra-Gourmet", "Kingdra-Ancient"], - formeOrder: ["Kingdra", "Kingdra-Classic", "Kingdra-Brinepool", "Kingdra-Druid", "Kingdra-Bard", "Kingdra-Gourmet", "Kingdra-Ancient"], - }, - kingdraclassic: { - num: 230, - name: "Kingdra-Classic", - baseSpecies: "Kingdra", - forme: "Classic", - types: ["Water", "Dragon"], - baseStats: { hp: 90, atk: 70, def: 80, spa: 130, spd: 90, spe: 90 }, - abilities: { 0: "Berserk", 1: "Heatproof", H: "Dry Skin" }, - heightm: 1.8, - weightkg: 152, - color: "Blue", - prevo: '', - eggGroups: ["Water 1", "Dragon"], - }, - kingdrabrinepool: { - num: 230, - name: "Kingdra-Brinepool", - baseSpecies: "Kingdra", - forme: "Brinepool", - types: ["Water", "Poison"], - baseStats: { hp: 130, atk: 35, def: 105, spa: 130, spd: 85, spe: 65 }, - abilities: { 0: "Storm Drain", 1: "Purifying Salt", H: "Dry Skin" }, - heightm: 1.8, - weightkg: 152, - color: "Blue", - prevo: '', - eggGroups: ["Water 1", "Dragon"], - }, - kingdradruid: { - num: 230, - name: "Kingdra-Druid", - baseSpecies: "Kingdra", - forme: "Druid", - types: ["Steel", "Dragon"], - baseStats: { hp: 105, atk: 65, def: 90, spa: 120, spd: 120, spe: 50 }, - abilities: { 0: "Berserk", 1: "Heatproof", H: "Water Absorb" }, - heightm: 1.8, - weightkg: 152, - color: "Blue", - prevo: '', - eggGroups: ["Water 1", "Dragon"], - }, - kingdrabard: { - num: 230, - name: "Kingdra-Bard", - baseSpecies: "Kingdra", - forme: "Bard", - types: ["Water", "Fairy"], - baseStats: { hp: 90, atk: 70, def: 80, spa: 130, spd: 100, spe: 80 }, - abilities: { 0: "Punk Rock", 1: "Cute Charm", H: "Dancer" }, - heightm: 1.8, - weightkg: 152, - color: "Blue", - prevo: '', - eggGroups: ["Water 1", "Dragon"], - }, - kingdragourmet: { - num: 230, - name: "Kingdra-Gourmet", - baseSpecies: "Kingdra", - forme: "Gourmet", - types: ["Normal", "Dragon"], - baseStats: { hp: 110, atk: 110, def: 80, spa: 90, spd: 100, spe: 60 }, - abilities: { 0: "Emergency Exit", 1: "Thick Fat", H: "Poison Heal" }, - heightm: 1.8, - weightkg: 152, - color: "Blue", - prevo: '', - eggGroups: ["Water 1", "Dragon"], - }, - kingdraancient: { - num: 230, - name: "Kingdra-Ancient", - baseSpecies: "Kingdra", - forme: "Ancient", - types: ["Fire", "Grass"], - baseStats: { hp: 89, atk: 89, def: 91, spa: 111, spd: 91, spe: 79 }, - abilities: { 0: "Competitive", 1: "Heatproof", H: "Protosynthesis" }, - heightm: 1.8, - weightkg: 152, - color: "Blue", - prevo: '', - eggGroups: ["Water 1", "Dragon"], - }, - nidoqueen: { - inherit: true, - otherFormes: ["Nidoqueen-Classic", "Nidoqueen-Erudite", "Nidoqueen-Volcanic", "Nidoqueen-Rosegold", "Nidoqueen-Shaman", "Nidoqueen-Jasper"], - formeOrder: ["Nidoqueen", "Nidoqueen-Classic", "Nidoqueen-Erudite", "Nidoqueen-Volcanic", "Nidoqueen-Rosegold", "Nidoqueen-Shaman", "Nidoqueen-Jasper"], - }, - nidoqueenclassic: { - num: 31, - name: "Nidoqueen-Classic", - baseSpecies: "Nidoqueen", - forme: "Classic", - types: ["Poison", "Ground"], - gender: "F", - baseStats: { hp: 135, atk: 115, def: 60, spa: 90, spd: 85, spe: 55 }, - abilities: { 0: "Poison Point", 1: "Cheek Pouch", H: "Serene Grace" }, - heightm: 1.3, - weightkg: 60, - color: "Blue", - prevo: '', - eggGroups: ["Undiscovered"], - }, - nidoqueenerudite: { - num: 31, - name: "Nidoqueen-Erudite", - baseSpecies: "Nidoqueen", - forme: "Erudite", - types: ["Psychic", "Ground"], - gender: "F", - baseStats: { hp: 95, atk: 100, def: 80, spa: 115, spd: 110, spe: 40 }, - abilities: { 0: "Cute Charm", 1: "Regenerator", H: "Serene Grace" }, - heightm: 1.3, - weightkg: 60, - color: "Blue", - prevo: '', - eggGroups: ["Undiscovered"], - }, - nidoqueenvolcanic: { - num: 31, - name: "Nidoqueen-Volcanic", - baseSpecies: "Nidoqueen", - forme: "Volcanic", - types: ["Fire", "Ground"], - gender: "F", - baseStats: { hp: 125, atk: 75, def: 100, spa: 110, spd: 75, spe: 55 }, - abilities: { 0: "Flame Body", 1: "Cheek Pouch", H: "Sheer Force" }, - heightm: 1.3, - weightkg: 60, - color: "Blue", - prevo: '', - eggGroups: ["Undiscovered"], - }, - nidoqueenrosegold: { - num: 31, - name: "Nidoqueen-Rosegold", - baseSpecies: "Nidoqueen", - forme: "Rosegold", - types: ["Poison", "Grass"], - gender: "F", - baseStats: { hp: 125, atk: 70, def: 100, spa: 100, spd: 85, spe: 60 }, - abilities: { 0: "Rough Skin", 1: "Cheek Pouch", H: "Shield Dust" }, - heightm: 1.3, - weightkg: 60, - color: "Blue", - prevo: '', - eggGroups: ["Undiscovered"], - }, - nidoqueenshaman: { - num: 31, - name: "Nidoqueen-Shaman", - baseSpecies: "Nidoqueen", - forme: "Shaman", - types: ["Poison", "Ghost"], - gender: "F", - baseStats: { hp: 95, atk: 120, def: 60, spa: 90, spd: 80, spe: 95 }, - abilities: { 0: "Toxic Chain", 1: "Regenerator", H: "Sheer Force" }, - heightm: 1.3, - weightkg: 60, - color: "Blue", - prevo: '', - eggGroups: ["Undiscovered"], - }, - nidoqueenjasper: { - num: 31, - name: "Nidoqueen-Jasper", - baseSpecies: "Nidoqueen", - forme: "Jasper", - types: ["Poison", "Rock"], - gender: "F", - baseStats: { hp: 135, atk: 125, def: 70, spa: 80, spd: 85, spe: 45 }, - abilities: { 0: "Clear Body", 1: "Earth Eater", H: "Sand Stream" }, - heightm: 1.3, - weightkg: 60, - color: "Blue", - prevo: '', - eggGroups: ["Undiscovered"], - }, - bisharp: { - inherit: true, - otherFormes: ["Bisharp-Centurion", "Bisharp-Savage", "Bisharp-Ronin", "Bisharp-Mantis", "Bisharp-Revenant", "Bisharp-Assassin"], - formeOrder: ["Bisharp", "Bisharp-Centurion", "Bisharp-Savage", "Bisharp-Ronin", "Bisharp-Mantis", "Bisharp-Revenant", "Bisharp-Assassin"], - }, - bisharpcenturion: { - num: 625, - name: "Bisharp-Centurion", - baseSpecies: "Bisharp", - forme: "Centurion", - types: ["Fighting", "Steel"], - baseStats: { hp: 70, atk: 140, def: 115, spa: 55, spd: 70, spe: 70 }, - abilities: { 0: "Overcoat", 1: "Technician", H: "Solar Power" }, - heightm: 1.6, - weightkg: 70, - color: "Red", - prevo: '', - eggGroups: ["Human-Like"], - }, - bisharpsavage: { - num: 625, - name: "Bisharp-Savage", - baseSpecies: "Bisharp", - forme: "Savage", - types: ["Grass", "Steel"], - baseStats: { hp: 90, atk: 110, def: 135, spa: 40, spd: 80, spe: 65 }, - abilities: { 0: "Bulletproof", 1: "Technician", H: "Leaf Guard" }, - heightm: 1.6, - weightkg: 70, - color: "Red", - prevo: '', - eggGroups: ["Human-Like"], - }, - bisharpronin: { - num: 625, - name: "Bisharp-Ronin", - baseSpecies: "Bisharp", - forme: "Ronin", - types: ["Fighting", "Poison"], - baseStats: { hp: 70, atk: 115, def: 110, spa: 45, spd: 70, spe: 110 }, - abilities: { 0: "Overcoat", 1: "Technician", H: "Dry Skin" }, - heightm: 1.6, - weightkg: 70, - color: "Red", - prevo: '', - eggGroups: ["Human-Like"], - }, - bisharpmantis: { - num: 625, - name: "Bisharp-Mantis", - baseSpecies: "Bisharp", - forme: "Mantis", - types: ["Dark", "Bug"], - baseStats: { hp: 80, atk: 120, def: 105, spa: 45, spd: 85, spe: 85 }, - abilities: { 0: "Overcoat", 1: "Sharpness", H: "Orichalcum Pulse" }, - heightm: 1.6, - weightkg: 70, - color: "Red", - prevo: '', - eggGroups: ["Human-Like"], - }, - bisharprevenant: { - num: 625, - name: "Bisharp-Revenant", - baseSpecies: "Bisharp", - forme: "Revenant", - types: ["Ghost", "Steel"], - baseStats: { hp: 80, atk: 135, def: 120, spa: 45, spd: 70, spe: 70 }, - abilities: { 0: "Magic Bounce", 1: "Mirror Armor", H: "Justified" }, - heightm: 1.6, - weightkg: 70, - color: "Red", - prevo: '', - eggGroups: ["Human-Like"], - }, - bisharpassassin: { - num: 625, - name: "Bisharp-Assassin", - baseSpecies: "Bisharp", - forme: "Assassin", - types: ["Fighting", "Ice"], - baseStats: { hp: 80, atk: 130, def: 110, spa: 55, spd: 70, spe: 75 }, - abilities: { 0: "Dazzling", 1: "No Guard", H: "Slush Rush" }, - heightm: 1.6, - weightkg: 70, - color: "Red", - prevo: '', - eggGroups: ["Human-Like"], - }, - corviknight: { - inherit: true, - otherFormes: ["Corviknight-Thunderbird", "Corviknight-Genie", "Corviknight-Yeti", "Corviknight-Analytical", "Corviknight-Martian", "Corviknight-Falcon"], - formeOrder: ["Corviknight", "Corviknight-Thunderbird", "Corviknight-Genie", "Corviknight-Yeti", "Corviknight-Analytical", "Corviknight-Martian", "Corviknight-Falcon"], - }, - corviknightthunderbird: { - num: 823, - name: "Corviknight-Thunderbird", - baseSpecies: "Corviknight", - forme: "Thunderbird", - types: ["Flying", "Electric"], - baseStats: { hp: 85, atk: 55, def: 105, spa: 115, spd: 85, spe: 85 }, - abilities: { 0: "Pickpocket", 1: "Quick Feet", H: "Drizzle" }, - heightm: 2.2, - weightkg: 75, - color: "Purple", - prevo: '', - eggGroups: ["Flying"], - }, - corviknightgenie: { - num: 823, - name: "Corviknight-Genie", - baseSpecies: "Corviknight", - forme: "Genie", - types: ["Flying", "Ground"], - baseStats: { hp: 89, atk: 45, def: 95, spa: 120, spd: 90, spe: 91 }, - abilities: { 0: "Intimidate", 1: "Sand Force", H: "Prankster" }, - heightm: 2.2, - weightkg: 75, - color: "Purple", - prevo: '', - eggGroups: ["Flying"], - }, - corviknightyeti: { - num: 823, - name: "Corviknight-Yeti", - baseSpecies: "Corviknight", - forme: "Yeti", - types: ["Flying", "Ice"], - baseStats: { hp: 85, atk: 55, def: 80, spa: 95, spd: 110, spe: 110 }, - abilities: { 0: "Mummy", 1: "Quick Feet", H: "Snow Warning" }, - heightm: 2.2, - weightkg: 75, - color: "Purple", - prevo: '', - eggGroups: ["Flying"], - }, - corviknightanalytical: { - num: 823, - name: "Corviknight-Analytical", - baseSpecies: "Corviknight", - forme: "Analytical", - types: ["Psychic", "Electric"], - baseStats: { hp: 85, atk: 55, def: 80, spa: 110, spd: 85, spe: 115 }, - abilities: { 0: "Pickpocket", 1: "Flare Boost", H: "Psychic Surge" }, - heightm: 2.2, - weightkg: 75, - color: "Purple", - prevo: '', - eggGroups: ["Flying"], - }, - corviknightmartian: { - num: 823, - name: "Corviknight-Martian", - baseSpecies: "Corviknight", - forme: "Martian", - types: ["Psychic", "Steel"], - baseStats: { hp: 95, atk: 45, def: 120, spa: 100, spd: 105, spe: 65 }, - abilities: { 0: "Iron Barbs", 1: "Quick Feet", H: "Hadron Engine" }, - heightm: 2.2, - weightkg: 75, - color: "Purple", - prevo: '', - eggGroups: ["Flying"], - }, - corviknightfalcon: { - num: 823, - name: "Corviknight-Falcon", - baseSpecies: "Corviknight", - forme: "Falcon", - types: ["Flying", "Fighting"], - baseStats: { hp: 86, atk: 95, def: 75, spa: 75, spd: 85, spe: 114 }, - abilities: { 0: "Pickpocket", 1: "Guts", H: "Delta Stream" }, - heightm: 2.2, - weightkg: 75, - color: "Purple", - prevo: '', - eggGroups: ["Flying"], - }, - krookodile: { - inherit: true, - otherFormes: ["Krookodile-Infernal", "Krookodile-Abyssal", "Krookodile-Wetlander", "Krookodile-Cave Dweller", "Krookodile-Cliffside", "Krookodile-Quantum"], - formeOrder: ["Krookodile", "Krookodile-Infernal", "Krookodile-Abyssal", "Krookodile-Wetlander", "Krookodile-Cave Dweller", "Krookodile-Cliffside", "Krookodile-Quantum"], - }, - krookodileinfernal: { - num: 553, - name: "Krookodile-Infernal", - baseSpecies: "Krookodile", - forme: "Infernal", - types: ["Fire", "Dark"], - baseStats: { hp: 90, atk: 80, def: 85, spa: 105, spd: 90, spe: 100 }, - abilities: { 0: "Magic Guard", 1: "Wonder Skin", H: "Sturdy" }, - heightm: 1.5, - weightkg: 96.3, - color: "Red", - prevo: '', - eggGroups: ["Field"], - }, - krookodileabyssal: { - num: 553, - name: "Krookodile-Abyssal", - baseSpecies: "Krookodile", - forme: "Abyssal", - types: ["Ground", "Dark"], - baseStats: { hp: 90, atk: 120, def: 85, spa: 75, spd: 90, spe: 90 }, - abilities: { 0: "Rock Head", 1: "Wonder Skin", H: "Multiscale" }, - heightm: 1.5, - weightkg: 96.3, - color: "Red", - prevo: '', - eggGroups: ["Field"], - }, - krookodilewetlander: { - num: 553, - name: "Krookodile-Wetlander", - baseSpecies: "Krookodile", - forme: "Wetlander", - types: ["Grass", "Water"], - baseStats: { hp: 100, atk: 100, def: 75, spa: 85, spd: 110, spe: 80 }, - abilities: { 0: "Rock Head", 1: "Wonder Skin", H: "Wind Rider" }, - heightm: 1.5, - weightkg: 96.3, - color: "Red", - prevo: '', - eggGroups: ["Field"], - }, - krookodilecavedweller: { - num: 553, - name: "Krookodile-Cave Dweller", - baseSpecies: "Krookodile", - forme: "Cave Dweller", - types: ["Fire", "Rock"], - baseStats: { hp: 80, atk: 110, def: 75, spa: 85, spd: 80, spe: 120 }, - abilities: { 0: "Magic Guard", 1: "Wonder Skin", H: "Sturdy" }, - heightm: 1.5, - weightkg: 96.3, - color: "Red", - prevo: '', - eggGroups: ["Field"], - }, - krookodilecliffside: { - num: 553, - name: "Krookodile-Cliffside", - baseSpecies: "Krookodile", - forme: "Cliffside", - types: ["Dragon", "Dark"], - baseStats: { hp: 90, atk: 70, def: 85, spa: 115, spd: 80, spe: 110 }, - abilities: { 0: "Intimidate", 1: "Merciless", H: "Mold Breaker" }, - heightm: 1.5, - weightkg: 96.3, - color: "Red", - prevo: '', - eggGroups: ["Field"], - }, - krookodilequantum: { - num: 553, - name: "Krookodile-Quantum", - baseSpecies: "Krookodile", - forme: "Quantum", - types: ["Electric", "Rock"], - baseStats: { hp: 95, atk: 100, def: 85, spa: 85, spd: 85, spe: 100 }, - abilities: { 0: "Rock Head", 1: "Prankster", H: "Sturdy" }, - heightm: 1.5, - weightkg: 96.3, - color: "Red", - prevo: '', - eggGroups: ["Field"], - }, - ogerpon: { - inherit: true, - otherFormes: ["Ogerpon-Muerta", "Ogerpon-Easter", "Ogerpon-Ankh", "Ogerpon-Eid", "Ogerpon-Vessel", "Ogerpon-Kitsune"], - formeOrder: ["Ogerpon", "Ogerpon-Muerta", "Ogerpon-Easter", "Ogerpon-Ankh", "Ogerpon-Eid", "Ogerpon-Vessel", "Ogerpon-Kitsune"], - }, - ogerponmuerta: { - num: 1017, - name: "Ogerpon-Muerta", - baseSpecies: "Ogerpon", - forme: "Muerta", - types: ["Fairy", "Ghost"], - gender: "F", - baseStats: { hp: 90, atk: 120, def: 70, spa: 100, spd: 90, spe: 130 }, - abilities: { 0: "Wandering Spirit" }, - heightm: 1.2, - weightkg: 39.8, - color: "Green", - eggGroups: ["Undiscovered"], - }, - ogerponeaster: { - num: 1017, - name: "Ogerpon-Easter", - baseSpecies: "Ogerpon", - forme: "Easter", - types: ["Fairy", "Normal"], - gender: "F", - baseStats: { hp: 105, atk: 95, def: 95, spa: 110, spd: 80, spe: 115 }, - abilities: { 0: "Pickpocket" }, - heightm: 1.2, - weightkg: 39.8, - color: "Green", - eggGroups: ["Undiscovered"], - }, - ogerponankh: { - num: 1017, - name: "Ogerpon-Ankh", - baseSpecies: "Ogerpon", - forme: "Ankh", - types: ["Ghost"], - gender: "F", - baseStats: { hp: 85, atk: 130, def: 70, spa: 130, spd: 90, spe: 95 }, - abilities: { 0: "Mummy", H: "Good as Gold" }, - heightm: 1.2, - weightkg: 39.8, - color: "Green", - eggGroups: ["Undiscovered"], - }, - ogerponeid: { - num: 1017, - name: "Ogerpon-Eid", - baseSpecies: "Ogerpon", - forme: "Eid", - types: ["Water", "Ghost"], - gender: "F", - baseStats: { hp: 95, atk: 98, def: 100, spa: 105, spd: 110, spe: 92 }, - abilities: { 0: "Tangling Hair" }, - heightm: 1.2, - weightkg: 39.8, - color: "Green", - eggGroups: ["Undiscovered"], - }, - ogerponvessel: { - num: 1017, - name: "Ogerpon-Vessel", - baseSpecies: "Ogerpon", - forme: "Vessel", - types: ["Bug", "Fighting"], - gender: "F", - baseStats: { hp: 95, atk: 115, def: 80, spa: 80, spd: 80, spe: 150 }, - abilities: { 0: "Trace" }, - heightm: 1.2, - weightkg: 39.8, - color: "Green", - eggGroups: ["Undiscovered"], - }, - ogerponkitsune: { - num: 1017, - name: "Ogerpon-Kitsune", - baseSpecies: "Ogerpon", - forme: "Kitsune", - types: ["Fairy"], - gender: "F", - baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 }, - abilities: { 0: "Protean" }, - heightm: 1.2, - weightkg: 39.8, - color: "Green", - eggGroups: ["Undiscovered"], - }, -}; diff --git a/data/mods/sixbysix/rulesets.ts b/data/mods/sixbysix/rulesets.ts deleted file mode 100644 index 6b2be5e210..0000000000 --- a/data/mods/sixbysix/rulesets.ts +++ /dev/null @@ -1,17 +0,0 @@ -export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = { - spriteviewer: { - effectType: 'ValidatorRule', - name: 'Sprite Viewer', - desc: "Displays a fakemon's sprite in chat when it is switched in for the first time", - onBegin() { - this.add('rule', 'Sprite Viewer: Displays sprites in chat'); - }, - onSwitchIn(pokemon) { - if (!this.effectState[pokemon.species.id]) { - this.add('-message', `${pokemon.species.name}'s Sprite:`); - this.add(`raw|`); - this.effectState[pokemon.species.id] = true; - } - }, - }, -}; diff --git a/data/mods/sixbysix/scripts.ts b/data/mods/sixbysix/scripts.ts deleted file mode 100644 index 4346dd0db2..0000000000 --- a/data/mods/sixbysix/scripts.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const Scripts: ModdedBattleScriptsData = { - gen: 9, -}; diff --git a/data/random-battles/gen6megasrevisited/factory-sets.json b/data/random-battles/gen6megasrevisited/factory-sets.json new file mode 100644 index 0000000000..12918022ce --- /dev/null +++ b/data/random-battles/gen6megasrevisited/factory-sets.json @@ -0,0 +1,10319 @@ +{ + "Uber": { + "klefki": { + "flags": {}, + "sets": [ + { + "species": "Klefki", + "item": "Leftovers", + "ability": "Prankster", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Spikes"], ["Thunder Wave"], ["Toxic"], ["Play Rough"]] + } + ] + }, + "zekrom": { + "flags": {}, + "sets": [ + { + "species": "Zekrom", + "item": "Choice Band", + "ability": "Teravolt", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Bolt Strike"], ["Outrage"], ["Dragon Claw"], ["Volt Switch"]] + }, + { + "species": "Zekrom", + "item": "Choice Scarf", + "ability": "Teravolt", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Lonely", + "moves": [["Bolt Strike"], ["Volt Switch"], ["Draco Meteor"], ["Outrage"]] + }, + { + "species": "Zekrom", + "item": "Choice Scarf", + "ability": "Teravolt", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Bolt Strike"], ["Volt Switch"], ["Sleep Talk"], ["Outrage"]] + }, + { + "species": "Zekrom", + "item": "Life Orb", + "ability": "Teravolt", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Lonely", + "moves": [["Bolt Strike"], ["Draco Meteor"], ["Dragon Claw"], ["Tailwind"]] + }, + { + "species": "Zekrom", + "item": "Shuca Berry", + "ability": "Teravolt", + "evs": {"hp": 132, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 124}, + "nature": "Adamant", + "moves": [["Substitute", "Outrage"], ["Hone Claws"], ["Bolt Strike"], ["Dragon Claw"]] + } + ] + }, + "yveltal": { + "flags": {}, + "sets": [ + { + "species": "Yveltal", + "item": "Choice Scarf", + "ability": "Dark Aura", + "evs": {"hp": 0, "atk": 32, "def": 4, "spa": 248, "spd": 0, "spe": 224}, + "nature": "Modest", + "moves": [["Dark Pulse"], ["Oblivion Wing"], ["Foul Play"], ["U-turn"]] + }, + { + "species": "Yveltal", + "item": "Life Orb", + "ability": "Dark Aura", + "evs": {"hp": 132, "atk": 28, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Rash", + "moves": [["Dark Pulse"], ["Oblivion Wing"], ["Sucker Punch"], ["Heat Wave"]] + }, + { + "species": "Yveltal", + "item": "Leftovers", + "ability": "Dark Aura", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Foul Play"], ["Taunt"], ["Sucker Punch"], ["Roost"]] + }, + { + "species": "Yveltal", + "item": "Leftovers", + "ability": "Dark Aura", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Bold", + "moves": [["Foul Play"], ["Taunt"], ["Toxic"], ["Roost"]] + } + ] + }, + "xerneas": { + "flags": {}, + "sets": [ + { + "species": "Xerneas", + "item": "Life Orb", + "ability": "Fairy Aura", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Mild", + "moves": [["Moonblast"], ["Close Combat"], ["Rock Slide"], ["Aromatherapy"]] + }, + { + "species": "Xerneas", + "item": "Choice Scarf", + "ability": "Fairy Aura", + "evs": {"hp": 0, "atk": 76, "def": 0, "spa": 248, "spd": 0, "spe": 184}, + "nature": "Rash", + "moves": [["Moonblast"], ["Sleep Talk"], ["Close Combat"], ["Rock Slide"]] + }, + { + "species": "Xerneas", + "item": "Leftovers", + "ability": "Fairy Aura", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Aromatherapy"], ["Rest"], ["Sleep Talk"], ["Moonblast"]] + }, + { + "species": "Xerneas", + "item": "Power Herb", + "ability": "Fairy Aura", + "evs": {"hp": 184, "atk": 0, "def": 28, "spa": 252, "spd": 0, "spe": 44}, + "nature": "Modest", + "moves": [["Geomancy"], ["Moonblast"], ["Focus Blast"], ["Thunder"]] + }, + { + "species": "Xerneas", + "item": "Power Herb", + "ability": "Fairy Aura", + "evs": {"hp": 184, "atk": 0, "def": 28, "spa": 252, "spd": 0, "spe": 44}, + "nature": "Modest", + "moves": [["Geomancy"], ["Moonblast"], ["Hidden Power Ground"], ["Thunder"]] + } + ] + }, + "tyranitar": { + "flags": {}, + "sets": [ + { + "species": "Tyranitar", + "item": "Leftovers", + "ability": "Sand Stream", + "evs": {"hp": 248, "atk": 0, "def": 96, "spa": 0, "spd": 164, "spe": 0}, + "nature": "Careful", + "moves": [["Stealth Rock"], ["Pursuit"], ["Rock Slide"], ["Thunder Wave", "Roar"]] + }, + { + "species": "Tyranitar", + "item": "Shuca Berry", + "ability": "Sand Stream", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Stealth Rock"], ["Pursuit"], ["Rock Slide"], ["Thunder Wave", "Roar"]] + }, + { + "species": "Tyranitar", + "item": "Shuca Berry", + "ability": "Sand Stream", + "evs": {"hp": 248, "atk": 72, "def": 0, "spa": 0, "spd": 188, "spe": 0}, + "nature": "Careful", + "moves": [["Stealth Rock"], ["Low Kick"], ["Rock Slide"], ["Thunder Wave", "Roar"]] + } + ] + }, + "shayminsky": { + "flags": {}, + "sets": [ + { + "species": "Shaymin-Sky", + "item": "Life Orb", + "ability": "Serene Grace", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Seed Flare"], ["Air Slash"], ["Earth Power"], ["Healing Wish"]] + }, + { + "species": "Shaymin-Sky", + "item": "Leftovers", + "ability": "Serene Grace", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Leech Seed"], ["Seed Flare"], ["Air Slash"]] + } + ] + }, + "salamence": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Salamence", + "item": "Salamencite", + "ability": "Intimidate", + "evs": {"hp": 200, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Adamant", + "moves": [["Double-Edge"], ["Refresh", "Earthquake"], ["Roost"], ["Dragon Dance"]] + }, + { + "species": "Salamence", + "item": "Salamencite", + "ability": "Intimidate", + "evs": {"hp": 200, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Adamant", + "moves": [["Return"], ["Refresh", "Earthquake"], ["Roost"], ["Dragon Dance"]], + "happiness": 255 + }, + { + "species": "Salamence", + "item": "Salamencite", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Return"], ["Earthquake"], ["Roost"], ["Dragon Dance"]], + "happiness": 255 + }, + { + "species": "Salamence", + "item": "Salamencite", + "ability": "Intimidate", + "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 0, "spe": 124}, + "nature": "Impish", + "moves": [["Return"], ["Refresh"], ["Roost"], ["Dragon Dance"]], + "happiness": 255 + } + ] + }, + "sableye": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Sableye", + "item": "Sablenite", + "ability": "Prankster", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Bold", + "moves": [["Foul Play"], ["Protect", "Fake Out"], ["Will-O-Wisp"], ["Recover"]] + } + ] + }, + "reshiram": { + "flags": {}, + "sets": [ + { + "species": "Reshiram", + "item": "Choice Scarf", + "ability": "Turboblaze", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Blue Flare"], ["Draco Meteor"], ["Sleep Talk"], ["Stone Edge"]] + }, + { + "species": "Reshiram", + "item": "Life Orb", + "ability": "Turboblaze", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Flame Charge"], ["Blue Flare"], ["Draco Meteor"], ["Stone Edge"]] + }, + { + "species": "Reshiram", + "item": "Leftovers", + "ability": "Turboblaze", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Blue Flare"], ["Draco Meteor"], ["Toxic"], ["Roost"]] + } + ] + }, + "rayquaza": { + "flags": {}, + "sets": [ + { + "species": "Rayquaza", + "item": "Life Orb", + "ability": "Air Lock", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Dragon Dance"], ["Dragon Ascent"], ["Earthquake"], ["Extreme Speed"]] + }, + { + "species": "Rayquaza", + "item": "Life Orb", + "ability": "Air Lock", + "evs": {"hp": 0, "atk": 40, "def": 0, "spa": 252, "spd": 0, "spe": 216}, + "nature": "Rash", + "moves": [["Draco Meteor"], ["Dragon Ascent"], ["Extreme Speed"], ["Earthquake"]] + }, + { + "species": "Rayquaza", + "item": "Life Orb", + "ability": "Air Lock", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Dragon Ascent"], ["Earthquake"], ["Extreme Speed"]] + } + ] + }, + "palkia": { + "flags": {}, + "sets": [ + { + "species": "Palkia", + "item": "Choice Specs", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Hydro Pump"], ["Draco Meteor"], ["Spacial Rend"], ["Fire Blast"]] + }, + { + "species": "Palkia", + "item": "Lustrous Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Hydro Pump"], ["Spacial Rend"], ["Fire Blast"], ["Thunder Wave"]] + }, + { + "species": "Palkia", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Surf"], ["Toxic"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Palkia", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 60, "atk": 0, "def": 0, "spa": 196, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Rest"], ["Toxic"], ["Hydro Pump"], ["Spacial Rend"]] + } + ] + }, + "mewtwo": { + "flags": {}, + "sets": [ + { + "species": "Mewtwo", + "item": "Mewtwonite X", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Ice Beam"], ["Low Kick"], ["Earthquake"], ["Rock Slide"]] + }, + { + "species": "Mewtwo", + "item": "Mewtwonite X", + "ability": "Pressure", + "evs": {"hp": 176, "atk": 80, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Low Kick"], ["Taunt"], ["Earthquake"], ["Ice Beam"]] + }, + { + "species": "Mewtwo", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Psystrike"], ["Calm Mind"], ["Ice Beam"], ["Focus Blast"]] + }, + { + "species": "Mewtwo", + "item": "Mewtwonite Y", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Psystrike"], ["Calm Mind"], ["Ice Beam"], ["Focus Blast"]] + } + ] + }, + "mawile": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Mawile", + "item": "Mawilite", + "ability": "Intimidate", + "evs": {"hp": 248, "atk": 16, "def": 0, "spa": 0, "spd": 244, "spe": 0}, + "nature": "Adamant", + "moves": [["Iron Head"], ["Play Rough"], ["Sucker Punch"], ["Baton Pass"]] + } + ] + }, + "lugia": { + "flags": {}, + "sets": [ + { + "species": "Lugia", + "item": "Leftovers", + "ability": "Multiscale", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Bold", + "moves": [["Roost"], ["Ice Beam"], ["Whirlwind"], ["Toxic"]] + } + ] + }, + "lucario": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Lucario", + "item": "Lucarionite", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Close Combat"], ["Bullet Punch"], ["Stone Edge"], ["Iron Tail"]] + } + ] + }, + "latios": { + "flags": {}, + "sets": [ + { + "species": "Latios", + "item": "Soul Dew", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Defog"], ["Memento", "Recover"]] + }, + { + "species": "Latios", + "item": "Soul Dew", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Defog"], ["Hidden Power Fire"]] + }, + { + "species": "Latios", + "item": "Soul Dew", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Calm Mind"], ["Memento", "Recover"]] + }, + { + "species": "Latios", + "item": "Soul Dew", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Calm Mind"], ["Hidden Power Fire"]] + } + ] + }, + "latias": { + "flags": {}, + "sets": [ + { + "species": "Latias", + "item": "Soul Dew", + "ability": "Levitate", + "evs": {"hp": 212, "atk": 0, "def": 0, "spa": 120, "spd": 0, "spe": 176}, + "nature": "Timid", + "moves": [["Defog"], ["Draco Meteor"], ["Psyshock"], ["Recover", "Healing Wish"]] + }, + { + "species": "Latias", + "item": "Soul Dew", + "ability": "Levitate", + "evs": {"hp": 80, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 176}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Draco Meteor"], ["Psyshock"], ["Recover"]] + } + ] + }, + "kyuremwhite": { + "flags": {}, + "sets": [ + { + "species": "Kyurem-White", + "item": "Choice Specs", + "ability": "Turboblaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Ice Beam"], ["Fusion Flare"], ["Earth Power"]] + }, + { + "species": "Kyurem-White", + "item": "Life Orb", + "ability": "Turboblaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Ice Beam"], ["Fusion Flare"], ["Stone Edge"]] + } + ] + }, + "kyogre": { + "flags": {}, + "sets": [ + { + "species": "Kyogre", + "item": "Blue Orb", + "ability": "Drizzle", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Origin Pulse"], ["Thunder"], ["Ice Beam"], ["Calm Mind"]] + }, + { + "species": "Kyogre", + "item": "Blue Orb", + "ability": "Drizzle", + "evs": {"hp": 248, "atk": 0, "def": 248, "spa": 0, "spd": 0, "spe": 12}, + "nature": "Bold", + "moves": [["Rest"], ["Sleep Talk"], ["Scald"], ["Ice Beam", "Roar"]] + }, + { + "species": "Kyogre", + "item": "Blue Orb", + "ability": "Drizzle", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 248, "spd": 0, "spe": 12}, + "nature": "Modest", + "moves": [["Origin Pulse"], ["Thunder", "Rest", "Substitute"], ["Ice Beam"], ["Calm Mind"]] + }, + { + "species": "Kyogre", + "item": "Choice Specs", + "ability": "Drizzle", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Water Spout"], ["Origin Pulse", "Scald"], ["Ice Beam"], ["Thunder"]] + }, + { + "species": "Kyogre", + "item": "Choice Scarf", + "ability": "Drizzle", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Water Spout"], ["Ice Beam"], ["Origin Pulse"], ["Thunder", "Sleep Talk"]] + } + ] + }, + "kangaskhan": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Kangaskhan", + "item": "Kangaskhanite", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Return"], ["Fake Out"], ["Power-Up Punch"], ["Crunch"]], + "happiness": 255 + }, + { + "species": "Kangaskhan", + "item": "Kangaskhanite", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Double-Edge"], ["Fake Out"], ["Sucker Punch"], ["Low Kick"]] + }, + { + "species": "Kangaskhan", + "item": "Kangaskhanite", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Return"], ["Fake Out"], ["Sucker Punch"], ["Low Kick"]], + "happiness": 255 + } + ] + }, + "hooh": { + "flags": {}, + "sets": [ + { + "species": "Ho-Oh", + "item": "Choice Band", + "ability": "Regenerator", + "evs": {"hp": 248, "atk": 208, "def": 0, "spa": 0, "spd": 52, "spe": 0}, + "nature": "Adamant", + "moves": [["Brave Bird"], ["Sacred Fire"], ["Earthquake"], ["Sleep Talk"]] + }, + { + "species": "Ho-Oh", + "item": "Life Orb", + "ability": "Regenerator", + "evs": {"hp": 248, "atk": 208, "def": 0, "spa": 0, "spd": 52, "spe": 0}, + "nature": "Adamant", + "moves": [["Brave Bird"], ["Sacred Fire"], ["Recover"], ["Thunder Wave", "Earthquake", "Substitute"]] + } + ] + }, + "groudon": { + "flags": {}, + "sets": [ + { + "species": "Groudon", + "item": "Red Orb", + "ability": "Drought", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 200, "spe": 56}, + "nature": "Adamant", + "moves": [["Rock Polish"], ["Precipice Blades", "Earthquake"], ["Stone Edge"], ["Swords Dance", "Dragon Claw"]] + }, + { + "species": "Groudon", + "item": "Red Orb", + "ability": "Drought", + "evs": {"hp": 248, "atk": 0, "def": 56, "spa": 0, "spd": 192, "spe": 12}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Precipice Blades", "Earthquake"], ["Lava Plume", "Stone Edge"], ["Thunder Wave", "Roar"]] + }, + { + "species": "Groudon", + "item": "Red Orb", + "ability": "Drought", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Lava Plume"], ["Roar"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Groudon", + "item": "Leftovers", + "ability": "Drought", + "evs": {"hp": 248, "atk": 0, "def": 248, "spa": 0, "spd": 0, "spe": 12}, + "nature": "Impish", + "moves": [["Precipice Blades"], ["Stealth Rock"], ["Stone Edge"], ["Dragon Tail", "Roar"]] + } + ] + }, + "greninja": { + "flags": {}, + "sets": [ + { + "species": "Greninja", + "item": "Focus Sash", + "ability": "Protean", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Toxic Spikes"], ["Spikes"], ["Taunt"], ["Shadow Sneak"]] + }, + { + "species": "Greninja", + "item": "Focus Sash", + "ability": "Protean", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Toxic Spikes"], ["Scald"], ["Taunt"], ["Shadow Sneak"]] + } + ] + }, + "giratina": { + "flags": {}, + "sets": [ + { + "species": "Giratina", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Rest"], ["Sleep Talk"], ["Will-O-Wisp"], ["Roar"]] + }, + { + "species": "Giratina", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Rest"], ["Sleep Talk"], ["Will-O-Wisp"], ["Roar"]] + } + ] + }, + "giratinaorigin": { + "flags": {}, + "sets": [ + { + "species": "Giratina-Origin", + "item": "Griseous Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 180, "def": 0, "spa": 252, "spd": 0, "spe": 76}, + "nature": "Rash", + "moves": [["Draco Meteor"], ["Shadow Sneak"], ["Dragon Tail"], ["Defog"]] + }, + { + "species": "Giratina-Origin", + "item": "Griseous Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 244, "def": 252, "spa": 0, "spd": 0, "spe": 12}, + "nature": "Adamant", + "moves": [["Defog"], ["Shadow Sneak"], ["Dragon Tail"], ["Shadow Force"]] + } + ] + }, + "gengar": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Gengar", + "item": "Gengarite", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Taunt"], ["Destiny Bond"], ["Sludge Wave"], ["Focus Blast"]] + }, + { + "species": "Gengar", + "item": "Gengarite", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 84, "spe": 176}, + "nature": "Timid", + "moves": [["Perish Song"], ["Taunt"], ["Protect"], ["Disable"]] + } + ] + }, + "genesect": { + "flags": {}, + "sets": [ + { + "species": "Genesect", + "item": "Choice Scarf", + "ability": "Download", + "evs": {"hp": 0, "atk": 248, "def": 0, "spa": 8, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["U-turn"], ["Iron Head"], ["Explosion"], ["Ice Beam"]] + } + ] + }, + "ferrothorn": { + "flags": {}, + "sets": [ + { + "species": "Ferrothorn", + "item": "Leftovers", + "ability": "Iron Barbs", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Leech Seed"], ["Spikes"], ["Power Whip", "Gyro Ball"], ["Protect"]] + }, + { + "species": "Ferrothorn", + "item": "Leftovers", + "ability": "Iron Barbs", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Leech Seed"], ["Spikes"], ["Power Whip"], ["Protect", "Gyro Ball"]] + } + ] + }, + "excadrill": { + "flags": {}, + "sets": [ + { + "species": "Excadrill", + "item": "Life Orb", + "ability": "Sand Rush", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Iron Head"], ["Earthquake"], ["Rock Slide"], ["Rapid Spin"]] + }, + { + "species": "Excadrill", + "item": "Air Balloon", + "ability": "Sand Rush", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Iron Head"], ["Earthquake"], ["Swords Dance"], ["Rapid Spin"]] + } + ] + }, + "dialga": { + "flags": {}, + "sets": [ + { + "species": "Dialga", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Stealth Rock"], ["Toxic"], ["Draco Meteor"], ["Fire Blast"]] + }, + { + "species": "Dialga", + "item": "Shuca Berry", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Flash Cannon"], ["Fire Blast"], ["Stealth Rock"]] + } + ] + }, + "deoxys": { + "flags": {}, + "sets": [ + { + "species": "Deoxys", + "item": "Focus Sash", + "ability": "Pressure", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Psycho Boost"], ["Stealth Rock"], ["Spikes"], ["Taunt"]] + } + ] + }, + "deoxysattack": { + "flags": {}, + "sets": [ + { + "species": "Deoxys-Attack", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Psycho Boost"], ["Low Kick"], ["Ice Beam"], ["Extreme Speed"]] + }, + { + "species": "Deoxys-Attack", + "item": "Focus Sash", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Spikes"], ["Psycho Boost"], ["Knock Off"], ["Extreme Speed"]] + } + ] + }, + "deoxysdefense": { + "flags": {}, + "sets": [ + { + "species": "Deoxys-Defense", + "item": "Mental Herb", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Recover"], ["Spikes"], ["Skill Swap"], ["Toxic"]] + } + ] + }, + "deoxysspeed": { + "flags": {}, + "sets": [ + { + "species": "Deoxys-Speed", + "item": "Focus Sash", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Taunt"], ["Spikes"], ["Knock Off"]] + }, + { + "species": "Deoxys-Speed", + "item": "Light Clay", + "ability": "Pressure", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Stealth Rock"], ["Taunt"], ["Reflect"], ["Light Screen"]] + } + ] + }, + "darkrai": { + "flags": {}, + "sets": [ + { + "species": "Darkrai", + "item": "Life Orb", + "ability": "Bad Dreams", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Dark Void"], ["Dark Pulse"], ["Nasty Plot", "Taunt"], ["Sludge Bomb", "Thunder", "Focus Blast"]] + } + ] + }, + "blissey": { + "flags": {}, + "sets": [ + { + "species": "Blissey", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 20, "atk": 0, "def": 236, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Ice Beam"], ["Toxic"], ["Soft-Boiled", "Wish"], ["Heal Bell", "Protect"]] + }, + { + "species": "Blissey", + "item": "Shed Shell", + "ability": "Natural Cure", + "evs": {"hp": 20, "atk": 0, "def": 236, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Toxic"], ["Seismic Toss", "Snatch"], ["Soft-Boiled", "Wish"], ["Heal Bell", "Protect"]] + } + ] + }, + "blaziken": { + "flags": {}, + "sets": [ + { + "species": "Blaziken", + "item": "Leftovers", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Baton Pass"], ["Protect"], ["Swords Dance"], ["Flare Blitz"]] + }, + { + "species": "Blaziken", + "item": "Blazikenite", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Stone Edge", "Knock Off"]] + }, + { + "species": "Blaziken", + "item": "Blazikenite", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Hidden Power Ice"]] + }, + { + "species": "Blaziken", + "item": "Life Orb", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Hidden Power Ice"]] + }, + { + "species": "Blaziken", + "item": "Life Orb", + "ability": "Speed Boost", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Stone Edge", "Knock Off"]] + } + ] + }, + "arceuswater": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Water", + "item": "Splash Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Bold", + "moves": [["Ice Beam", "Judgment"], ["Defog"], ["Recover"], ["Toxic"]] + } + ] + }, + "arceussteel": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Steel", + "item": "Iron Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 84, "spd": 0, "spe": 176}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Judgment"], ["Recover"], ["Earth Power", "Thunder"]] + }, + { + "species": "Arceus-Steel", + "item": "Iron Plate", + "ability": "Multitype", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Iron Head"], ["Earthquake"], ["Stone Edge", "Recover", "Extreme Speed"]] + } + ] + }, + "arceusfire": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Fire", + "item": "Flame Plate", + "ability": "Multitype", + "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 56}, + "nature": "Modest", + "moves": [["Overheat", "Fire Blast"], ["Calm Mind"], ["Thunder"], ["Earth Power"]] + } + ] + }, + "arceusflying": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Flying", + "item": "Sky Plate", + "ability": "Multitype", + "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 200, "spd": 0, "spe": 176}, + "nature": "Timid", + "moves": [["Judgment"], ["Calm Mind"], ["Recover"], ["Refresh", "Earth Power", "Substitute"]] + } + ] + }, + "arceuspsychic": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Psychic", + "item": "Mind Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Bold", + "moves": [["Fire Blast", "Payback"], ["Ice Beam"], ["Recover"], ["Toxic"]] + } + ] + }, + "arceuspoison": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Poison", + "item": "Toxic Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Impish", + "moves": [["Defog"], ["Poison Jab"], ["Thunder Wave"], ["Recover"]] + } + ] + }, + "arceusbug": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Bug", + "item": "Insect Plate", + "ability": "Multitype", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["X-Scissor"], ["Stone Edge"], ["Earthquake"]] + } + ] + }, + "arceusfighting": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Fighting", + "item": "Fist Plate", + "ability": "Multitype", + "evs": {"hp": 0, "atk": 0, "def": 40, "spa": 252, "spd": 0, "spe": 216}, + "nature": "Modest", + "moves": [["Judgment"], ["Thunder Wave"], ["Recover"], ["Ice Beam", "Stone Edge"]] + } + ] + }, + "arceusfairy": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Fairy", + "item": "Pixie Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Bold", + "moves": [["Judgment"], ["Recover"], ["Defog"], ["Toxic"]] + }, + { + "species": "Arceus-Fairy", + "item": "Pixie Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Judgment"], ["Calm Mind"], ["Recover"], ["Earth Power", "Thunder"]] + } + ] + }, + "arceusice": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Ice", + "item": "Icicle Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Judgment"], ["Recover"], ["Calm Mind"], ["Thunder", "Fire Blast"]] + } + ] + }, + "arceusrock": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Rock", + "item": "Stone Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Judgment"], ["Defog"], ["Recover"], ["Will-O-Wisp"]] + } + ] + }, + "arceusghost": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Ghost", + "item": "Spooky Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Judgment"], ["Recover"], ["Will-O-Wisp"]] + }, + { + "species": "Arceus-Ghost", + "item": "Spooky Plate", + "ability": "Multitype", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Shadow Force"], ["Shadow Claw", "Brick Break"], ["Extreme Speed"]] + }, + { + "species": "Arceus-Ghost", + "item": "Spooky Plate", + "ability": "Multitype", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Shadow Force"], ["Shadow Claw"], ["Brick Break"]] + } + ] + }, + "arceusdragon": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Dragon", + "item": "Draco Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Bold", + "moves": [["Judgment"], ["Defog"], ["Recover"], ["Toxic"]] + }, + { + "species": "Arceus-Dragon", + "item": "Draco Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 84, "spd": 0, "spe": 176}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Judgment"], ["Fire Blast"], ["Recover"]] + } + ] + }, + "arceus": { + "flags": {}, + "sets": [ + { + "species": "Arceus", + "item": "Life Orb", + "ability": "Multitype", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Extreme Speed"], ["Earthquake"], ["Stone Edge", "Shadow Claw"]] + }, + { + "species": "Arceus", + "item": "Silk Scarf", + "ability": "Multitype", + "evs": {"hp": 200, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 56}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Extreme Speed"], ["Earthquake", "Shadow Force"], ["Refresh"]] + } + ] + }, + "arceusdark": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Dark", + "item": "Dread Plate", + "ability": "Multitype", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 144, "spe": 112}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Judgment"], ["Recover"], ["Refresh"]] + } + ] + }, + "arceusgrass": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Grass", + "item": "Meadow Plate", + "ability": "Multitype", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 148, "spe": 112}, + "nature": "Timid", + "moves": [["Grass Knot"], ["Recover"], ["Ice Beam"], ["Defog"]] + } + ] + }, + "arceuselectric": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Electric", + "item": "Zap Plate", + "ability": "Multitype", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Judgment"], ["Ice Beam"], ["Recover"]] + } + ] + }, + "arceusground": { + "flags": {}, + "sets": [ + { + "species": "Arceus-Ground", + "item": "Earth Plate", + "ability": "Multitype", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Earthquake"], ["Stone Edge"], ["Recover", "Extreme Speed"]] + } + ] + }, + "aegislash": { + "flags": {}, + "sets": [ + { + "species": "Aegislash", + "item": "Leftovers", + "ability": "Stance Change", + "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Sassy", + "moves": [["King's Shield"], ["Toxic"], ["Gyro Ball"], ["Pursuit"]] + } + ] + }, + "scizor": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Scizor", + "item": "Scizorite", + "ability": "Technician", + "evs": {"hp": 212, "atk": 60, "def": 152, "spa": 0, "spd": 84, "spe": 0}, + "nature": "Impish", + "moves": [["Toxic"], ["Roost"], ["Defog"], ["Bullet Punch"]] + } + ] + }, + "diancie": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Diancie", + "item": "Diancite", + "ability": "Clear Body", + "evs": {"hp": 0, "atk": 68, "def": 0, "spa": 188, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Diamond Storm"], ["Moonblast"], ["Earth Power", "Protect"], ["Stealth Rock"]] + }, + { + "species": "Diancie", + "item": "Diancite", + "ability": "Clear Body", + "evs": {"hp": 0, "atk": 68, "def": 0, "spa": 188, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Diamond Storm"], ["Moonblast"], ["Earth Power"], ["Protect"]] + } + ] + }, + "landorus": { + "flags": {}, + "sets": [ + { + "species": "Landorus", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Knock Off"], ["Earth Power"], ["Rock Slide"], ["Sludge Wave"]] + }, + { + "species": "Landorus", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Knock Off"], ["Earth Power"], ["Rock Slide"], ["Hidden Power Ice"]] + } + ] + } + }, + "OU": { + "diancie": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Diancie", + "item": "Diancite", + "ability": "Clear Body", + "evs": {"hp": 44, "atk": 32, "def": 0, "spa": 252, "spd": 0, "spe": 180}, + "nature": "Rash", + "moves": [["Moonblast"], ["Diamond Storm"], ["Earth Power"], ["Rock Polish"]] + }, + { + "species": "Diancie", + "item": "Diancite", + "ability": "Clear Body", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Moonblast"], ["Earth Power"], ["Hidden Power Fire"]] + }, + { + "species": "Diancie", + "item": "Diancite", + "ability": "Clear Body", + "evs": {"hp": 0, "atk": 32, "def": 0, "spa": 224, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Diamond Storm"], ["Moonblast"], ["Earth Power"], ["Protect"]] + } + ] + }, + "hippowdon": { + "flags": {}, + "sets": [ + { + "species": "Hippowdon", + "gender": "M", + "item": "Leftovers", + "ability": "Sand Stream", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Impish", + "moves": [["Slack Off"], ["Stealth Rock"], ["Stone Edge"], ["Earthquake"]] + }, + { + "species": "Hippowdon", + "gender": "M", + "item": "Leftovers", + "ability": "Sand Stream", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Slack Off"], ["Stealth Rock"], ["Stone Edge"], ["Earthquake"]] + }, + { + "species": "Hippowdon", + "gender": "M", + "item": "Leftovers", + "ability": "Sand Stream", + "evs": {"hp": 252, "atk": 0, "def": 144, "spa": 0, "spd": 112, "spe": 0}, + "nature": "Careful", + "moves": [["Slack Off"], ["Stealth Rock"], ["Whirlwind"], ["Earthquake"]] + } + ] + }, + "jirachi": { + "flags": {}, + "sets": [ + { + "species": "Jirachi", + "item": "Leftovers", + "ability": "Serene Grace", + "evs": {"hp": 252, "atk": 160, "def": 0, "spa": 0, "spd": 0, "spe": 96}, + "nature": "Jolly", + "moves": [["Iron Head"], ["Fire Punch"], ["Substitute"], ["Toxic"]] + }, + { + "species": "Jirachi", + "item": "Leftovers", + "ability": "Serene Grace", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 224, "spe": 32}, + "nature": "Careful", + "moves": [["Wish"], ["Protect"], ["Iron Head"], ["Body Slam"]] + }, + { + "species": "Jirachi", + "item": "Choice Scarf", + "ability": "Serene Grace", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["U-turn"], ["Iron Head"], ["Ice Punch"], ["Fire Punch"]] + } + ] + }, + "celebi": { + "flags": {}, + "sets": [ + { + "species": "Celebi", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 0, "spd": 0, "spe": 108}, + "nature": "Bold", + "moves": [["Earth Power"], ["Nasty Plot"], ["Giga Drain"], ["Recover"]] + }, + { + "species": "Celebi", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 252, "atk": 0, "def": 156, "spa": 0, "spd": 84, "spe": 16}, + "nature": "Bold", + "moves": [["Thunder Wave"], ["Recover"], ["Giga Drain"], ["Stealth Rock"]] + } + ] + }, + "zygarde": { + "flags": {}, + "sets": [ + { + "species": "Zygarde", + "item": "Life Orb", + "ability": "Aura Break", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Dragon Dance"], ["Earthquake"], ["Outrage"], ["Extreme Speed"]] + }, + { + "species": "Zygarde", + "item": "Leftovers", + "ability": "Aura Break", + "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 0, "spd": 252, "spe": 56}, + "nature": "Careful", + "moves": [["Substitute"], ["Coil"], ["Earthquake"], ["Dragon Tail"]] + } + ] + }, + "weavile": { + "flags": {}, + "sets": [ + { + "species": "Weavile", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Ice Punch"], ["Knock Off"], ["Ice Shard"], ["Low Kick"]] + }, + { + "species": "Weavile", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Pursuit"], ["Knock Off"], ["Ice Shard"], ["Icicle Crash"]] + } + ] + }, + "volcarona": { + "flags": {}, + "sets": [ + { + "species": "Volcarona", + "item": "Leftovers", + "ability": "Flame Body", + "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 0, "spe": 124}, + "nature": "Bold", + "moves": [["Quiver Dance"], ["Fiery Dance"], ["Giga Drain"], ["Roost"]] + }, + { + "species": "Volcarona", + "item": "Lum Berry", + "ability": "Flame Body", + "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160}, + "nature": "Modest", + "moves": [["Quiver Dance"], ["Fire Blast"], ["Giga Drain"], ["Bug Buzz"]] + } + ] + }, + "victini": { + "flags": {}, + "sets": [ + { + "species": "Victini", + "item": "Choice Band", + "ability": "Victory Star", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["V-create"], ["Bolt Strike"], ["Brick Break"], ["U-turn"]] + }, + { + "species": "Victini", + "item": "Choice Scarf", + "ability": "Victory Star", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["V-create"], ["Bolt Strike"], ["U-turn"], ["Final Gambit"]] + }, + { + "species": "Victini", + "item": "Expert Belt", + "ability": "Victory Star", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Blue Flare"], ["Thunder"], ["Glaciate"], ["Focus Blast"]] + }, + { + "species": "Victini", + "item": "Leftovers", + "ability": "Victory Star", + "evs": {"hp": 248, "atk": 32, "def": 68, "spa": 0, "spd": 0, "spe": 160}, + "nature": "Adamant", + "moves": [["Taunt"], ["V-create"], ["Will-O-Wisp"], ["Bolt Strike"]] + }, + { + "species": "Victini", + "item": "Leftovers", + "ability": "Victory Star", + "evs": {"hp": 96, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 160}, + "nature": "Adamant", + "moves": [["Substitute"], ["V-create"], ["Bolt Strike"], ["Power-Up Punch"]] + } + ] + }, + "tornadustherian": { + "flags": {}, + "sets": [ + { + "species": "Tornadus-Therian", + "item": "Assault Vest", + "ability": "Regenerator", + "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 160, "spd": 0, "spe": 216}, + "nature": "Timid", + "moves": [["Hurricane"], ["Focus Blast"], ["Knock Off"], ["U-turn"]] + }, + { + "species": "Tornadus-Therian", + "item": "Life Orb", + "ability": "Regenerator", + "evs": {"hp": 0, "atk": 76, "def": 0, "spa": 216, "spd": 0, "spe": 216}, + "nature": "Naive", + "moves": [["Hurricane"], ["Superpower"], ["U-turn"], ["Taunt"]] + } + ] + }, + "togekiss": { + "flags": {}, + "sets": [ + { + "species": "Togekiss", + "item": "Lum Berry", + "ability": "Serene Grace", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Nasty Plot"], ["Air Slash"], ["Aura Sphere"], ["Roost"]] + }, + { + "species": "Togekiss", + "item": "Leftovers", + "ability": "Serene Grace", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Thunder Wave"], ["Air Slash"], ["Defog"], ["Roost"]] + } + ] + }, + "staraptor": { + "flags": {}, + "sets": [ + { + "species": "Staraptor", + "item": "Choice Band", + "ability": "Reckless", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Close Combat"], ["U-turn"], ["Double-Edge"]] + }, + { + "species": "Staraptor", + "item": "Choice Scarf", + "ability": "Reckless", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Double-Edge"], ["Close Combat"], ["U-turn"]] + } + ] + }, + "thundurustherian": { + "flags": {}, + "sets": [ + { + "species": "Thundurus-Therian", + "item": "Leftovers", + "ability": "Volt Absorb", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]] + }, + { + "species": "Thundurus-Therian", + "item": "Choice Scarf", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"], ["U-turn"]] + }, + { + "species": "Thundurus-Therian", + "item": "Leftovers", + "ability": "Volt Absorb", + "evs": {"hp": 128, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 128}, + "nature": "Modest", + "moves": [["Agility"], ["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"]] + } + ] + }, + "scolipede": { + "flags": {}, + "sets": [ + { + "species": "Scolipede", + "item": "Life Orb", + "ability": "Speed Boost", + "evs": {"hp": 16, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 236}, + "nature": "Adamant", + "moves": [["Megahorn"], ["Earthquake"], ["Poison Jab"], ["Protect"]] + } + ] + }, + "medicham": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Medicham", + "item": "Medichamite", + "ability": "Pure Power", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["High Jump Kick"], ["Zen Headbutt"], ["Fake Out"], ["Ice Punch"]] + } + ] + }, + "manaphy": { + "flags": {}, + "sets": [ + { + "species": "Manaphy", + "item": "Leftovers", + "ability": "Hydration", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Rest"], ["Rain Dance"], ["Scald"]] + }, + { + "species": "Manaphy", + "item": "Leftovers", + "ability": "Hydration", + "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160}, + "nature": "Timid", + "moves": [["Tail Glow"], ["Surf"], ["Ice Beam"], ["Energy Ball"]] + }, + { + "species": "Manaphy", + "item": "Leftovers", + "ability": "Hydration", + "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160}, + "nature": "Timid", + "moves": [["Tail Glow"], ["Rain Dance"], ["Scald"], ["Psychic"]] + } + ] + }, + "klefki": { + "flags": {}, + "sets": [ + { + "species": "Klefki", + "item": "Light Clay", + "ability": "Prankster", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Bold", + "moves": [["Reflect"], ["Light Screen"], ["Spikes"], ["Foul Play"]] + }, + { + "species": "Klefki", + "item": "Leftovers", + "ability": "Prankster", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Thunder Wave"], ["Magnet Rise"], ["Spikes"], ["Play Rough"]] + } + ] + }, + "hawlucha": { + "flags": {}, + "sets": [ + { + "species": "Hawlucha", + "item": "Sitrus Berry", + "ability": "Unburden", + "evs": {"hp": 12, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 244}, + "nature": "Jolly", + "moves": [["Substitute"], ["Swords Dance"], ["High Jump Kick"], ["Acrobatics"]] + }, + { + "species": "Hawlucha", + "item": "Power Herb", + "ability": "Unburden", + "evs": {"hp": 12, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 244}, + "nature": "Jolly", + "moves": [["Sky Attack"], ["Swords Dance"], ["High Jump Kick"], ["Acrobatics"]] + } + ] + }, + "diggersby": { + "flags": {}, + "sets": [ + { + "species": "Diggersby", + "item": "Choice Scarf", + "ability": "Huge Power", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Return"], ["Earthquake"], ["Fire Punch"], ["U-turn"]], + "happiness": 255 + }, + { + "species": "Diggersby", + "item": "Focus Sash", + "ability": "Huge Power", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Earthquake"], ["Return"], ["Quick Attack"]], + "happiness": 255 + }, + { + "species": "Diggersby", + "item": "Life Orb", + "ability": "Huge Power", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Earthquake"], ["Return"], ["Quick Attack"]], + "happiness": 255 + }, + { + "species": "Diggersby", + "item": "Focus Sash", + "ability": "Huge Power", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Earthquake"], ["Return"], ["Fire Punch"]], + "happiness": 255 + } + ] + }, + "crawdaunt": { + "flags": {}, + "sets": [ + { + "species": "Crawdaunt", + "item": "Life Orb", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Crabhammer"], ["Knock Off"], ["Aqua Jet"], ["Swords Dance"]] + }, + { + "species": "Crawdaunt", + "item": "Choice Band", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Crabhammer"], ["Knock Off"], ["Aqua Jet"], ["Crunch"]] + } + ] + }, + "alakazam": { + "flags": {}, + "sets": [ + { + "species": "Alakazam", + "item": "Focus Sash", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Shadow Ball"], ["Hidden Power Ice"], ["Thunder Wave"]] + }, + { + "species": "Alakazam", + "item": "Life Orb", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Shadow Ball"], ["Focus Blast"], ["Encore"]] + }, + { + "species": "Alakazam", + "item": "Life Orb", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Shadow Ball"], ["Focus Blast"], ["Hidden Power Ice"]] + }, + { + "species": "Alakazam", + "item": "Alakazite", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Shadow Ball"], ["Focus Blast"], ["Encore"]] + } + ] + }, + "zapdos": { + "flags": {}, + "sets": [ + { + "species": "Zapdos", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 252, "atk": 0, "def": 168, "spa": 68, "spd": 0, "spe": 20}, + "nature": "Bold", + "moves": [["Thunderbolt"], ["Roost"], ["Defog"], ["Heat Wave"]] + } + ] + }, + "venusaur": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Venusaur", + "item": "Venusaurite", + "ability": "Chlorophyll", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Bold", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Leech Seed"]] + }, + { + "species": "Venusaur", + "item": "Venusaurite", + "ability": "Chlorophyll", + "evs": {"hp": 232, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 20}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fire"], ["Synthesis"]] + } + ] + }, + "tyranitar": { + "flags": {}, + "sets": [ + { + "species": "Tyranitar", + "item": "Choice Scarf", + "ability": "Sand Stream", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Pursuit"], ["Crunch"], ["Stone Edge"], ["Superpower"]] + }, + { + "species": "Tyranitar", + "item": "Tyranitarite", + "ability": "Sand Stream", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Stone Edge"], ["Superpower"], ["Ice Punch"]] + }, + { + "species": "Tyranitar", + "item": "Leftovers", + "ability": "Sand Stream", + "evs": {"hp": 248, "atk": 0, "def": 80, "spa": 0, "spd": 180, "spe": 0}, + "nature": "Relaxed", + "moves": [["Stealth Rock"], ["Stone Edge"], ["Ice Beam"], ["Pursuit"]] + }, + { + "species": "Tyranitar", + "item": "Choice Band", + "ability": "Sand Stream", + "evs": {"hp": 100, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 156}, + "nature": "Adamant", + "moves": [["Pursuit"], ["Crunch"], ["Stone Edge"], ["Superpower"]] + } + ] + }, + "thundurus": { + "flags": {}, + "sets": [ + { + "species": "Thundurus", + "item": "Life Orb", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 76, "def": 0, "spa": 180, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Thunderbolt"], ["Knock Off"], ["Superpower"], ["Hidden Power Ice"]] + }, + { + "species": "Thundurus", + "item": "Leftovers", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]] + }, + { + "species": "Thundurus", + "item": "Life Orb", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunder Wave"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]] + } + ] + }, + "terrakion": { + "flags": {}, + "sets": [ + { + "species": "Terrakion", + "item": "Choice Scarf", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Close Combat"], ["Stone Edge"], ["X-Scissor"], ["Rock Slide"]] + }, + { + "species": "Terrakion", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Close Combat"], ["Stone Edge"], ["Swords Dance"], ["Hidden Power Ice"]] + }, + { + "species": "Terrakion", + "item": "Focus Sash", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Close Combat"], ["Stone Edge"], ["Taunt"]] + }, + { + "species": "Terrakion", + "item": "Lum Berry", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Rock Polish"], ["Stone Edge"], ["Close Combat"]] + } + ] + }, + "talonflame": { + "flags": {}, + "sets": [ + { + "species": "Talonflame", + "ability": "Gale Wings", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Bulk Up"], ["Acrobatics"], ["Roost"], ["Taunt"]] + }, + { + "species": "Talonflame", + "item": "Choice Band", + "ability": "Gale Wings", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Brave Bird"], ["Flare Blitz"], ["U-turn"], ["Steel Wing"]] + }, + { + "species": "Talonflame", + "ability": "Gale Wings", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Acrobatics"], ["Taunt"], ["Roost"], ["Will-O-Wisp"]] + }, + { + "species": "Talonflame", + "item": "Sharp Beak", + "ability": "Gale Wings", + "evs": {"hp": 88, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 168}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Brave Bird"], ["Flare Blitz"], ["Roost"]] + }, + { + "species": "Talonflame", + "item": "Liechi Berry", + "ability": "Gale Wings", + "evs": {"hp": 88, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 168}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Natural Gift"], ["Brave Bird"], ["Flare Blitz"]] + }, + { + "species": "Talonflame", + "ability": "Gale Wings", + "evs": {"hp": 248, "atk": 252, "def": 8, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Acrobatics"], ["Will-O-Wisp"], ["Roost"]] + } + ] + }, + "sylveon": { + "flags": {}, + "sets": [ + { + "species": "Sylveon", + "item": "Choice Specs", + "ability": "Pixilate", + "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 12}, + "nature": "Modest", + "moves": [["Hyper Voice"], ["Psyshock"], ["Shadow Ball"], ["Hidden Power Ground"]] + } + ] + }, + "slowbro": { + "flags": {}, + "sets": [ + { + "species": "Slowbro", + "item": "Slowbronite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 80, "spa": 0, "spd": 176, "spe": 0}, + "nature": "Bold", + "moves": [["Scald"], ["Calm Mind"], ["Slack Off"], ["Psyshock"]] + }, + { + "species": "Slowbro", + "item": "Slowbronite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0}, + "nature": "Modest", + "moves": [["Fire Blast"], ["Scald"], ["Psyshock"], ["Slack Off"]] + }, + { + "species": "Slowbro", + "item": "Leftovers", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 232, "spa": 0, "spd": 24, "spe": 0}, + "nature": "Bold", + "moves": [["Scald"], ["Psyshock"], ["Thunder Wave"], ["Slack Off"]] + } + ] + }, + "skarmory": { + "flags": {}, + "sets": [ + { + "species": "Skarmory", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Iron Head"], ["Spikes"], ["Roost"], ["Whirlwind"]] + }, + { + "species": "Skarmory", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Roost"], ["Defog"], ["Brave Bird"], ["Whirlwind"]] + }, + { + "species": "Skarmory", + "gender": "F", + "item": "Custap Berry", + "ability": "Sturdy", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Spikes"], ["Taunt"], ["Stealth Rock"]] + } + ] + }, + "scizor": { + "flags": {}, + "sets": [ + { + "species": "Scizor", + "item": "Scizorite", + "ability": "Light Metal", + "evs": {"hp": 248, "atk": 84, "def": 0, "spa": 0, "spd": 176, "spe": 0}, + "nature": "Impish", + "moves": [["Swords Dance"], ["Roost"], ["Bullet Punch"], ["Knock Off"]] + }, + { + "species": "Scizor", + "item": "Choice Band", + "ability": "Technician", + "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Adamant", + "moves": [["U-turn"], ["Bullet Punch"], ["Knock Off"], ["Superpower"]] + }, + { + "species": "Scizor", + "item": "Scizorite", + "ability": "Light Metal", + "evs": {"hp": 252, "atk": 4, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Defog"], ["Roost"], ["Bullet Punch"], ["Knock Off"]] + }, + { + "species": "Scizor", + "item": "Scizorite", + "ability": "Light Metal", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Bullet Punch"], ["Bug Bite"], ["Superpower"]] + } + ] + }, + "rotomwash": { + "flags": {}, + "sets": [ + { + "species": "Rotom-Wash", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 216, "spa": 0, "spd": 0, "spe": 44}, + "nature": "Bold", + "moves": [["Volt Switch"], ["Hydro Pump"], ["Will-O-Wisp"], ["Pain Split"]] + } + ] + }, + "pinsir": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Pinsir", + "item": "Pinsirite", + "ability": "Hyper Cutter", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Return"], ["Close Combat"], ["Quick Attack"]], + "happiness": 255 + }, + { + "species": "Pinsir", + "item": "Pinsirite", + "ability": "Hyper Cutter", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Return"], ["Earthquake"], ["Quick Attack"]], + "happiness": 255 + } + ] + }, + "mew": { + "flags": {}, + "sets": [ + { + "species": "Mew", + "item": "Leftovers", + "ability": "Synchronize", + "evs": {"hp": 252, "atk": 0, "def": 104, "spa": 0, "spd": 0, "spe": 152}, + "nature": "Impish", + "moves": [["Defog"], ["Soft-Boiled"], ["Will-O-Wisp"], ["Knock Off"]] + }, + { + "species": "Mew", + "item": "Leftovers", + "ability": "Synchronize", + "evs": {"hp": 252, "atk": 0, "def": 104, "spa": 0, "spd": 0, "spe": 152}, + "nature": "Impish", + "moves": [["Taunt"], ["Soft-Boiled"], ["Will-O-Wisp"], ["Knock Off"]] + } + ] + }, + "metagross": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Metagross", + "item": "Metagrossite", + "ability": "Clear Body", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Meteor Mash"], ["Zen Headbutt"], ["Hammer Arm"], ["Grass Knot"]] + }, + { + "species": "Metagross", + "item": "Metagrossite", + "ability": "Clear Body", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Meteor Mash"], ["Zen Headbutt"], ["Hammer Arm"], ["Pursuit"]] + }, + { + "species": "Metagross", + "item": "Metagrossite", + "ability": "Clear Body", + "evs": {"hp": 80, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 176}, + "nature": "Adamant", + "moves": [["Meteor Mash"], ["Zen Headbutt"], ["Earthquake"], ["Agility"]] + } + ] + }, + "manectric": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Manectric", + "item": "Manectite", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Overheat"], ["Hidden Power Ice"]] + }, + { + "species": "Manectric", + "item": "Manectite", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Flamethrower"], ["Hidden Power Ice"]] + } + ] + }, + "mandibuzz": { + "flags": {}, + "sets": [ + { + "species": "Mandibuzz", + "item": "Leftovers", + "ability": "Overcoat", + "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 108, "spe": 16}, + "nature": "Bold", + "moves": [["Foul Play"], ["Roost"], ["Taunt"], ["Defog"]] + } + ] + }, + "mamoswine": { + "flags": {}, + "sets": [ + { + "species": "Mamoswine", + "item": "Focus Sash", + "ability": "Thick Fat", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Endeavor"], ["Ice Shard"], ["Earthquake"]] + }, + { + "species": "Mamoswine", + "item": "Life Orb", + "ability": "Thick Fat", + "evs": {"hp": 0, "atk": 240, "def": 0, "spa": 16, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Earthquake"], ["Ice Shard"], ["Icicle Crash"], ["Freeze-Dry"]] + } + ] + }, + "magnezone": { + "flags": {}, + "sets": [ + { + "species": "Magnezone", + "item": "Choice Scarf", + "ability": "Magnet Pull", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Hidden Power Fire"], ["Flash Cannon"], ["Thunderbolt"]] + }, + { + "species": "Magnezone", + "item": "Choice Specs", + "ability": "Magnet Pull", + "evs": {"hp": 172, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 84}, + "nature": "Modest", + "moves": [["Volt Switch"], ["Hidden Power Fire"], ["Flash Cannon"], ["Thunderbolt"]] + } + ] + }, + "lopunny": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Lopunny", + "item": "Lopunnite", + "ability": "Limber", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["High Jump Kick"], ["Return"], ["Fake Out"], ["Ice Punch"]], + "happiness": 255 + }, + { + "species": "Lopunny", + "item": "Lopunnite", + "ability": "Limber", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["High Jump Kick"], ["Return"], ["Fake Out"], ["Power-Up Punch"]], + "happiness": 255 + }, + { + "species": "Lopunny", + "item": "Lopunnite", + "ability": "Limber", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["High Jump Kick"], ["Return"], ["Substitute"], ["Encore"]], + "happiness": 255 + } + ] + }, + "latios": { + "flags": {}, + "sets": [ + { + "species": "Latios", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Defog"], ["Trick"]] + }, + { + "species": "Latios", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Earthquake"], ["Defog"]] + }, + { + "species": "Latios", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Roost"], ["Defog"]] + }, + { + "species": "Latios", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Hidden Power Fire"], ["Defog"]] + }, + { + "species": "Latios", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Psyshock"], ["Calm Mind"], ["Roost"]] + }, + { + "species": "Latios", + "gender": "M", + "item": "Latiosite", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Psyshock"], ["Draco Meteor"], ["Earthquake"], ["Hidden Power Fire"]] + } + ] + }, + "latias": { + "flags": {}, + "sets": [ + { + "species": "Latias", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Defog"], ["Draco Meteor"], ["Psyshock"], ["Healing Wish"]] + }, + { + "species": "Latias", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 72, "atk": 0, "def": 0, "spa": 184, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Defog"], ["Draco Meteor"], ["Psyshock"], ["Roost"]] + }, + { + "species": "Latias", + "gender": "F", + "item": "Latiasite", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 100, "spa": 0, "spd": 0, "spe": 160}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Roost"], ["Substitute"], ["Calm Mind"], ["Stored Power"]] + }, + { + "species": "Latias", + "gender": "F", + "item": "Latiasite", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 68, "spa": 0, "spd": 0, "spe": 192}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Thunder Wave"], ["Roar"], ["Recover"], ["Dragon Pulse"]] + } + ] + }, + "landorustherian": { + "flags": {}, + "sets": [ + { + "species": "Landorus-Therian", + "item": "Choice Scarf", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 24, "spa": 0, "spd": 0, "spe": 232}, + "nature": "Jolly", + "moves": [["Earthquake"], ["U-turn"], ["Explosion"], ["Stone Edge"]] + }, + { + "species": "Landorus-Therian", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 8, "spe": 8}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Earthquake"], ["U-turn"], ["Stone Edge"]] + }, + { + "species": "Landorus-Therian", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 56, "atk": 220, "def": 0, "spa": 0, "spd": 0, "spe": 232}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Rock Polish"], ["Earthquake"], ["Stone Edge"]] + }, + { + "species": "Landorus-Therian", + "item": "Earth Plate", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Earthquake"], ["Stone Edge"], ["U-turn"]] + } + ] + }, + "kyuremblack": { + "flags": {}, + "sets": [ + { + "species": "Kyurem-Black", + "item": "Choice Scarf", + "ability": "Teravolt", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 32, "spd": 0, "spe": 224}, + "nature": "Naive", + "moves": [["Outrage"], ["Dragon Claw"], ["Fusion Bolt"], ["Ice Beam"]] + }, + { + "species": "Kyurem-Black", + "item": "Life Orb", + "ability": "Teravolt", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 56, "spd": 0, "spe": 200}, + "nature": "Lonely", + "moves": [["Dragon Claw"], ["Fusion Bolt"], ["Ice Beam"], ["Iron Head"]] + }, + { + "species": "Kyurem-Black", + "item": "Life Orb", + "ability": "Teravolt", + "evs": {"hp": 0, "atk": 56, "def": 0, "spa": 252, "spd": 0, "spe": 200}, + "nature": "Mild", + "moves": [["Ice Beam"], ["Fusion Bolt"], ["Earth Power"], ["Outrage"]] + }, + { + "species": "Kyurem-Black", + "item": "Leftovers", + "ability": "Teravolt", + "evs": {"hp": 56, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 200}, + "nature": "Mild", + "moves": [["Substitute"], ["Ice Beam"], ["Fusion Bolt"], ["Earth Power"]] + } + ] + }, + "keldeo": { + "flags": {}, + "sets": [ + { + "species": "Keldeo", + "item": "Choice Specs", + "ability": "Justified", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Hydro Pump"], ["Secret Sword"], ["Scald"], ["Icy Wind"]] + }, + { + "species": "Keldeo", + "item": "Choice Scarf", + "ability": "Justified", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Hydro Pump"], ["Secret Sword"], ["Scald"], ["Hidden Power Electric"]] + }, + { + "species": "Keldeo", + "item": "Leftovers", + "ability": "Justified", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Scald"], ["Secret Sword"], ["Substitute"], ["Calm Mind"]] + }, + { + "species": "Keldeo", + "item": "Salac Berry", + "ability": "Justified", + "evs": {"hp": 8, "atk": 0, "def": 0, "spa": 248, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Endeavor"], ["Substitute"], ["Hydro Pump"], ["Secret Sword"]] + } + ] + }, + "heracross": { + "flags": {}, + "sets": [ + { + "species": "Heracross", + "item": "Heracronite", + "ability": "Guts", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Close Combat"], ["Pin Missile"], ["Rock Blast"], ["Swords Dance"]] + }, + { + "species": "Heracross", + "item": "Toxic Orb", + "ability": "Guts", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Close Combat"], ["Megahorn"], ["Facade"], ["Swords Dance"]] + } + ] + }, + "heatran": { + "flags": {}, + "sets": [ + { + "species": "Heatran", + "item": "Choice Scarf", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Overheat"], ["Flash Cannon"], ["Earth Power"], ["Stone Edge"]] + }, + { + "species": "Heatran", + "item": "Air Balloon", + "ability": "Flash Fire", + "evs": {"hp": 12, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 244}, + "nature": "Timid", + "moves": [["Stealth Rock"], ["Fire Blast"], ["Taunt"], ["Earth Power"]] + }, + { + "species": "Heatran", + "item": "Leftovers", + "ability": "Flash Fire", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 68}, + "nature": "Calm", + "moves": [["Lava Plume"], ["Toxic"], ["Taunt"], ["Stealth Rock"]] + } + ] + }, + "gyarados": { + "flags": {}, + "sets": [ + { + "species": "Gyarados", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 88, "atk": 192, "def": 4, "spa": 0, "spd": 0, "spe": 224}, + "nature": "Adamant", + "moves": [["Substitute"], ["Dragon Dance"], ["Waterfall"], ["Bounce"]] + }, + { + "species": "Gyarados", + "item": "Gyaradosite", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Dragon Dance"], ["Waterfall"], ["Crunch"], ["Earthquake"]] + } + ] + }, + "gallade": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Gallade", + "item": "Galladite", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Close Combat"], ["Knock Off"], ["Zen Headbutt"]] + }, + { + "species": "Gallade", + "item": "Galladite", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Close Combat"], ["Ice Punch"], ["Zen Headbutt"]] + } + ] + }, + "gliscor": { + "flags": {}, + "sets": [ + { + "species": "Gliscor", + "item": "Toxic Orb", + "ability": "Poison Heal", + "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 72}, + "nature": "Careful", + "moves": [["Swords Dance"], ["Roost"], ["Knock Off"], ["Earthquake"]] + }, + { + "species": "Gliscor", + "item": "Toxic Orb", + "ability": "Poison Heal", + "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 72}, + "nature": "Careful", + "moves": [["Taunt"], ["Roost"], ["Knock Off"], ["Earthquake"]] + }, + { + "species": "Gliscor", + "item": "Toxic Orb", + "ability": "Poison Heal", + "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 72}, + "nature": "Careful", + "moves": [["Taunt"], ["Roost"], ["Toxic"], ["Earthquake"]] + }, + { + "species": "Gliscor", + "item": "Toxic Orb", + "ability": "Poison Heal", + "evs": {"hp": 244, "atk": 0, "def": 28, "spa": 0, "spd": 0, "spe": 236}, + "nature": "Impish", + "moves": [["Substitute"], ["Toxic"], ["Protect"], ["Earthquake"]] + } + ] + }, + "gengar": { + "flags": {}, + "sets": [ + { + "species": "Gengar", + "item": "Black Sludge", + "ability": "Levitate", + "evs": {"hp": 8, "atk": 0, "def": 0, "spa": 248, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Hex"], ["Taunt"], ["Will-O-Wisp"], ["Sludge Wave"]] + }, + { + "species": "Gengar", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Shadow Ball"], ["Sludge Wave"], ["Focus Blast"], ["Taunt"]] + }, + { + "species": "Gengar", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Pain Split"], ["Shadow Ball"], ["Focus Blast"]] + } + ] + }, + "gardevoir": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Gardevoir", + "item": "Gardevoirite", + "ability": "Trace", + "evs": {"hp": 0, "atk": 0, "def": 24, "spa": 232, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Calm Mind"], ["Hyper Voice"], ["Psyshock"], ["Focus Blast"]] + }, + { + "species": "Gardevoir", + "item": "Gardevoirite", + "ability": "Trace", + "evs": {"hp": 0, "atk": 0, "def": 24, "spa": 232, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Hyper Voice"], ["Psyshock"], ["Focus Blast"], ["Taunt"]] + }, + { + "species": "Gardevoir", + "item": "Gardevoirite", + "ability": "Trace", + "evs": {"hp": 0, "atk": 0, "def": 24, "spa": 232, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Hyper Voice"], ["Psyshock"], ["Focus Blast"], ["Will-O-Wisp"]] + } + ] + }, + "garchomp": { + "flags": {}, + "sets": [ + { + "species": "Garchomp", + "item": "Rocky Helmet", + "ability": "Rough Skin", + "evs": {"hp": 252, "atk": 0, "def": 164, "spa": 0, "spd": 76, "spe": 16}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Earthquake"], ["Dragon Tail"], ["Fire Blast"]] + }, + { + "species": "Garchomp", + "item": "Focus Sash", + "ability": "Rough Skin", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Stealth Rock"], ["Earthquake"], ["Dragon Claw"], ["Fire Blast"]] + }, + { + "species": "Garchomp", + "item": "Lum Berry", + "ability": "Rough Skin", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Earthquake"], ["Outrage"], ["Swords Dance"]] + }, + { + "species": "Garchomp", + "item": "Garchompite", + "ability": "Rough Skin", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Draco Meteor"], ["Earthquake"], ["Fire Blast"], ["Stone Edge"]] + }, + { + "species": "Garchomp", + "item": "Choice Scarf", + "ability": "Rough Skin", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Earthquake"], ["Outrage"], ["Stone Edge"], ["Dragon Claw"]] + } + ] + }, + "ferrothorn": { + "flags": {}, + "sets": [ + { + "species": "Ferrothorn", + "item": "Leftovers", + "ability": "Iron Barbs", + "evs": {"hp": 252, "atk": 0, "def": 88, "spa": 0, "spd": 168, "spe": 0}, + "nature": "Relaxed", + "moves": [["Spikes"], ["Leech Seed"], ["Gyro Ball"], ["Power Whip"]] + }, + { + "species": "Ferrothorn", + "item": "Shed Shell", + "ability": "Iron Barbs", + "evs": {"hp": 252, "atk": 0, "def": 88, "spa": 0, "spd": 168, "spe": 0}, + "nature": "Relaxed", + "moves": [["Spikes"], ["Leech Seed"], ["Gyro Ball"], ["Protect"]] + }, + { + "species": "Ferrothorn", + "item": "Leftovers", + "ability": "Iron Barbs", + "evs": {"hp": 252, "atk": 0, "def": 88, "spa": 0, "spd": 168, "spe": 0}, + "nature": "Relaxed", + "moves": [["Protect"], ["Leech Seed"], ["Gyro Ball"], ["Stealth Rock"]] + } + ] + }, + "excadrill": { + "flags": {}, + "sets": [ + { + "species": "Excadrill", + "item": "Choice Scarf", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Earthquake"], ["Iron Head"], ["Rock Slide"], ["Rapid Spin"]] + }, + { + "species": "Excadrill", + "item": "Air Balloon", + "ability": "Sand Rush", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Earthquake"], ["Iron Head"], ["Rock Slide"], ["Swords Dance"]] + }, + { + "species": "Excadrill", + "item": "Life Orb", + "ability": "Sand Rush", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Earthquake"], ["Iron Head"], ["Rock Slide"], ["Rapid Spin"]] + }, + { + "species": "Excadrill", + "item": "Leftovers", + "ability": "Mold Breaker", + "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Earthquake"], ["Iron Head"], ["Rapid Spin"], ["Toxic"]] + } + ] + }, + "dragonite": { + "flags": {}, + "sets": [ + { + "species": "Dragonite", + "item": "Choice Band", + "ability": "Multiscale", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Outrage"], ["Extreme Speed"], ["Thunder Punch"], ["Superpower"]] + }, + { + "species": "Dragonite", + "item": "Lum Berry", + "ability": "Multiscale", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Dragon Dance"], ["Outrage"], ["Extreme Speed"], ["Earthquake"]] + }, + { + "species": "Dragonite", + "item": "Lum Berry", + "ability": "Multiscale", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Dragon Dance"], ["Outrage"], ["Extreme Speed"], ["Fire Punch"]] + } + ] + }, + "conkeldurr": { + "flags": {}, + "sets": [ + { + "species": "Conkeldurr", + "item": "Assault Vest", + "ability": "Guts", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 236, "spe": 20}, + "nature": "Adamant", + "moves": [["Drain Punch"], ["Mach Punch"], ["Ice Punch"], ["Poison Jab"]] + }, + { + "species": "Conkeldurr", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 48, "atk": 252, "def": 0, "spa": 0, "spd": 208, "spe": 0}, + "nature": "Adamant", + "moves": [["Drain Punch"], ["Mach Punch"], ["Ice Punch"], ["Thunder Punch"]] + } + ] + }, + "clefable": { + "flags": {}, + "sets": [ + { + "species": "Clefable", + "item": "Leftovers", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 172, "spa": 0, "spd": 84, "spe": 0}, + "nature": "Calm", + "moves": [["Calm Mind"], ["Moonblast"], ["Soft-Boiled"], ["Flamethrower"]] + }, + { + "species": "Clefable", + "item": "Leftovers", + "ability": "Unaware", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Moonblast"], ["Wish"], ["Protect"], ["Heal Bell"]] + }, + { + "species": "Clefable", + "item": "Leftovers", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 172, "spa": 0, "spd": 84, "spe": 0}, + "nature": "Calm", + "moves": [["Stealth Rock"], ["Moonblast"], ["Thunder Wave"], ["Soft-Boiled"]] + } + ] + }, + "charizard": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Charizard", + "item": "Charizardite X", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Dragon Claw"], ["Flare Blitz"], ["Roost"]] + }, + { + "species": "Charizard", + "item": "Charizardite X", + "ability": "Blaze", + "evs": {"hp": 248, "atk": 24, "def": 0, "spa": 0, "spd": 180, "spe": 56}, + "nature": "Adamant", + "moves": [["Earthquake"], ["Dragon Claw"], ["Will-O-Wisp"], ["Roost"]] + }, + { + "species": "Charizard", + "item": "Charizardite X", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Dragon Claw"], ["Flare Blitz"], ["Earthquake"]] + }, + { + "species": "Charizard", + "item": "Charizardite X", + "ability": "Blaze", + "evs": {"hp": 144, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 112}, + "nature": "Adamant", + "moves": [["Tailwind"], ["Outrage"], ["Flare Blitz"], ["Swords Dance"]] + }, + { + "species": "Charizard", + "item": "Charizardite Y", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Solar Beam"], ["Focus Blast"], ["Roost"]] + } + ] + }, + "chansey": { + "flags": {}, + "sets": [ + { + "species": "Chansey", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 4, "atk": 0, "def": 252, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Bold", + "moves": [["Soft-Boiled"], ["Heal Bell"], ["Stealth Rock"], ["Seismic Toss"]] + }, + { + "species": "Chansey", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 4, "atk": 0, "def": 252, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Bold", + "moves": [["Wish"], ["Soft-Boiled"], ["Seismic Toss"], ["Toxic"]] + } + ] + }, + "breloom": { + "flags": {}, + "sets": [ + { + "species": "Breloom", + "item": "Toxic Orb", + "ability": "Poison Heal", + "evs": {"hp": 12, "atk": 244, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Superpower"], ["Seed Bomb"], ["Facade"]] + }, + { + "species": "Breloom", + "item": "Focus Sash", + "ability": "Technician", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Spore"], ["Bullet Seed"], ["Mach Punch"], ["Rock Tomb"]] + }, + { + "species": "Breloom", + "item": "Life Orb", + "ability": "Technician", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Spore"], ["Bullet Seed"], ["Mach Punch"], ["Swords Dance"]] + } + ] + }, + "bisharp": { + "flags": {}, + "sets": [ + { + "species": "Bisharp", + "item": "Black Glasses", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 52, "spe": 204}, + "nature": "Adamant", + "moves": [["Knock Off"], ["Iron Head"], ["Sucker Punch"], ["Pursuit"]] + }, + { + "species": "Bisharp", + "item": "Life Orb", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Knock Off"], ["Swords Dance"], ["Iron Head"], ["Sucker Punch"]] + }, + { + "species": "Bisharp", + "item": "Life Orb", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Knock Off"], ["Low Kick"], ["Iron Head"], ["Sucker Punch"]] + }, + { + "species": "Bisharp", + "item": "Black Glasses", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Knock Off"], ["Low Kick"], ["Iron Head"], ["Sucker Punch"]] + } + ] + }, + "azumarill": { + "flags": {}, + "sets": [ + { + "species": "Azumarill", + "item": "Assault Vest", + "ability": "Huge Power", + "evs": {"hp": 240, "atk": 252, "def": 0, "spa": 0, "spd": 16, "spe": 0}, + "nature": "Adamant", + "moves": [["Play Rough"], ["Waterfall"], ["Aqua Jet"], ["Knock Off"]] + }, + { + "species": "Azumarill", + "item": "Sitrus Berry", + "ability": "Huge Power", + "evs": {"hp": 92, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 164}, + "nature": "Adamant", + "moves": [["Belly Drum"], ["Aqua Jet"], ["Play Rough"], ["Knock Off"]] + }, + { + "species": "Azumarill", + "item": "Choice Band", + "ability": "Huge Power", + "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84}, + "nature": "Adamant", + "moves": [["Play Rough"], ["Waterfall"], ["Aqua Jet"], ["Superpower"]] + } + ] + }, + "altaria": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Altaria", + "item": "Altarianite", + "ability": "Cloud Nine", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Roost"], ["Return"], ["Earthquake"]], + "happiness": 255 + }, + { + "species": "Altaria", + "item": "Altarianite", + "ability": "Cloud Nine", + "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 96, "spe": 28}, + "nature": "Impish", + "moves": [["Dragon Dance"], ["Roost"], ["Return"], ["Substitute"]], + "happiness": 255 + }, + { + "species": "Altaria", + "item": "Altarianite", + "ability": "Cloud Nine", + "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 96, "spe": 28}, + "nature": "Impish", + "moves": [["Dragon Dance"], ["Roost"], ["Return"], ["Heal Bell"]], + "happiness": 255 + }, + { + "species": "Altaria", + "item": "Altarianite", + "ability": "Cloud Nine", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 168, "spd": 0, "spe": 92}, + "nature": "Modest", + "moves": [["Hyper Voice"], ["Fire Blast"], ["Roost"], ["Earthquake"]] + }, + { + "species": "Altaria", + "item": "Altarianite", + "ability": "Natural Cure", + "evs": {"hp": 248, "atk": 0, "def": 104, "spa": 0, "spd": 156, "spe": 0}, + "nature": "Bold", + "moves": [["Hyper Voice"], ["Roost"], ["Heal Bell"], ["Flamethrower"]] + }, + { + "species": "Altaria", + "item": "Altarianite", + "ability": "Cloud Nine", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Return"], ["Earthquake"], ["Fire Blast"]], + "happiness": 255 + } + ] + }, + "serperior": { + "flags": {}, + "sets": [ + { + "species": "Serperior", + "item": "Life Orb", + "ability": "Contrary", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Fire"], ["Glare"]] + }, + { + "species": "Serperior", + "item": "Meadow Plate", + "ability": "Contrary", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Fire"], ["Taunt"]] + }, + { + "species": "Serperior", + "item": "Leftovers", + "ability": "Contrary", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Ground"], ["Substitute"]] + }, + { + "species": "Serperior", + "item": "Life Orb", + "ability": "Contrary", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Fire"], ["Giga Drain"]] + } + ] + }, + "feraligatr": { + "flags": {}, + "sets": [ + { + "species": "Feraligatr", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Ice Punch"], ["Superpower"], ["Dragon Dance"]] + }, + { + "species": "Feraligatr", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Ice Punch"], ["Crunch"], ["Dragon Dance"]] + } + ] + }, + "raikou": { + "flags": {}, + "sets": [ + { + "species": "Raikou", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Calm Mind"], ["Thunderbolt"], ["Hidden Power Ice"]] + }, + { + "species": "Raikou", + "item": "Choice Specs", + "ability": "Pressure", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"]] + }, + { + "species": "Raikou", + "item": "Assault Vest", + "ability": "Pressure", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"]] + } + ] + } + }, + "UU": { + "gardevoir": { + "flags": {}, + "sets": [ + { + "species": "Gardevoir", + "item": "Choice Specs", + "ability": "Trace", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Moonblast"], ["Psyshock"], ["Focus Blast"], ["Trick"]] + }, + { + "species": "Gardevoir", + "item": "Choice Specs", + "ability": "Trace", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Moonblast"], ["Psyshock"], ["Focus Blast"], ["Shadow Ball"]] + }, + { + "species": "Gardevoir", + "item": "Choice Specs", + "ability": "Trace", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Moonblast"], ["Psyshock"], ["Shadow Ball"], ["Trick"]] + }, + { + "species": "Gardevoir", + "item": "Leftovers", + "ability": "Trace", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Moonblast"], ["Psyshock"], ["Focus Blast", "Substitute"]] + } + ] + }, + "sableye": { + "flags": {}, + "sets": [ + { + "species": "Sableye", + "item": "Leftovers", + "ability": "Prankster", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Recover"], ["Will-O-Wisp"], ["Taunt"], ["Knock Off"]] + } + ] + }, + "diancie": { + "flags": {}, + "sets": [ + { + "species": "Diancie", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 0}, + "nature": "Quiet", + "moves": [["Stealth Rock"], ["Moonblast"], ["Diamond Storm"], ["Earth Power", "Protect"]] + } + ] + }, + "metagross": { + "flags": {}, + "sets": [ + { + "species": "Metagross", + "item": "Shuca Berry", + "ability": "Clear Body", + "evs": {"hp": 40, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 216}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Earthquake", "Ice Punch", "Thunder Punch"], ["Zen Headbutt"], ["Bullet Punch"]] + } + ] + }, + "gyarados": { + "flags": {}, + "sets": [ + { + "species": "Gyarados", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Waterfall"], ["Bounce"], ["Substitute", "Earthquake", "Stone Edge"]] + }, + { + "species": "Gyarados", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 216, "atk": 60, "def": 184, "spa": 0, "spd": 0, "spe": 48}, + "nature": "Impish", + "moves": [["Rest"], ["Sleep Talk"], ["Waterfall"], ["Toxic", "Roar"]] + } + ] + }, + "hoopa": { + "flags": {}, + "sets": [ + { + "species": "Hoopa", + "item": "Life Orb", + "ability": "Magician", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Trick Room"], ["Shadow Ball"], ["Psyshock", "Psychic"], ["Focus Blast"]] + }, + { + "species": "Hoopa", + "item": "Life Orb", + "ability": "Magician", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Shadow Ball"], ["Focus Blast"], ["Psyshock"], ["Substitute"]] + }, + { + "species": "Hoopa", + "item": "Life Orb", + "ability": "Magician", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Shadow Ball"], ["Focus Blast"], ["Psyshock"], ["Nasty Plot"]] + }, + { + "species": "Hoopa", + "item": "Life Orb", + "ability": "Magician", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Shadow Ball"], ["Focus Blast"], ["Nasty Plot"], ["Substitute"]] + } + ] + }, + "crobat": { + "flags": {}, + "sets": [ + { + "species": "Crobat", + "item": "Choice Band", + "ability": "Infiltrator", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Sleep Talk"], ["Brave Bird"], ["Cross Poison"], ["U-turn"]] + }, + { + "species": "Crobat", + "item": "Black Sludge", + "ability": "Infiltrator", + "evs": {"hp": 248, "atk": 0, "def": 80, "spa": 0, "spd": 4, "spe": 176}, + "nature": "Jolly", + "moves": [["Roost"], ["Defog"], ["Taunt"], ["Brave Bird"]] + } + ] + }, + "entei": { + "flags": {}, + "sets": [ + { + "species": "Entei", + "item": "Choice Band", + "ability": "Pressure", + "shiny": true, + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Extreme Speed"], ["Sacred Fire"], ["Stone Edge"], ["Bulldoze"]] + }, + { + "species": "Entei", + "item": "Life Orb", + "ability": "Pressure", + "shiny": true, + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Extreme Speed"], ["Sacred Fire"], ["Stone Edge"], ["Bulldoze"]] + }, + { + "species": "Entei", + "item": "Assault Vest", + "ability": "Pressure", + "shiny": true, + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 240, "spe": 16}, + "nature": "Adamant", + "moves": [["Extreme Speed"], ["Sacred Fire"], ["Stone Edge"], ["Bulldoze"]] + } + ] + }, + "suicune": { + "flags": {}, + "sets": [ + { + "species": "Suicune", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Rest"], ["Sleep Talk"], ["Calm Mind"], ["Scald"]] + }, + { + "species": "Suicune", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Rest"], ["Sleep Talk"], ["Roar"], ["Scald"]] + }, + { + "species": "Suicune", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 196, "spd": 0, "spe": 64}, + "nature": "Modest", + "moves": [["Substitute"], ["Calm Mind"], ["Hydro Pump"], ["Ice Beam"]] + }, + { + "species": "Suicune", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Grass"]] + } + ] + }, + "aerodactyl": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Aerodactyl", + "item": "Aerodactylite", + "ability": "Pressure", + "evs": {"hp": 40, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 216}, + "nature": "Jolly", + "moves": [["Hone Claws"], ["Stone Edge"], ["Aerial Ace"], ["Aqua Tail"]] + }, + { + "species": "Aerodactyl", + "item": "Aerodactylite", + "ability": "Pressure", + "evs": {"hp": 40, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 216}, + "nature": "Jolly", + "moves": [["Roost"], ["Taunt"], ["Stone Edge"], ["Aerial Ace"]] + } + ] + }, + "hydreigon": { + "flags": {}, + "sets": [ + { + "species": "Hydreigon", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Roost"], ["Draco Meteor"], ["Dark Pulse"], ["Fire Blast"]] + }, + { + "species": "Hydreigon", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Roost"], ["Draco Meteor"], ["Fire Blast"], ["Superpower"]] + }, + { + "species": "Hydreigon", + "item": "Choice Specs", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Dark Pulse"], ["Focus Blast"], ["Flash Cannon"]] + }, + { + "species": "Hydreigon", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["U-turn"], ["Draco Meteor"], ["Dark Pulse"], ["Focus Blast"]] + } + ] + }, + "machamp": { + "flags": {}, + "sets": [ + { + "species": "Machamp", + "item": "Assault Vest", + "ability": "No Guard", + "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84}, + "nature": "Adamant", + "moves": [["Bullet Punch"], ["Dynamic Punch"], ["Knock Off"], ["Ice Punch"]] + }, + { + "species": "Machamp", + "item": "Choice Band", + "ability": "No Guard", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Bullet Punch"], ["Dynamic Punch"], ["Knock Off"], ["Ice Punch"]] + }, + { + "species": "Machamp", + "item": "Leftovers", + "ability": "No Guard", + "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Adamant", + "moves": [["Rest"], ["Sleep Talk"], ["Dynamic Punch"], ["Knock Off"]] + }, + { + "species": "Machamp", + "item": "Leftovers", + "ability": "No Guard", + "evs": {"hp": 212, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 44}, + "nature": "Adamant", + "moves": [["Bulk Up"], ["Dynamic Punch"], ["Stone Edge"], ["Ice Punch"]] + } + ] + }, + "mienshao": { + "flags": {}, + "sets": [ + { + "species": "Mienshao", + "item": "Life Orb", + "ability": "Regenerator", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Fake Out"], ["High Jump Kick"], ["Knock Off"], ["U-turn"]] + }, + { + "species": "Mienshao", + "item": "Choice Scarf", + "ability": "Reckless", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["High Jump Kick"], ["Knock Off"], ["Poison Jab"], ["U-turn"]] + } + ] + }, + "absol": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Absol", + "item": "Absolite", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Sucker Punch"], ["Knock Off"], ["Superpower"]] + }, + { + "species": "Absol", + "item": "Absolite", + "ability": "Justified", + "evs": {"hp": 0, "atk": 240, "def": 0, "spa": 44, "spd": 0, "spe": 224}, + "nature": "Naive", + "moves": [["Sucker Punch"], ["Knock Off"], ["Ice Beam"], ["Fire Blast"]] + } + ] + }, + "aggron": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Aggron", + "item": "Aggronite", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 0, "def": 16, "spa": 0, "spd": 244, "spe": 0}, + "nature": "Impish", + "moves": [["Rest"], ["Sleep Talk"], ["Heavy Slam"], ["Earthquake"]] + }, + { + "species": "Aggron", + "item": "Aggronite", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 124, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Roar"], ["Heavy Slam"], ["Earthquake"]] + } + ] + }, + "beedrill": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Beedrill", + "item": "Beedrillite", + "ability": "Swarm", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Protect"], ["U-turn"], ["Poison Jab"], ["Drill Run"]] + } + ] + }, + "blastoise": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Blastoise", + "item": "Blastoisinite", + "ability": "Rain Dish", + "evs": {"hp": 56, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 200}, + "nature": "Modest", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Aura Sphere"], ["Dark Pulse"]] + }, + { + "species": "Blastoise", + "item": "Blastoisinite", + "ability": "Torrent", + "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 44, "spd": 64, "spe": 0}, + "nature": "Bold", + "moves": [["Rapid Spin"], ["Scald"], ["Ice Beam"], ["Dark Pulse"]] + } + ] + }, + "empoleon": { + "flags": {}, + "sets": [ + { + "species": "Empoleon", + "item": "Leftovers", + "ability": "Torrent", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Stealth Rock"], ["Defog"], ["Roar"], ["Scald"]] + }, + { + "species": "Empoleon", + "item": "Choice Specs", + "ability": "Torrent", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Hydro Pump"], ["Flash Cannon"], ["Ice Beam"], ["Grass Knot"]] + }, + { + "species": "Empoleon", + "item": "Petaya Berry", + "ability": "Torrent", + "evs": {"hp": 12, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 240}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Agility"], ["Substitute"], ["Surf"], ["Ice Beam"]] + } + ] + }, + "krookodile": { + "flags": {}, + "sets": [ + { + "species": "Krookodile", + "item": "Choice Band", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Pursuit"], ["Earthquake"], ["Knock Off"], ["Superpower"]] + }, + { + "species": "Krookodile", + "item": "Choice Scarf", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Earthquake"], ["Knock Off"], ["Stone Edge"], ["Superpower"]] + }, + { + "species": "Krookodile", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Taunt"], ["Earthquake"], ["Knock Off"]] + } + ] + }, + "nidoqueen": { + "flags": {}, + "sets": [ + { + "species": "Nidoqueen", + "gender": "F", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 128, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 128}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Stealth Rock"], ["Sludge Wave"], ["Earth Power"], ["Ice Beam"]] + }, + { + "species": "Nidoqueen", + "gender": "F", + "item": "Black Sludge", + "ability": "Sheer Force", + "evs": {"hp": 248, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 20}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Roar"], ["Earth Power"], ["Ice Beam"]] + } + ] + }, + "shaymin": { + "flags": {}, + "sets": [ + { + "species": "Shaymin", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Substitute"], ["Leech Seed"], ["Seed Flare"], ["Air Slash"]] + }, + { + "species": "Shaymin", + "item": "Life Orb", + "ability": "Natural Cure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Rest"], ["Seed Flare"], ["Earth Power"], ["Air Slash"]] + } + ] + }, + "swampert": { + "flags": {}, + "sets": [ + { + "species": "Swampert", + "item": "Leftovers", + "ability": "Torrent", + "evs": {"hp": 240, "atk": 16, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Relaxed", + "moves": [["Stealth Rock"], ["Roar"], ["Earthquake"], ["Scald"]] + }, + { + "species": "Swampert", + "item": "Choice Band", + "ability": "Torrent", + "evs": {"hp": 204, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 52}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Earthquake"], ["Ice Beam"], ["Superpower"]] + }, + { + "species": "Swampert", + "item": "Chesto Berry", + "ability": "Torrent", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Rest"], ["Curse"], ["Earthquake"], ["Ice Beam"]] + }, + { + "species": "Swampert", + "item": "Swampertite", + "ability": "Torrent", + "evs": {"hp": 104, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 152}, + "nature": "Adamant", + "moves": [["Rain Dance"], ["Waterfall"], ["Earthquake"], ["Ice Punch"]] + } + ] + }, + "ampharos": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Ampharos", + "item": "Ampharosite", + "ability": "Static", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Agility"], ["Dragon Pulse"], ["Thunderbolt"], ["Focus Blast"]] + }, + { + "species": "Ampharos", + "gender": "M", + "item": "Ampharosite", + "ability": "Static", + "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 124}, + "nature": "Modest", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Dragon Pulse"], ["Focus Blast"]] + }, + { + "species": "Ampharos", + "item": "Ampharosite", + "ability": "Static", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 8, "spd": 0, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Rest"], ["Sleep Talk"], ["Volt Switch"], ["Dragon Pulse"]] + }, + { + "species": "Ampharos", + "item": "Ampharosite", + "ability": "Static", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Rest"], ["Sleep Talk"], ["Volt Switch"], ["Dragon Pulse"]] + } + ] + }, + "arcanine": { + "flags": {}, + "sets": [ + { + "species": "Arcanine", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Morning Sun"], ["Will-O-Wisp"], ["Extreme Speed"], ["Flare Blitz"]] + }, + { + "species": "Arcanine", + "item": "Life Orb", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Extreme Speed"], ["Flare Blitz"], ["Close Combat"], ["Wild Charge"]] + }, + { + "species": "Arcanine", + "item": "Choice Band", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Extreme Speed"], ["Flare Blitz"], ["Close Combat"], ["Wild Charge"]] + } + ] + }, + "blissey": { + "flags": {}, + "sets": [ + { + "species": "Blissey", + "gender": "F", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Soft-Boiled"], ["Wish"], ["Toxic"], ["Seismic Toss"]] + }, + { + "species": "Blissey", + "gender": "F", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Soft-Boiled"], ["Heal Bell"], ["Toxic"], ["Seismic Toss"]] + }, + { + "species": "Blissey", + "gender": "F", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Seismic Toss"]] + } + ] + }, + "chandelure": { + "flags": {}, + "sets": [ + { + "species": "Chandelure", + "item": "Choice Scarf", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Trick"], ["Fire Blast"], ["Shadow Ball"], ["Energy Ball"]] + }, + { + "species": "Chandelure", + "item": "Choice Specs", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Trick"], ["Overheat"], ["Shadow Ball"], ["Energy Ball"]] + }, + { + "species": "Chandelure", + "item": "Leftovers", + "ability": "Flash Fire", + "evs": {"hp": 112, "atk": 0, "def": 0, "spa": 140, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Substitute"], ["Flamethrower"], ["Shadow Ball"]] + } + ] + }, + "chesnaught": { + "flags": {}, + "sets": [ + { + "species": "Chesnaught", + "item": "Leftovers", + "ability": "Bulletproof", + "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Spiky Shield"], ["Spikes"], ["Leech Seed"], ["Drain Punch"]] + }, + { + "species": "Chesnaught", + "item": "Leftovers", + "ability": "Bulletproof", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Spiky Shield"], ["Spikes"], ["Leech Seed"], ["Drain Punch"]] + } + ] + }, + "cloyster": { + "flags": {}, + "sets": [ + { + "species": "Cloyster", + "item": "Focus Sash", + "ability": "Skill Link", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Shell Smash"], ["Icicle Spear"], ["Rock Blast"], ["Ice Shard"]] + }, + { + "species": "Cloyster", + "item": "Focus Sash", + "ability": "Skill Link", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Rapid Spin"], ["Spikes"], ["Icicle Spear"], ["Explosion"]] + } + ] + }, + "darmanitan": { + "flags": {}, + "sets": [ + { + "species": "Darmanitan", + "item": "Choice Band", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Rock Slide"], ["Superpower"], ["U-turn"]] + }, + { + "species": "Darmanitan", + "item": "Choice Scarf", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Rock Slide"], ["Superpower"], ["U-turn"]] + }, + { + "species": "Darmanitan", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Rock Slide"], ["Superpower"], ["U-turn"]] + } + ] + }, + "donphan": { + "flags": {}, + "sets": [ + { + "species": "Donphan", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Rapid Spin"], ["Ice Shard"], ["Earthquake"]] + }, + { + "species": "Donphan", + "item": "Assault Vest", + "ability": "Sturdy", + "evs": {"hp": 176, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 80}, + "nature": "Adamant", + "moves": [["Rapid Spin"], ["Ice Shard"], ["Earthquake"], ["Knock Off"]] + } + ] + }, + "espeon": { + "flags": {}, + "sets": [ + { + "species": "Espeon", + "item": "Light Clay", + "ability": "Magic Bounce", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Morning Sun"], ["Reflect"], ["Light Screen"], ["Psyshock"]] + }, + { + "species": "Espeon", + "item": "Choice Specs", + "ability": "Magic Bounce", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Trick"], ["Psyshock"], ["Shadow Ball"], ["Hidden Power Fighting"]] + } + ] + }, + "florges": { + "flags": {}, + "sets": [ + { + "species": "Florges", + "gender": "F", + "item": "Leftovers", + "ability": "Flower Veil", + "evs": {"hp": 248, "atk": 0, "def": 236, "spa": 0, "spd": 24, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Protect"], ["Wish"], ["Aromatherapy"], ["Moonblast"]] + }, + { + "species": "Florges", + "gender": "F", + "item": "Leftovers", + "ability": "Flower Veil", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Synthesis"], ["Aromatherapy"], ["Calm Mind"], ["Moonblast"]] + } + ] + }, + "flygon": { + "flags": {}, + "sets": [ + { + "species": "Flygon", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Defog"], ["Outrage"], ["Earthquake"], ["U-turn"]] + }, + { + "species": "Flygon", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Roost"], ["Defog"], ["Earthquake"], ["U-turn"]] + } + ] + }, + "forretress": { + "flags": {}, + "sets": [ + { + "species": "Forretress", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0}, + "nature": "Relaxed", + "moves": [["Spikes"], ["Rapid Spin"], ["Gyro Ball"], ["Volt Switch"]] + } + ] + }, + "galvantula": { + "flags": {}, + "sets": [ + { + "species": "Galvantula", + "item": "Focus Sash", + "ability": "Compound Eyes", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Sticky Web"], ["Thunder"], ["Bug Buzz"], ["Energy Ball"]] + }, + { + "species": "Galvantula", + "gender": "M", + "item": "Life Orb", + "ability": "Compound Eyes", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunder"], ["Bug Buzz"], ["Energy Ball"]] + }, + { + "species": "Galvantula", + "gender": "M", + "item": "Choice Specs", + "ability": "Compound Eyes", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunder"], ["Bug Buzz"], ["Energy Ball"]] + } + ] + }, + "goodra": { + "flags": {}, + "sets": [ + { + "species": "Goodra", + "item": "Assault Vest", + "ability": "Sap Sipper", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Fire Blast"], ["Sludge Bomb"], ["Dragon Tail"]] + }, + { + "species": "Goodra", + "item": "Life Orb", + "ability": "Sap Sipper", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Fire Blast"], ["Sludge Bomb"], ["Ice Beam"]] + } + ] + }, + "haxorus": { + "flags": {}, + "sets": [ + { + "species": "Haxorus", + "item": "Choice Band", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Sleep Talk"], ["Outrage"], ["Earthquake"], ["Poison Jab"]] + }, + { + "species": "Haxorus", + "item": "Life Orb", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Taunt"], ["Outrage"], ["Earthquake"]] + }, + { + "species": "Haxorus", + "gender": "M", + "item": "Lum Berry", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Outrage"], ["Earthquake"], ["Poison Jab"]] + }, + { + "species": "Haxorus", + "item": "Life Orb", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Taunt"], ["Outrage"], ["Earthquake"]] + } + ] + }, + "heliolisk": { + "flags": {}, + "sets": [ + { + "species": "Heliolisk", + "item": "Choice Specs", + "ability": "Dry Skin", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Grass Knot"], ["Hidden Power Ice"]] + }, + { + "species": "Heliolisk", + "item": "Life Orb", + "ability": "Dry Skin", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Grass Knot"], ["Hidden Power Ice"]] + } + ] + }, + "honchkrow": { + "flags": {}, + "sets": [ + { + "species": "Honchkrow", + "item": "Life Orb", + "ability": "Moxie", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Roost"], ["Sucker Punch"], ["Brave Bird"], ["Superpower"]] + }, + { + "species": "Honchkrow", + "item": "Choice Scarf", + "ability": "Moxie", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Brave Bird"], ["Night Slash"], ["Superpower"], ["Heat Wave"]] + } + ] + }, + "infernape": { + "flags": {}, + "sets": [ + { + "species": "Infernape", + "item": "Focus Sash", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Fake Out"], ["Stealth Rock"], ["Close Combat"], ["Overheat"]] + }, + { + "species": "Infernape", + "item": "Choice Scarf", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Close Combat"], ["Stone Edge"], ["U-turn"]] + }, + { + "species": "Infernape", + "item": "Choice Band", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Close Combat"], ["Stone Edge"], ["U-turn"]] + }, + { + "species": "Infernape", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Vacuum Wave"], ["Fire Blast"], ["Grass Knot"]] + } + ] + }, + "kingdra": { + "flags": {}, + "sets": [ + { + "species": "Kingdra", + "item": "Lum Berry", + "ability": "Sniper", + "evs": {"hp": 24, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 232}, + "nature": "Adamant", + "moves": [["Dragon Dance"], ["Outrage"], ["Waterfall"], ["Iron Head"]] + }, + { + "species": "Kingdra", + "item": "Leftovers", + "ability": "Sniper", + "evs": {"hp": 24, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 232}, + "nature": "Adamant", + "moves": [["Iron Head"], ["Dragon Dance"], ["Outrage"], ["Waterfall"]] + }, + { + "species": "Kingdra", + "item": "Scope Lens", + "ability": "Sniper", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Rash", + "moves": [["Agility"], ["Focus Energy"], ["Draco Meteor"], ["Waterfall"]] + }, + { + "species": "Kingdra", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 60, "def": 0, "spa": 252, "spd": 0, "spe": 196}, + "nature": "Mild", + "moves": [["Rain Dance"], ["Hydro Pump"], ["Draco Meteor"], ["Waterfall"]] + } + ] + }, + "lucario": { + "flags": {}, + "sets": [ + { + "species": "Lucario", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Bullet Punch"], ["Close Combat"], ["Crunch"]] + }, + { + "species": "Lucario", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Extreme Speed"], ["Close Combat"], ["Ice Punch"]] + }, + { + "species": "Lucario", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Bullet Punch"], ["Close Combat"], ["Ice Punch"]] + }, + { + "species": "Lucario", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Extreme Speed"], ["Close Combat"], ["Crunch"]] + }, + { + "species": "Lucario", + "item": "Life Orb", + "ability": "Steadfast", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Vacuum Wave"], ["Aura Sphere"], ["Flash Cannon"]] + } + ] + }, + "milotic": { + "flags": {}, + "sets": [ + { + "species": "Milotic", + "item": "Life Orb", + "ability": "Competitive", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Recover"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Grass"]] + }, + { + "species": "Milotic", + "item": "Leftovers", + "ability": "Marvel Scale", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Recover"], ["Haze"], ["Scald"], ["Ice Beam"]] + }, + { + "species": "Milotic", + "item": "Leftovers", + "ability": "Marvel Scale", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Recover"], ["Haze"], ["Scald"], ["Ice Beam"]] + } + ] + }, + "noivern": { + "flags": {}, + "sets": [ + { + "species": "Noivern", + "item": "Choice Specs", + "ability": "Infiltrator", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Switcheroo"], ["Draco Meteor"], ["Hurricane"], ["Flamethrower"]] + }, + { + "species": "Noivern", + "item": "Life Orb", + "ability": "Infiltrator", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Roost"], ["Draco Meteor"], ["Hurricane"], ["Flamethrower"]] + }, + { + "species": "Noivern", + "item": "Leftovers", + "ability": "Infiltrator", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Roost"], ["Taunt"], ["Draco Meteor"], ["Air Slash"]] + } + ] + }, + "porygonz": { + "flags": {}, + "sets": [ + { + "species": "Porygon-Z", + "item": "Life Orb", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Tri Attack"], ["Dark Pulse"], ["Hidden Power Fighting"]] + }, + { + "species": "Porygon-Z", + "item": "Choice Specs", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Trick"], ["Tri Attack"], ["Thunderbolt"], ["Ice Beam"]] + }, + { + "species": "Porygon-Z", + "item": "Choice Scarf", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Trick"], ["Tri Attack"], ["Thunderbolt"], ["Ice Beam"]] + } + ] + }, + "porygon2": { + "flags": {}, + "sets": [ + { + "species": "Porygon2", + "item": "Eviolite", + "ability": "Trace", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Recover"], ["Thunder Wave"], ["Thunderbolt"], ["Ice Beam"]] + }, + { + "species": "Porygon2", + "item": "Eviolite", + "ability": "Trace", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Recover"], ["Thunder Wave"], ["Thunderbolt"], ["Ice Beam"]] + } + ] + }, + "rotomheat": { + "flags": {}, + "sets": [ + { + "species": "Rotom-Heat", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Trick"], ["Overheat"], ["Volt Switch"], ["Hidden Power Grass"]] + }, + { + "species": "Rotom-Heat", + "item": "Choice Specs", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Trick"], ["Overheat"], ["Volt Switch"], ["Hidden Power Grass"]] + }, + { + "species": "Rotom-Heat", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 216, "spa": 0, "spd": 0, "spe": 44}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Pain Split"], ["Will-O-Wisp"], ["Overheat"], ["Volt Switch"]] + } + ] + }, + "scrafty": { + "flags": {}, + "sets": [ + { + "species": "Scrafty", + "item": "Leftovers", + "ability": "Shed Skin", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Rest"], ["Bulk Up"], ["Drain Punch"], ["Knock Off"]] + }, + { + "species": "Scrafty", + "item": "Life Orb", + "ability": "Moxie", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Drain Punch"], ["Knock Off"], ["Zen Headbutt"]] + } + ] + }, + "snorlax": { + "flags": {}, + "sets": [ + { + "species": "Snorlax", + "item": "Choice Band", + "ability": "Thick Fat", + "evs": {"hp": 0, "atk": 252, "def": 56, "spa": 0, "spd": 200, "spe": 0}, + "nature": "Adamant", + "moves": [["Pursuit"], ["Body Slam"], ["Earthquake"], ["Fire Punch"]] + }, + { + "species": "Snorlax", + "item": "Assault Vest", + "ability": "Thick Fat", + "evs": {"hp": 0, "atk": 252, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Adamant", + "moves": [["Pursuit"], ["Body Slam"], ["Earthquake"], ["Fire Blast"]] + }, + { + "species": "Snorlax", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 144, "atk": 0, "def": 188, "spa": 0, "spd": 176, "spe": 0}, + "nature": "Careful", + "moves": [["Rest"], ["Sleep Talk"], ["Curse"], ["Body Slam"]] + } + ] + }, + "tentacruel": { + "flags": {}, + "sets": [ + { + "species": "Tentacruel", + "item": "Black Sludge", + "ability": "Liquid Ooze", + "evs": {"hp": 240, "atk": 0, "def": 244, "spa": 0, "spd": 0, "spe": 24}, + "nature": "Bold", + "moves": [["Toxic Spikes"], ["Rapid Spin"], ["Scald"], ["Knock Off"]] + } + ] + }, + "toxicroak": { + "flags": {}, + "sets": [ + { + "species": "Toxicroak", + "item": "Life Orb", + "ability": "Dry Skin", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Sucker Punch"], ["Gunk Shot"], ["Drain Punch"]] + }, + { + "species": "Toxicroak", + "item": "Black Sludge", + "ability": "Dry Skin", + "evs": {"hp": 248, "atk": 132, "def": 116, "spa": 0, "spd": 0, "spe": 12}, + "nature": "Adamant", + "moves": [["Substitute"], ["Bulk Up"], ["Sucker Punch"], ["Drain Punch"]] + } + ] + }, + "umbreon": { + "flags": {}, + "sets": [ + { + "species": "Umbreon", + "gender": "M", + "item": "Leftovers", + "ability": "Synchronize", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Foul Play"]] + }, + { + "species": "Umbreon", + "gender": "M", + "item": "Leftovers", + "ability": "Synchronize", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Foul Play"]] + } + ] + }, + "vaporeon": { + "flags": {}, + "sets": [ + { + "species": "Vaporeon", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 200, "atk": 0, "def": 252, "spa": 0, "spd": 56, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Scald"]] + } + ] + }, + "froslass": { + "flags": {}, + "sets": [ + { + "species": "Froslass", + "gender": "F", + "item": "Focus Sash", + "ability": "Cursed Body", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Destiny Bond"], ["Spikes"], ["Taunt"], ["Icy Wind"]] + } + ] + }, + "houndoom": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Houndoom", + "item": "Houndoominite", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Taunt"], ["Fire Blast"], ["Dark Pulse"]] + }, + { + "species": "Houndoom", + "item": "Houndoominite", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Sunny Day"], ["Fire Blast"], ["Dark Pulse"], ["Solar Beam"]] + } + ] + }, + "kyurem": { + "flags": {}, + "sets": [ + { + "species": "Kyurem", + "item": "Choice Scarf", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Draco Meteor"], ["Ice Beam"], ["Earth Power"], ["Outrage"]] + }, + { + "species": "Kyurem", + "item": "Choice Specs", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Ice Beam"], ["Earth Power"], ["Flash Cannon"]] + }, + { + "species": "Kyurem", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Roost"], ["Draco Meteor"], ["Ice Beam"], ["Earth Power"]] + }, + { + "species": "Kyurem", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 56, "atk": 0, "def": 0, "spa": 236, "spd": 0, "spe": 216}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Roost"], ["Substitute"], ["Ice Beam"], ["Earth Power"]] + } + ] + }, + "shuckle": { + "flags": {}, + "sets": [ + { + "species": "Shuckle", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Stealth Rock"], ["Sticky Web"], ["Encore"], ["Knock Off"]] + } + ] + }, + "tornadus": { + "flags": {}, + "sets": [ + { + "species": "Tornadus", + "gender": "M", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Acrobatics"], ["Knock Off"], ["Superpower"], ["U-turn"]] + }, + { + "species": "Tornadus", + "gender": "M", + "item": "Life Orb", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Tailwind"], ["Hurricane"], ["Heat Wave"], ["Grass Knot"]] + } + ] + }, + "yanmega": { + "flags": {}, + "sets": [ + { + "species": "Yanmega", + "item": "Choice Specs", + "ability": "Tinted Lens", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Sleep Talk"], ["Bug Buzz"], ["Air Slash"], ["Giga Drain"]] + }, + { + "species": "Yanmega", + "item": "Life Orb", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Protect"], ["Bug Buzz"], ["Air Slash"], ["Giga Drain"]] + } + ] + }, + "zoroark": { + "flags": {}, + "sets": [ + { + "species": "Zoroark", + "item": "Choice Specs", + "ability": "Illusion", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Trick"], ["Night Daze"], ["Focus Blast"], ["Flamethrower"]] + }, + { + "species": "Zoroark", + "item": "Life Orb", + "ability": "Illusion", + "evs": {"hp": 0, "atk": 196, "def": 0, "spa": 96, "spd": 0, "spe": 216}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Naive", + "moves": [["Sucker Punch"], ["Knock Off"], ["Flamethrower"], ["Grass Knot"]] + }, + { + "species": "Zoroark", + "item": "Life Orb", + "ability": "Illusion", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Night Daze"], ["Focus Blast"], ["Flamethrower"]] + } + ] + }, + "cresselia": { + "flags": {}, + "sets": [ + { + "species": "Cresselia", + "gender": "F", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Moonlight"], ["Thunder Wave"], ["Psyshock"], ["Moonblast"]] + }, + { + "species": "Cresselia", + "gender": "F", + "item": "Light Clay", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Lunar Dance"], ["Reflect"], ["Light Screen"], ["Moonblast"]] + }, + { + "species": "Cresselia", + "gender": "F", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 116, "spa": 0, "spd": 0, "spe": 144}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Moonlight"], ["Substitute"], ["Calm Mind"], ["Psyshock"]] + }, + { + "species": "Cresselia", + "item": "Light Clay", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Reflect"], ["Light Screen"], ["Lunar Dance"], ["Psyshock"]] + }, + { + "species": "Cresselia", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 136, "spa": 0, "spd": 0, "spe": 120}, + "nature": "Bold", + "moves": [["Substitute"], ["Calm Mind"], ["Moonblast"], ["Moonlight"]] + }, + { + "species": "Cresselia", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 116, "spa": 0, "spd": 0, "spe": 144}, + "nature": "Bold", + "moves": [["Substitute"], ["Calm Mind"], ["Psyshock"], ["Moonblast"]] + } + ] + }, + "gligar": { + "flags": {}, + "sets": [ + { + "species": "Gligar", + "item": "Eviolite", + "ability": "Hyper Cutter", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Roost"], ["Defog"], ["Toxic"], ["Earthquake"]] + }, + { + "species": "Gligar", + "item": "Eviolite", + "ability": "Hyper Cutter", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Roost"], ["Defog"], ["Stealth Rock"], ["Earthquake"]] + }, + { + "species": "Gligar", + "item": "Eviolite", + "ability": "Hyper Cutter", + "evs": {"hp": 248, "atk": 0, "def": 20, "spa": 0, "spd": 240, "spe": 0}, + "nature": "Careful", + "moves": [["Roost"], ["Defog"], ["Toxic"], ["Earthquake"]] + } + ] + }, + "aromatisse": { + "flags": {}, + "sets": [ + { + "species": "Aromatisse", + "item": "Leftovers", + "ability": "Aroma Veil", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Bold", + "moves": [["Protect"], ["Wish"], ["Aromatherapy"], ["Moonblast"]] + }, + { + "species": "Aromatisse", + "item": "Leftovers", + "ability": "Aroma Veil", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Protect"], ["Wish"], ["Aromatherapy"], ["Moonblast"]] + } + ] + }, + "roserade": { + "flags": {}, + "sets": [ + { + "species": "Roserade", + "item": "Life Orb", + "ability": "Natural Cure", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Spikes"], ["Giga Drain"], ["Sludge Bomb"], ["Synthesis"]] + }, + { + "species": "Roserade", + "item": "Black Sludge", + "ability": "Natural Cure", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 244, "spe": 16}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Rest"], ["Spikes"], ["Giga Drain"], ["Sludge Bomb"]] + } + ] + }, + "cobalion": { + "flags": {}, + "sets": [ + { + "species": "Cobalion", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Calm Mind"], ["Focus Blast"], ["Flash Cannon"], ["Hidden Power Ghost"]] + }, + { + "species": "Cobalion", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Close Combat"], ["Iron Head"], ["Stone Edge"]] + }, + { + "species": "Cobalion", + "item": "Leftovers", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Taunt"], ["Close Combat"], ["Iron Head"]] + } + ] + }, + "dragalge": { + "flags": {}, + "sets": [ + { + "species": "Dragalge", + "item": "Choice Specs", + "ability": "Adaptability", + "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 56}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Sludge Wave"], ["Hidden Power Fire"], ["Focus Blast"]] + }, + { + "species": "Dragalge", + "item": "Choice Specs", + "ability": "Adaptability", + "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 56}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Sludge Wave"], ["Scald"], ["Focus Blast"]] + }, + { + "species": "Dragalge", + "item": "Black Sludge", + "ability": "Adaptability", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Toxic Spikes"], ["Dragon Tail"], ["Sludge Bomb"], ["Scald"]] + }, + { + "species": "Dragalge", + "item": "Dragon Fang", + "ability": "Adaptability", + "evs": {"hp": 188, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 68}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Sludge Bomb"], ["Focus Blast"], ["Dragon Pulse"]] + }, + { + "species": "Dragalge", + "item": "Choice Specs", + "ability": "Adaptability", + "evs": {"hp": 188, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 68}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Dragon Pulse"], ["Sludge Wave"], ["Focus Blast"]] + } + ] + }, + "reuniclus": { + "flags": {}, + "sets": [ + { + "species": "Reuniclus", + "item": "Leftovers", + "ability": "Magic Guard", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Recover"], ["Calm Mind"], ["Psyshock"], ["Focus Blast"]] + }, + { + "species": "Reuniclus", + "item": "Life Orb", + "ability": "Magic Guard", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Recover"], ["Calm Mind"], ["Psyshock"], ["Focus Blast"]] + } + ] + }, + "whimsicott": { + "flags": {}, + "sets": [ + { + "species": "Whimsicott", + "item": "Life Orb", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Encore"], ["Giga Drain"], ["Moonblast"], ["Hidden Power Fire"]] + }, + { + "species": "Whimsicott", + "item": "Leftovers", + "ability": "Prankster", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Encore"], ["Taunt"], ["Leech Seed"], ["Moonblast"]] + }, + { + "species": "Whimsicott", + "item": "Life Orb", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Moonblast"], ["Giga Drain"], ["Hidden Power Fire"], ["Encore"]] + }, + { + "species": "Whimsicott", + "item": "Leftovers", + "ability": "Prankster", + "evs": {"hp": 248, "atk": 0, "def": 236, "spa": 0, "spd": 0, "spe": 24}, + "nature": "Bold", + "moves": [["Encore"], ["U-turn"], ["Stun Spore"], ["Moonblast"]] + } + ] + }, + "sharpedo": { + "flags": {}, + "sets": [ + { + "species": "Sharpedo", + "item": "Sharpedonite", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Protect"], ["Waterfall"], ["Crunch"], ["Ice Fang"]] + }, + { + "species": "Sharpedo", + "item": "Sharpedonite", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Naughty", + "moves": [["Protect"], ["Crunch"], ["Ice Fang"], ["Hydro Pump"]] + }, + { + "species": "Sharpedo", + "item": "Sharpedonite", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Protect"], ["Destiny Bond"], ["Waterfall"], ["Crunch"]] + }, + { + "species": "Sharpedo", + "item": "Life Orb", + "ability": "Speed Boost", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Protect"], ["Destiny Bond"], ["Waterfall"], ["Crunch"]] + } + ] + }, + "sceptile": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Sceptile", + "item": "Sceptilite", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Giga Drain"], ["Dragon Pulse"], ["Hidden Power Fire"]] + }, + { + "species": "Sceptile", + "item": "Sceptilite", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Leaf Storm"], ["Giga Drain"], ["Dragon Pulse"], ["Hidden Power Fire"]] + }, + { + "species": "Sceptile", + "item": "Sceptilite", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Dragon Pulse"], ["Giga Drain"], ["Focus Blast"], ["Substitute"]] + }, + { + "species": "Sceptile", + "item": "Sceptilite", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Giga Drain"], ["Dragon Pulse"], ["Focus Blast"], ["Leaf Storm"]] + }, + { + "species": "Sceptile", + "item": "Sceptilite", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Leaf Blade"], ["Outrage"], ["Earthquake"]] + }, + { + "species": "Sceptile", + "item": "Sceptilite", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Dragon Pulse"], ["Giga Drain"], ["Focus Blast"], ["Hidden Power Fire"]] + } + ] + }, + "rhyperior": { + "flags": {}, + "sets": [ + { + "species": "Rhyperior", + "item": "Choice Band", + "ability": "Solid Rock", + "evs": {"hp": 168, "atk": 248, "def": 0, "spa": 0, "spd": 0, "spe": 92}, + "nature": "Adamant", + "moves": [["Stone Edge"], ["Earthquake"], ["Megahorn"], ["Aqua Tail"]] + }, + { + "species": "Rhyperior", + "item": "Leftovers", + "ability": "Solid Rock", + "evs": {"hp": 248, "atk": 16, "def": 244, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Megahorn"]] + }, + { + "species": "Rhyperior", + "item": "Leftovers", + "ability": "Solid Rock", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Megahorn"]] + } + ] + }, + "bronzong": { + "flags": {}, + "sets": [ + { + "species": "Bronzong", + "item": "Light Clay", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Reflect"], ["Light Screen"], ["Explosion"]] + }, + { + "species": "Bronzong", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0}, + "nature": "Relaxed", + "moves": [["Stealth Rock"], ["Toxic"], ["Gyro Ball"], ["Earthquake"]] + }, + { + "species": "Bronzong", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0}, + "nature": "Sassy", + "moves": [["Stealth Rock"], ["Toxic"], ["Gyro Ball"], ["Earthquake"]] + } + ] + }, + "feraligatr": { + "flags": {}, + "sets": [ + { + "species": "Feraligatr", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 32, "atk": 248, "def": 0, "spa": 0, "spd": 0, "spe": 228}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Waterfall"], ["Ice Punch"], ["Crunch"]] + }, + { + "species": "Feraligatr", + "item": "Life Orb", + "ability": "Torrent", + "evs": {"hp": 52, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 204}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Aqua Jet"], ["Waterfall"], ["Crunch"]] + }, + { + "species": "Feraligatr", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Superpower"], ["Aqua Jet"], ["Swords Dance"]] + }, + { + "species": "Feraligatr", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Ice Punch"], ["Superpower"], ["Dragon Dance"]] + }, + { + "species": "Feraligatr", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Ice Punch"], ["Crunch"], ["Dragon Dance"]] + } + ] + }, + "slurpuff": { + "flags": {}, + "sets": [ + { + "species": "Slurpuff", + "item": "Sitrus Berry", + "ability": "Unburden", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Belly Drum"], ["Play Rough"], ["Drain Punch"], ["Return"]], + "happiness": 255 + }, + { + "species": "Slurpuff", + "item": "Chesto Berry", + "ability": "Unburden", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Rest"], ["Calm Mind"], ["Draining Kiss"], ["Flamethrower"]] + }, + { + "species": "Slurpuff", + "item": "Sitrus Berry", + "ability": "Unburden", + "evs": {"hp": 52, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 204}, + "nature": "Adamant", + "moves": [["Belly Drum"], ["Play Rough"], ["Return"], ["Aromatherapy"]], + "happiness": 255 + } + ] + }, + "pangoro": { + "flags": {}, + "sets": [ + { + "species": "Pangoro", + "item": "Choice Band", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Knock Off"], ["Superpower"], ["Gunk Shot"], ["Ice Punch"]] + }, + { + "species": "Pangoro", + "item": "Life Orb", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Drain Punch"], ["Knock Off"], ["Gunk Shot"]] + }, + { + "species": "Pangoro", + "item": "Lum Berry", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Drain Punch"], ["Knock Off"], ["Gunk Shot"]] + } + ] + }, + "abomasnow": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Abomasnow", + "item": "Abomasite", + "ability": "Soundproof", + "evs": {"hp": 0, "atk": 128, "def": 0, "spa": 252, "spd": 0, "spe": 128}, + "nature": "Mild", + "moves": [["Blizzard"], ["Giga Drain"], ["Ice Shard"], ["Focus Blast"]] + }, + { + "species": "Abomasnow", + "item": "Abomasite", + "ability": "Soundproof", + "evs": {"hp": 128, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 128}, + "nature": "Adamant", + "moves": [["Ice Shard"], ["Wood Hammer"], ["Earthquake"], ["Swords Dance"]] + } + ] + } + }, + "RU": { + "venusaur": { + "flags": {}, + "sets": [ + { + "species": "Venusaur", + "item": "Life Orb", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Leaf Storm"], ["Sludge Bomb"], ["Synthesis"], ["Hidden Power Fire"]] + }, + { + "species": "Venusaur", + "item": "Black Sludge", + "ability": "Overgrow", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 92, "spd": 0, "spe": 164}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Hidden Power Fire"]] + } + ] + }, + "diancie": { + "flags": {}, + "sets": [ + { + "species": "Diancie", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Sassy", + "moves": [["Stealth Rock"], ["Heal Bell"], ["Moonblast"], ["Diamond Storm"]] + }, + { + "species": "Diancie", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Rest"], ["Sleep Talk"], ["Moonblast"]] + }, + { + "species": "Diancie", + "item": "Life Orb", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 0}, + "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0}, + "nature": "Quiet", + "moves": [["Trick Room"], ["Moonblast"], ["Earth Power"], ["Psychic", "Diamond Storm", "Explosion"]] + } + ] + }, + "manectric": { + "flags": {}, + "sets": [ + { + "species": "Manectric", + "item": "Life Orb", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Flamethrower", "Overheat"], ["Hidden Power Ice"]] + }, + { + "species": "Manectric", + "item": "Choice Scarf", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Hidden Power Ice"], ["Overheat", "Switcheroo"]] + } + ] + }, + "hoopa": { + "flags": {}, + "sets": [ + { + "species": "Hoopa", + "item": "Life Orb", + "ability": "Magician", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute", "Nasty Plot"], ["Shadow Ball"], ["Psyshock"], ["Focus Blast"]] + }, + { + "species": "Hoopa", + "item": "Life Orb", + "ability": "Magician", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Mild", + "moves": [["Knock Off"], ["Shadow Ball"], ["Psyshock"], ["Focus Blast"]] + }, + { + "species": "Hoopa", + "item": "Leftovers", + "ability": "Magician", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Nasty Plot"], ["Shadow Ball"], ["Focus Blast"]] + } + ] + }, + "banette": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Banette", + "item": "Banettite", + "ability": "Insomnia", + "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84}, + "nature": "Adamant", + "moves": [["Destiny Bond", "Gunk Shot"], ["Knock Off"], ["Sucker Punch"], ["Will-O-Wisp", "Taunt", "Thunder Wave"]] + } + ] + }, + "jellicent": { + "flags": {}, + "sets": [ + { + "species": "Jellicent", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 252, "atk": 0, "def": 212, "spa": 0, "spd": 0, "spe": 44}, + "nature": "Bold", + "moves": [["Scald", "Hex"], ["Will-O-Wisp"], ["Recover"], ["Taunt"]] + } + ] + }, + "sigilyph": { + "flags": {}, + "sets": [ + { + "species": "Sigilyph", + "item": "Life Orb", + "ability": "Magic Guard", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Air Slash"], ["Heat Wave"], ["Roost"], ["Psychic"]] + }, + { + "species": "Sigilyph", + "item": "Flame Orb", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Roost"], ["Psycho Shift"], ["Air Slash"]] + } + ] + }, + "gastrodon": { + "flags": {}, + "sets": [ + { + "species": "Gastrodon", + "item": "Leftovers", + "ability": "Storm Drain", + "evs": {"hp": 252, "atk": 0, "def": 244, "spa": 0, "spd": 0, "spe": 12}, + "nature": "Bold", + "moves": [["Scald"], ["Recover"], ["Toxic"], ["Earth Power"]] + } + ] + }, + "delphox": { + "flags": {}, + "sets": [ + { + "species": "Delphox", + "item": "Choice Scarf", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Psyshock"], ["Dazzling Gleam"], ["Trick", "Overheat"]] + }, + { + "species": "Delphox", + "item": "Choice Specs", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Psychic"], ["Grass Knot"], ["Flamethrower"]] + }, + { + "species": "Delphox", + "item": "Choice Specs", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Psychic"], ["Grass Knot"], ["Hidden Power Water"]] + }, + { + "species": "Delphox", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Fire Blast"], ["Psychic"], ["Grass Knot"]] + }, + { + "species": "Delphox", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Fire Blast"], ["Psychic"], ["Hidden Power Water"]] + }, + { + "species": "Delphox", + "item": "Leftovers", + "ability": "Blaze", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Calm Mind"], ["Flamethrower"], ["Psyshock"]] + } + ] + }, + "clawitzer": { + "flags": {}, + "sets": [ + { + "species": "Clawitzer", + "item": "Life Orb", + "ability": "Mega Launcher", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Scald"], ["Dark Pulse"], ["Ice Beam"], ["Aura Sphere"]] + } + ] + }, + "rotommow": { + "flags": {}, + "sets": [ + { + "species": "Rotom-Mow", + "item": "Choice Specs", + "ability": "Levitate", + "evs": {"hp": 48, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 208}, + "nature": "Timid", + "moves": [["Leaf Storm"], ["Volt Switch"], ["Thunderbolt"], ["Trick"]] + } + ] + }, + "rotom": { + "flags": {}, + "sets": [ + { + "species": "Rotom", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 124, "atk": 0, "def": 0, "spa": 132, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Will-O-Wisp"], ["Discharge"], ["Hex"]] + } + ] + }, + "hitmontop": { + "flags": {}, + "sets": [ + { + "species": "Hitmontop", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Impish", + "moves": [["Rapid Spin"], ["Close Combat"], ["Foresight"], ["Toxic"]] + } + ] + }, + "braviary": { + "flags": {}, + "sets": [ + { + "species": "Braviary", + "item": "Choice Scarf", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Return"], ["Superpower"], ["U-turn"]], + "happiness": 255 + }, + { + "species": "Braviary", + "item": "Life Orb", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Brave Bird"], ["Return"], ["Superpower"], ["Roost"]], + "happiness": 255 + }, + { + "species": "Braviary", + "item": "Leftovers", + "ability": "Defiant", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 212, "spe": 44}, + "nature": "Careful", + "moves": [["Substitute"], ["Bulk Up"], ["Roost"], ["Brave Bird"]] + } + ] + }, + "registeel": { + "flags": {}, + "sets": [ + { + "species": "Registeel", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Curse"], ["Iron Head"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Registeel", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Seismic Toss"], ["Protect"], ["Thunder Wave", "Toxic"], ["Stealth Rock"]] + } + ] + }, + "omastar": { + "flags": {}, + "sets": [ + { + "species": "Omastar", + "item": "Focus Sash", + "ability": "Weak Armor", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Stealth Rock"], ["Spikes"], ["Scald"], ["Ice Beam"]] + }, + { + "species": "Omastar", + "item": "Choice Specs", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Scald"], ["Hidden Power Grass"]] + } + ] + }, + "magneton": { + "flags": {}, + "sets": [ + { + "species": "Magneton", + "item": "Eviolite", + "ability": "Magnet Pull", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Magnet Rise"], ["Thunderbolt"], ["Flash Cannon"], ["Hidden Power Water"]] + }, + { + "species": "Magneton", + "item": "Choice Specs", + "ability": "Analytic", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Flash Cannon"], ["Hidden Power Grass"]] + }, + { + "species": "Magneton", + "item": "Eviolite", + "ability": "Analytic", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Flash Cannon"], ["Hidden Power Grass"]] + } + ] + }, + "jolteon": { + "flags": {}, + "sets": [ + { + "species": "Jolteon", + "item": "Choice Specs", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Choice Specs", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Water"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Choice Specs", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Grass"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Life Orb", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Life Orb", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Water"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Life Orb", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Grass"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Expert Belt", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Expert Belt", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Water"], ["Volt Switch"]] + }, + { + "species": "Jolteon", + "item": "Expert Belt", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Grass"], ["Volt Switch"]] + } + ] + }, + "golbat": { + "flags": {}, + "sets": [ + { + "species": "Golbat", + "item": "Eviolite", + "ability": "Infiltrator", + "evs": {"hp": 248, "atk": 0, "def": 180, "spa": 0, "spd": 0, "spe": 80}, + "nature": "Impish", + "moves": [["Taunt"], ["Roost"], ["Brave Bird"], ["Super Fang", "Toxic"]] + } + ] + }, + "exploud": { + "flags": {}, + "sets": [ + { + "species": "Exploud", + "item": "Choice Specs", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Boomburst"], ["Fire Blast"], ["Sleep Talk"], ["Focus Blast"]] + }, + { + "species": "Exploud", + "item": "Life Orb", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Boomburst"], ["Fire Blast"], ["Surf"], ["Focus Blast"]] + } + ] + }, + "eelektross": { + "flags": {}, + "sets": [ + { + "species": "Eelektross", + "item": "Assault Vest", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 0}, + "nature": "Modest", + "moves": [["Volt Switch"], ["Giga Drain"], ["Flamethrower"], ["Knock Off"]] + } + ] + }, + "druddigon": { + "flags": {}, + "sets": [ + { + "species": "Druddigon", + "item": "Rocky Helmet", + "ability": "Rough Skin", + "evs": {"hp": 236, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 20}, + "nature": "Impish", + "moves": [["Dragon Tail"], ["Stealth Rock"], ["Fire Punch"], ["Glare", "Gunk Shot"]] + }, + { + "species": "Druddigon", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 236, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 20}, + "nature": "Adamant", + "moves": [["Outrage", "Dragon Claw"], ["Sucker Punch"], ["Fire Punch"], ["Gunk Shot"]] + } + ] + }, + "accelgor": { + "flags": {}, + "sets": [ + { + "species": "Accelgor", + "item": "Focus Sash", + "ability": "Sticky Hold", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Spikes"], ["Final Gambit"], ["Encore"], ["Bug Buzz"]] + }, + { + "species": "Accelgor", + "item": "Life Orb", + "ability": "Sticky Hold", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Bug Buzz"], ["Focus Blast"], ["Spikes"], ["Sludge Bomb"]] + }, + { + "species": "Accelgor", + "item": "Life Orb", + "ability": "Sticky Hold", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Bug Buzz"], ["Focus Blast"], ["Spikes"], ["Hidden Power Ice"]] + } + ] + }, + "spiritomb": { + "flags": {}, + "sets": [ + { + "species": "Spiritomb", + "item": "Leftovers", + "ability": "Infiltrator", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Dark Pulse"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Spiritomb", + "item": "Leftovers", + "ability": "Infiltrator", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Impish", + "moves": [["Will-O-Wisp"], ["Foul Play"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Spiritomb", + "item": "Black Glasses", + "ability": "Infiltrator", + "evs": {"hp": 212, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 44}, + "nature": "Adamant", + "moves": [["Sucker Punch"], ["Pursuit"], ["Will-O-Wisp"], ["Foul Play", "Taunt"]] + } + ] + }, + "drapion": { + "flags": {}, + "sets": [ + { + "species": "Drapion", + "item": "Black Sludge", + "ability": "Battle Armor", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 216, "spe": 44}, + "nature": "Careful", + "moves": [["Knock Off"], ["Taunt"], ["Toxic Spikes"], ["Poison Jab"]] + }, + { + "species": "Drapion", + "item": "Shuca Berry", + "ability": "Battle Armor", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Knock Off"], ["Pursuit"], ["Poison Jab"]] + }, + { + "species": "Drapion", + "item": "Shuca Berry", + "ability": "Battle Armor", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Knock Off"], ["Aqua Tail"], ["Poison Jab"]] + } + ] + }, + "camerupt": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Camerupt", + "item": "Cameruptite", + "ability": "Solid Rock", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Fire Blast", "Flamethrower"], ["Earth Power"], ["Hidden Power Ice"], ["Toxic"]] + } + ] + }, + "bronzong": { + "flags": {}, + "sets": [ + { + "species": "Bronzong", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Brave", + "moves": [["Trick Room"], ["Stealth Rock"], ["Earthquake"], ["Explosion"]] + }, + { + "species": "Bronzong", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Sassy", + "moves": [["Hidden Power Fire"], ["Gyro Ball"], ["Earthquake"], ["Toxic"]] + }, + { + "species": "Bronzong", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Sassy", + "moves": [["Stealth Rock"], ["Gyro Ball"], ["Psywave"], ["Toxic"]] + } + ] + }, + "rhyperior": { + "flags": {}, + "sets": [ + { + "species": "Rhyperior", + "item": "Choice Band", + "ability": "Solid Rock", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Earthquake"], ["Stone Edge"], ["Ice Punch"], ["Megahorn"]] + }, + { + "species": "Rhyperior", + "item": "Life Orb", + "ability": "Solid Rock", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Rock Polish"], ["Earthquake"], ["Stone Edge"], ["Ice Punch", "Swords Dance"]] + }, + { + "species": "Rhyperior", + "item": "Leftovers", + "ability": "Solid Rock", + "evs": {"hp": 248, "atk": 16, "def": 0, "spa": 0, "spd": 244, "spe": 0}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Ice Punch", "Megahorn"]] + } + ] + }, + "hitmonlee": { + "flags": {}, + "sets": [ + { + "species": "Hitmonlee", + "item": "Choice Scarf", + "ability": "Reckless", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["High Jump Kick"], ["Knock Off"], ["Rapid Spin"], ["Close Combat"]] + }, + { + "species": "Hitmonlee", + "item": "Life Orb", + "ability": "Reckless", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["High Jump Kick"], ["Knock Off"], ["Mach Punch"], ["Rapid Spin"]] + }, + { + "species": "Hitmonlee", + "item": "Liechi Berry", + "ability": "Unburden", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Endure"], ["Reversal"], ["Knock Off"], ["Mach Punch"]] + } + ] + }, + "glalie": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Glalie", + "item": "Glalitite", + "ability": "Inner Focus", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Spikes"], ["Double-Edge"], ["Explosion"], ["Ice Shard"]] + }, + { + "species": "Glalie", + "item": "Glalitite", + "ability": "Inner Focus", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Double-Edge"], ["Freeze-Dry"], ["Earthquake"], ["Explosion"]] + } + ] + }, + "fletchinder": { + "flags": {}, + "sets": [ + { + "species": "Fletchinder", + "ability": "Gale Wings", + "evs": {"hp": 160, "atk": 252, "def": 72, "spa": 0, "spd": 24, "spe": 0}, + "nature": "Adamant", + "moves": [["Acrobatics"], ["Swords Dance"], ["Will-O-Wisp"], ["Roost"]] + } + ] + }, + "escavalier": { + "flags": {}, + "sets": [ + { + "species": "Escavalier", + "item": "Assault Vest", + "ability": "Overcoat", + "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84}, + "nature": "Adamant", + "moves": [["Megahorn"], ["Iron Head"], ["Knock Off"], ["Drill Run", "Pursuit"]] + }, + { + "species": "Escavalier", + "item": "Choice Band", + "ability": "Overcoat", + "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84}, + "nature": "Adamant", + "moves": [["Megahorn"], ["Iron Head"], ["Knock Off"], ["Drill Run"]] + } + ] + }, + "aromatisse": { + "flags": {}, + "sets": [ + { + "species": "Aromatisse", + "item": "Leftovers", + "ability": "Aroma Veil", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Wish"], ["Protect"], ["Moonblast"], ["Aromatherapy"]] + } + ] + }, + "meloetta": { + "flags": {}, + "sets": [ + { + "species": "Meloetta", + "item": "Assault Vest", + "ability": "Serene Grace", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Psyshock"], ["Hyper Voice"], ["Focus Blast"], ["Shadow Ball", "Grass Knot", "Dazzling Gleam"]] + }, + { + "species": "Meloetta", + "item": "Choice Scarf", + "ability": "Serene Grace", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Hyper Voice"], ["Psyshock"], ["Focus Blast"], ["Dazzling Gleam", "Shadow Ball", "Trick", "U-turn"]] + }, + { + "species": "Meloetta", + "item": "Choice Specs", + "ability": "Serene Grace", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Hyper Voice"], ["Psychic"], ["Focus Blast"], ["U-turn", "Dazzling Gleam", "Shadow Ball"]] + }, + { + "species": "Meloetta", + "item": "Life Orb", + "ability": "Serene Grace", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Relic Song"], ["Return"], ["Close Combat"], ["Knock Off"]], + "happiness": 255 + }, + { + "species": "Meloetta", + "item": "Colbur Berry", + "ability": "Serene Grace", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Hyper Voice", "Psychic"], ["Shadow Ball"], ["Focus Blast"]] + }, + { + "species": "Meloetta", + "item": "Leftovers", + "ability": "Serene Grace", + "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Perish Song"], ["Knock Off"], ["Heal Bell"], ["Thunder Wave"]] + }, + { + "species": "Meloetta", + "item": "Leftovers", + "ability": "Serene Grace", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Modest", + "moves": [["Substitute"], ["Calm Mind"], ["Hyper Voice"], ["Shadow Ball"]] + } + ] + }, + "alomomola": { + "flags": {}, + "sets": [ + { + "species": "Alomomola", + "item": "Leftovers", + "ability": "Regenerator", + "evs": {"hp": 120, "atk": 0, "def": 136, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Scald"], ["Wish"], ["Protect"], ["Toxic"]] + } + ] + }, + "emboar": { + "flags": {}, + "sets": [ + { + "species": "Emboar", + "item": "Choice Band", + "ability": "Reckless", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Flare Blitz"], ["Superpower"], ["Wild Charge"], ["Sucker Punch"]] + }, + { + "species": "Emboar", + "item": "Expert Belt", + "ability": "Reckless", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Flare Blitz"], ["Superpower"], ["Wild Charge"], ["Sucker Punch"]] + }, + { + "species": "Emboar", + "item": "Choice Scarf", + "ability": "Reckless", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Superpower"], ["Wild Charge"], ["Toxic"]] + } + ] + }, + "seismitoad": { + "flags": {}, + "sets": [ + { + "species": "Seismitoad", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 200, "atk": 0, "def": 252, "spa": 0, "spd": 56, "spe": 0}, + "nature": "Relaxed", + "moves": [["Stealth Rock"], ["Scald"], ["Earthquake"], ["Knock Off"]] + }, + { + "species": "Seismitoad", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Rain Dance"], ["Hydro Pump"], ["Earth Power"], ["Sludge Bomb"]] + }, + { + "species": "Seismitoad", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 164, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 92}, + "nature": "Modest", + "moves": [["Stealth Rock"], ["Hydro Pump"], ["Earth Power"], ["Grass Knot"]] + } + ] + }, + "qwilfish": { + "flags": {}, + "sets": [ + { + "species": "Qwilfish", + "item": "Black Sludge", + "ability": "Intimidate", + "evs": {"hp": 252, "atk": 0, "def": 232, "spa": 0, "spd": 0, "spe": 24}, + "nature": "Bold", + "moves": [["Spikes"], ["Pain Split"], ["Scald"], ["Taunt"]] + }, + { + "species": "Qwilfish", + "item": "Focus Sash", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Spikes"], ["Taunt"], ["Toxic Spikes"], ["Explosion"]] + } + ] + }, + "granbull": { + "flags": {}, + "sets": [ + { + "species": "Granbull", + "item": "Leftovers", + "ability": "Intimidate", + "evs": {"hp": 252, "atk": 0, "def": 232, "spa": 0, "spd": 0, "spe": 24}, + "nature": "Impish", + "moves": [["Play Rough"], ["Earthquake"], ["Heal Bell"], ["Roar"]] + }, + { + "species": "Granbull", + "item": "Choice Band", + "ability": "Intimidate", + "evs": {"hp": 212, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 44}, + "nature": "Adamant", + "moves": [["Play Rough"], ["Fire Punch"], ["Thunder Punch"], ["Close Combat"]] + } + ] + }, + "medicham": { + "flags": {}, + "sets": [ + { + "species": "Medicham", + "item": "Life Orb", + "ability": "Pure Power", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["High Jump Kick"], ["Zen Headbutt"], ["Thunder Punch"], ["Drain Punch"]] + }, + { + "species": "Medicham", + "item": "Choice Scarf", + "ability": "Pure Power", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["High Jump Kick"], ["Zen Headbutt"], ["Rock Slide", "Poison Jab"], ["Drain Punch", "Trick"]] + } + ] + }, + "smeargle": { + "flags": {}, + "sets": [ + { + "species": "Smeargle", + "item": "Focus Sash", + "ability": "Own Tempo", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Spore", "Dark Void"], ["Sticky Web"], ["Stealth Rock"], ["Explosion"]] + } + ] + }, + "absol": { + "flags": {}, + "sets": [ + { + "species": "Absol", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Knock Off"], ["Superpower"], ["Sucker Punch"], ["Iron Tail", "Pursuit"]] + }, + { + "species": "Absol", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Knock Off"], ["Superpower"], ["Sucker Punch"], ["Swords Dance"]] + } + ] + }, + "aerodactyl": { + "flags": {}, + "sets": [ + { + "species": "Aerodactyl", + "item": "Life Orb", + "ability": "Unnerve", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Stone Edge"], ["Fire Fang", "Earthquake"], ["Aerial Ace"], ["Roost"]] + } + ] + }, + "aggron": { + "flags": {}, + "sets": [ + { + "species": "Aggron", + "item": "Choice Band", + "ability": "Rock Head", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Head Smash"], ["Heavy Slam"], ["Sleep Talk", "Fire Punch"], ["Low Kick"]] + } + ] + }, + "blastoise": { + "flags": {}, + "sets": [ + { + "species": "Blastoise", + "item": "Leftovers", + "ability": "Torrent", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Bold", + "moves": [["Scald"], ["Rapid Spin"], ["Toxic"], ["Foresight", "Refresh"]] + } + ] + }, + "slowking": { + "flags": {}, + "sets": [ + { + "species": "Slowking", + "item": "Leftovers", + "ability": "Regenerator", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Bold", + "moves": [["Scald"], ["Psyshock"], ["Calm Mind", "Thunder Wave"], ["Slack Off"]] + }, + { + "species": "Slowking", + "item": "Choice Specs", + "ability": "Regenerator", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8}, + "nature": "Modest", + "moves": [["Scald"], ["Psyshock"], ["Fire Blast"], ["Trick"]] + }, + { + "species": "Slowking", + "item": "Colbur Berry", + "ability": "Regenerator", + "evs": {"hp": 160, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 96}, + "nature": "Bold", + "moves": [["Scald"], ["Psyshock"], ["Fire Blast"], ["Thunder Wave"]] + } + ] + }, + "abomasnow": { + "flags": {}, + "sets": [ + { + "species": "Abomasnow", + "item": "Life Orb", + "ability": "Snow Warning", + "evs": {"hp": 0, "atk": 132, "def": 0, "spa": 252, "spd": 0, "spe": 124}, + "nature": "Mild", + "moves": [["Blizzard"], ["Giga Drain"], ["Ice Shard"], ["Focus Blast"]] + } + ] + }, + "flygon": { + "flags": {}, + "sets": [ + { + "species": "Flygon", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Earth Power"], ["Roost"], ["Fire Blast"]] + }, + { + "species": "Flygon", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Draco Meteor"], ["Earth Power"], ["Roost"], ["Defog"]] + }, + { + "species": "Flygon", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 116, "spa": 0, "spd": 116, "spe": 24}, + "nature": "Careful", + "moves": [["Defog"], ["Roost"], ["Earthquake"], ["U-turn"]] + }, + { + "species": "Flygon", + "item": "Choice Band", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Outrage"], ["Earthquake"], ["U-turn"], ["Iron Tail"]] + } + ] + }, + "scrafty": { + "flags": {}, + "sets": [ + { + "species": "Scrafty", + "item": "Choice Band", + "ability": "Intimidate", + "evs": {"hp": 152, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 104}, + "nature": "Adamant", + "moves": [["Knock Off"], ["High Jump Kick"], ["Drain Punch"], ["Poison Jab"]] + }, + { + "species": "Scrafty", + "item": "Chople Berry", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Knock Off"], ["High Jump Kick"], ["Poison Jab", "Iron Head"], ["Dragon Dance"]] + }, + { + "species": "Scrafty", + "item": "Coba Berry", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Knock Off"], ["High Jump Kick"], ["Head Smash"], ["Dragon Dance"]] + } + ] + }, + "houndoom": { + "flags": {}, + "sets": [ + { + "species": "Houndoom", + "item": "Life Orb", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Fire Blast"], ["Dark Pulse"], ["Sucker Punch"], ["Nasty Plot"]] + }, + { + "species": "Houndoom", + "item": "Life Orb", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 220, "def": 0, "spa": 36, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Fire Blast"], ["Crunch"], ["Sucker Punch"], ["Pursuit"]] + } + ] + }, + "togetic": { + "flags": {}, + "sets": [ + { + "species": "Togetic", + "item": "Eviolite", + "ability": "Serene Grace", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Bold", + "moves": [["Dazzling Gleam"], ["Roost"], ["Flamethrower"], ["Thunder Wave"]] + } + ] + }, + "gallade": { + "flags": {}, + "sets": [ + { + "species": "Gallade", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Zen Headbutt"], ["Knock Off"], ["Swords Dance"]] + }, + { + "species": "Gallade", + "item": "Choice Band", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Zen Headbutt"], ["Knock Off"], ["Drain Punch"]] + } + ] + }, + "virizion": { + "flags": {}, + "sets": [ + { + "species": "Virizion", + "item": "Lum Berry", + "ability": "Justified", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Leaf Blade"], ["Close Combat"], ["Stone Edge", "Zen Headbutt"], ["Swords Dance"]] + }, + { + "species": "Virizion", + "item": "Life Orb", + "ability": "Justified", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Giga Drain"], ["Focus Blast"], ["Hidden Power Ice"], ["Calm Mind"]] + }, + { + "species": "Virizion", + "item": "Leftovers", + "ability": "Justified", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Giga Drain"], ["Focus Blast"], ["Substitute"], ["Calm Mind"]] + } + ] + }, + "uxie": { + "flags": {}, + "sets": [ + { + "species": "Uxie", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 64, "spa": 0, "spd": 0, "spe": 192}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Psyshock"], ["Thunder Wave"], ["U-turn"]] + } + ] + }, + "sneasel": { + "flags": {}, + "sets": [ + { + "species": "Sneasel", + "item": "Life Orb", + "ability": "Pickpocket", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Knock Off"], ["Icicle Crash"], ["Ice Shard"], ["Low Kick", "Pursuit"]] + } + ] + }, + "samurott": { + "flags": {}, + "sets": [ + { + "species": "Samurott", + "item": "Lum Berry", + "ability": "Shell Armor", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Waterfall"], ["Megahorn"], ["Aqua Jet"]] + } + ] + }, + "gurdurr": { + "flags": {}, + "sets": [ + { + "species": "Gurdurr", + "item": "Eviolite", + "ability": "Guts", + "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Adamant", + "moves": [["Bulk Up"], ["Drain Punch"], ["Knock Off"], ["Mach Punch"]] + } + ] + }, + "poliwrath": { + "flags": {}, + "sets": [ + { + "species": "Poliwrath", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Relaxed", + "moves": [["Scald"], ["Circle Throw"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Poliwrath", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8}, + "nature": "Modest", + "moves": [["Hydro Pump", "Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]] + }, + { + "species": "Poliwrath", + "item": "Life Orb", + "ability": "Water Absorb", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8}, + "nature": "Modest", + "moves": [["Hydro Pump", "Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]] + }, + { + "species": "Poliwrath", + "item": "Choice Specs", + "ability": "Water Absorb", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8}, + "nature": "Modest", + "moves": [["Hydro Pump", "Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]] + } + ] + }, + "vivillon": { + "flags": {}, + "sets": [ + { + "species": "Vivillon", + "item": "Leftovers", + "ability": "Compound Eyes", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Sleep Powder"], ["Quiver Dance"], ["Hurricane"], ["Substitute"]] + } + ] + }, + "audino": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Audino", + "item": "Audinite", + "ability": "Regenerator", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8}, + "nature": "Modest", + "moves": [["Dazzling Gleam"], ["Fire Blast"], ["Surf"], ["Healing Wish"]] + } + ] + }, + "mesprit": { + "flags": {}, + "sets": [ + { + "species": "Mesprit", + "item": "Colbur Berry", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Dazzling Gleam", "Ice Beam"], ["Stealth Rock"], ["Healing Wish"]] + } + ] + }, + "archeops": { + "flags": {}, + "sets": [ + { + "species": "Archeops", + "item": "Focus Sash", + "ability": "Defeatist", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Stealth Rock"], ["Taunt"], ["Endeavor"], ["Head Smash"]] + } + ] + }, + "malamar": { + "flags": {}, + "sets": [ + { + "species": "Malamar", + "item": "Leftovers", + "ability": "Contrary", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 108, "spe": 152}, + "nature": "Jolly", + "moves": [["Superpower"], ["Knock Off"], ["Rest"], ["Sleep Talk"]] + } + ] + }, + "roselia": { + "flags": {}, + "sets": [ + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 248, "atk": 0, "def": 172, "spa": 0, "spd": 88, "spe": 0}, + "nature": "Calm", + "moves": [["Spikes"], ["Synthesis"], ["Giga Drain"], ["Sludge Bomb"]] + } + ] + }, + "piloswine": { + "flags": {}, + "sets": [ + { + "species": "Piloswine", + "item": "Eviolite", + "ability": "Thick Fat", + "evs": {"hp": 240, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Ice Shard"], ["Earthquake"], ["Icicle Crash"]] + } + ] + }, + "sawk": { + "flags": {}, + "sets": [ + { + "species": "Sawk", + "item": "Choice Band", + "ability": "Sturdy", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Knock Off"], ["Zen Headbutt"], ["Stone Edge"]] + }, + { + "species": "Sawk", + "item": "Expert Belt", + "ability": "Mold Breaker", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Knock Off"], ["Stone Edge"], ["Zen Headbutt"]] + }, + { + "species": "Sawk", + "item": "Lum Berry", + "ability": "Mold Breaker", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Knock Off"], ["Earthquake"], ["Stone Edge"]] + }, + { + "species": "Sawk", + "item": "Choice Scarf", + "ability": "Sturdy", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Knock Off"], ["Stone Edge"], ["Zen Headbutt"]] + } + ] + } + }, + "NU": { + "dodrio": { + "flags": {}, + "sets": [ + { + "species": "Dodrio", + "item": "Choice Band", + "ability": "Early Bird", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Return"], ["Knock Off"], ["Quick Attack"]], + "happiness": 255 + } + ] + }, + "chatot": { + "flags": {}, + "sets": [ + { + "species": "Chatot", + "item": "Choice Scarf", + "ability": "Keen Eye", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Boomburst"], ["Chatter"], ["U-turn"], ["Hidden Power Grass"]] + }, + { + "species": "Chatot", + "item": "Choice Specs", + "ability": "Keen Eye", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Boomburst"], ["Chatter"], ["U-turn"], ["Hidden Power Grass"]] + }, + { + "species": "Chatot", + "item": "Leftovers", + "ability": "Tangled Feet", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Boomburst"], ["Chatter"], ["Nasty Plot"], ["Encore"]] + } + ] + }, + "carracosta": { + "flags": {}, + "sets": [ + { + "species": "Carracosta", + "item": "Life Orb", + "ability": "Solid Rock", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Shell Smash"], ["Waterfall"], ["Stone Edge"], ["Aqua Jet"]] + }, + { + "species": "Carracosta", + "item": "Leftovers", + "ability": "Solid Rock", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Relaxed", + "moves": [["Stealth Rock"], ["Scald"], ["Rock Slide"], ["Knock Off", "Toxic"]] + }, + { + "species": "Carracosta", + "item": "Life Orb", + "ability": "Solid Rock", + "evs": {"hp": 0, "atk": 28, "def": 0, "spa": 228, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Shell Smash"], ["Hydro Pump"], ["Stone Edge"], ["Ice Beam"]] + } + ] + }, + "beheeyem": { + "flags": {}, + "sets": [ + { + "species": "Beheeyem", + "item": "Life Orb", + "ability": "Analytic", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 252, "spd": 0, "spe": 0}, + "nature": "Quiet", + "moves": [["Trick Room"], ["Psychic"], ["Thunderbolt"], ["Hidden Power Fighting"]] + }, + { + "species": "Beheeyem", + "item": "Choice Specs", + "ability": "Analytic", + "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 124}, + "nature": "Modest", + "moves": [["Psychic", "Psyshock"], ["Signal Beam"], ["Hidden Power Ground"], ["Trick", "Thunderbolt"]] + } + ] + }, + "basculin": { + "flags": {}, + "sets": [ + { + "species": "Basculin", + "item": "Choice Band", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Waterfall"], ["Aqua Jet"], ["Zen Headbutt"], ["Superpower"]] + }, + { + "species": "Basculin", + "item": "Splash Plate", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Aqua Jet"], ["Double-Edge"], ["Superpower"]] + } + ] + }, + "barbaracle": { + "flags": {}, + "sets": [ + { + "species": "Barbaracle", + "item": "Shuca Berry", + "ability": "Tough Claws", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Shell Smash"], ["Razor Shell"], ["Return"], ["Earthquake", "Substitute"]], + "happiness": 255 + } + ] + }, + "aurorus": { + "flags": {}, + "sets": [ + { + "species": "Aurorus", + "item": "Choice Specs", + "ability": "Refrigerate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Hyper Voice"], ["Freeze-Dry"], ["Psychic", "Frost Breath"], ["Earth Power"]] + }, + { + "species": "Aurorus", + "item": "Focus Sash", + "ability": "Snow Warning", + "evs": {"hp": 0, "atk": 32, "def": 0, "spa": 224, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Stealth Rock"], ["Blizzard"], ["Freeze-Dry"], ["Rock Tomb"]] + } + ] + }, + "articuno": { + "flags": {}, + "sets": [ + { + "species": "Articuno", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Ice Beam"], ["Roost"], ["Hurricane"], ["Freeze-Dry"]] + }, + { + "species": "Articuno", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Hidden Power Fire"], ["Roost"], ["Hurricane"], ["Freeze-Dry"]] + }, + { + "species": "Articuno", + "item": "Leftovers", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Roost"], ["Hurricane"], ["Freeze-Dry"]] + } + ] + }, + "zangoose": { + "flags": {}, + "sets": [ + { + "species": "Zangoose", + "item": "Toxic Orb", + "ability": "Toxic Boost", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Facade"], ["Knock Off"], ["Quick Attack"], ["Close Combat"]] + } + ] + }, + "xatu": { + "flags": {}, + "sets": [ + { + "species": "Xatu", + "item": "Colbur Berry", + "ability": "Magic Bounce", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Timid", + "moves": [["Psychic", "Psyshock"], ["Roost"], ["Heat Wave"], ["U-turn", "Thunder Wave"]] + }, + { + "species": "Xatu", + "item": "Leftovers", + "ability": "Magic Bounce", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Timid", + "moves": [["Calm Mind"], ["Roost"], ["Psyshock"], ["Heat Wave", "Signal Beam"]] + }, + { + "species": "Xatu", + "item": "Life Orb", + "ability": "Magic Bounce", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic", "Psyshock"], ["Grass Knot"], ["Heat Wave"], ["Roost"]] + } + ] + }, + "weezing": { + "flags": {}, + "sets": [ + { + "species": "Weezing", + "item": "Black Sludge", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 0, "spd": 0, "spe": 108}, + "nature": "Bold", + "moves": [["Will-O-Wisp"], ["Sludge Bomb"], ["Taunt"], ["Pain Split"]] + }, + { + "species": "Weezing", + "item": "Black Sludge", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 0, "spd": 0, "spe": 108}, + "nature": "Bold", + "moves": [["Will-O-Wisp"], ["Sludge Bomb"], ["Taunt"], ["Toxic Spikes"]] + } + ] + }, + "vivillon": { + "flags": {}, + "sets": [ + { + "species": "Vivillon", + "item": "Leftovers", + "ability": "Compound Eyes", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Quiver Dance"], ["Sleep Powder"], ["Hurricane"], ["Substitute"]] + }, + { + "species": "Vivillon", + "item": "Focus Sash", + "ability": "Compound Eyes", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Sleep Powder"], ["Quiver Dance"], ["Hurricane"], ["Energy Ball"]] + } + ] + }, + "vileplume": { + "flags": {}, + "sets": [ + { + "species": "Vileplume", + "item": "Black Sludge", + "ability": "Effect Spore", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0}, + "nature": "Bold", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Aromatherapy", "Sleep Powder"]] + }, + { + "species": "Vileplume", + "item": "Black Sludge", + "ability": "Effect Spore", + "evs": {"hp": 112, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 144}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fire"], ["Synthesis"]] + }, + { + "species": "Vileplume", + "item": "Black Sludge", + "ability": "Effect Spore", + "evs": {"hp": 112, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 144}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Ground"], ["Synthesis"]] + } + ] + }, + "swellow": { + "flags": {}, + "sets": [ + { + "species": "Swellow", + "item": "Choice Specs", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Boomburst"], ["U-turn"], ["Heat Wave"], ["Sleep Talk"]] + }, + { + "species": "Swellow", + "item": "Choice Specs", + "ability": "Scrappy", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Boomburst"], ["U-turn"], ["Heat Wave"], ["Hidden Power Grass"]] + }, + { + "species": "Swellow", + "item": "Toxic Orb", + "ability": "Guts", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Facade"], ["Brave Bird"], ["U-turn"], ["Quick Attack"]] + } + ] + }, + "sandslash": { + "flags": {}, + "sets": [ + { + "species": "Sandslash", + "item": "Lum Berry", + "ability": "Sand Rush", + "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84}, + "nature": "Adamant", + "moves": [["Rapid Spin"], ["Knock Off"], ["Earthquake"], ["Stealth Rock"]] + } + ] + }, + "samurott": { + "flags": {}, + "sets": [ + { + "species": "Samurott", + "item": "Life Orb", + "ability": "Torrent", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Rash", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Aqua Jet"], ["Megahorn", "Taunt"]] + }, + { + "species": "Samurott", + "item": "Life Orb", + "ability": "Torrent", + "evs": {"hp": 120, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 136}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Waterfall"], ["Aqua Jet"], ["Megahorn"]] + }, + { + "species": "Samurott", + "item": "Lum Berry", + "ability": "Torrent", + "evs": {"hp": 120, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 136}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Waterfall"], ["Aqua Jet"], ["Megahorn"]] + } + ] + }, + "rotomfan": { + "flags": {}, + "sets": [ + { + "species": "Rotom-Fan", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Air Slash"], ["Volt Switch"], ["Trick"], ["Thunderbolt"]] + }, + { + "species": "Rotom-Fan", + "item": "Expert Belt", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Air Slash"], ["Hidden Power Water"], ["Will-O-Wisp"]] + }, + { + "species": "Rotom-Fan", + "item": "Expert Belt", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Air Slash"], ["Hidden Power Grass"], ["Will-O-Wisp"]] + } + ] + }, + "rotom": { + "flags": {}, + "sets": [ + { + "species": "Rotom", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Shadow Ball"], ["Thunderbolt"], ["Trick"]] + }, + { + "species": "Rotom", + "item": "Choice Specs", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Shadow Ball"], ["Thunderbolt"], ["Trick"]] + }, + { + "species": "Rotom", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 108, "spa": 0, "spd": 0, "spe": 148}, + "nature": "Timid", + "moves": [["Will-O-Wisp"], ["Shadow Ball"], ["Volt Switch"], ["Pain Split"]] + }, + { + "species": "Rotom", + "item": "Spell Tag", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Will-O-Wisp"], ["Hex"], ["Volt Switch"], ["Discharge", "Shadow Ball"]] + } + ] + }, + "rhydon": { + "flags": {}, + "sets": [ + { + "species": "Rhydon", + "item": "Eviolite", + "ability": "Lightning Rod", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Earthquake"], ["Stone Edge"], ["Rock Polish"]] + }, + { + "species": "Rhydon", + "item": "Eviolite", + "ability": "Lightning Rod", + "evs": {"hp": 252, "atk": 16, "def": 0, "spa": 0, "spd": 240, "spe": 0}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Megahorn"]] + } + ] + }, + "regirock": { + "flags": {}, + "sets": [ + { + "species": "Regirock", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 44, "def": 16, "spa": 0, "spd": 196, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Stone Edge", "Rock Slide"], ["Thunder Wave", "Toxic"], ["Drain Punch", "Earthquake"]] + } + ] + }, + "pyroar": { + "flags": {}, + "sets": [ + { + "species": "Pyroar", + "item": "Life Orb", + "ability": "Unnerve", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Hyper Voice"], ["Hidden Power Grass"], ["Will-O-Wisp"]] + }, + { + "species": "Pyroar", + "item": "Choice Specs", + "ability": "Unnerve", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Hyper Voice"], ["Hidden Power Grass"], ["Flamethrower", "Overheat"]] + } + ] + }, + "primeape": { + "flags": {}, + "sets": [ + { + "species": "Primeape", + "item": "Choice Band", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Close Combat"], ["U-turn"], ["Stone Edge"], ["Earthquake", "Gunk Shot"]] + }, + { + "species": "Primeape", + "item": "Expert Belt", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Close Combat"], ["U-turn"], ["Stone Edge"], ["Encore"]] + } + ] + }, + "pawniard": { + "flags": {}, + "sets": [ + { + "species": "Pawniard", + "item": "Eviolite", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Knock Off"], ["Iron Head"], ["Sucker Punch"]] + } + ] + }, + "musharna": { + "flags": {}, + "sets": [ + { + "species": "Musharna", + "item": "Leftovers", + "ability": "Synchronize", + "evs": {"hp": 240, "atk": 0, "def": 252, "spa": 0, "spd": 16, "spe": 0}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Psyshock"], ["Heal Bell", "Signal Beam"], ["Moonlight"]] + }, + { + "species": "Musharna", + "item": "Leftovers", + "ability": "Synchronize", + "evs": {"hp": 240, "atk": 0, "def": 252, "spa": 0, "spd": 16, "spe": 0}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Barrier"], ["Moonlight"], ["Stored Power"]] + } + ] + }, + "muk": { + "flags": {}, + "sets": [ + { + "species": "Muk", + "item": "Assault Vest", + "ability": "Poison Touch", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Adamant", + "moves": [["Gunk Shot"], ["Poison Jab"], ["Fire Punch"], ["Ice Punch"]] + }, + { + "species": "Muk", + "item": "Choice Band", + "ability": "Poison Touch", + "evs": {"hp": 220, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 36}, + "nature": "Adamant", + "moves": [["Gunk Shot"], ["Shadow Sneak"], ["Focus Punch"], ["Ice Punch"]] + } + ] + }, + "mismagius": { + "flags": {}, + "sets": [ + { + "species": "Mismagius", + "item": "Colbur Berry", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Taunt"], ["Shadow Ball"], ["Dazzling Gleam"], ["Destiny Bond"]] + }, + { + "species": "Mismagius", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Taunt"], ["Shadow Ball"], ["Dazzling Gleam"], ["Nasty Plot"]] + }, + { + "species": "Mismagius", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Taunt"], ["Will-O-Wisp"], ["Hex"], ["Pain Split"]] + } + ] + }, + "miltank": { + "flags": {}, + "sets": [ + { + "species": "Miltank", + "item": "Leftovers", + "ability": "Scrappy", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Curse"], ["Body Slam"], ["Milk Drink"], ["Heal Bell"]] + }, + { + "species": "Miltank", + "item": "Leftovers", + "ability": "Sap Sipper", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Impish", + "moves": [["Body Slam"], ["Milk Drink"], ["Toxic", "Thunder Wave"], ["Heal Bell"]] + }, + { + "species": "Miltank", + "item": "Leftovers", + "ability": "Sap Sipper", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Impish", + "moves": [["Body Slam"], ["Milk Drink"], ["Toxic", "Thunder Wave"], ["Stealth Rock"]] + } + ] + }, + "mesprit": { + "flags": {}, + "sets": [ + { + "species": "Mesprit", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Psychic", "Psyshock"], ["Signal Beam", "Ice Beam"], ["Energy Ball"], ["Healing Wish", "Calm Mind"]] + }, + { + "species": "Mesprit", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Psychic", "Psyshock"], ["Signal Beam", "Ice Beam"], ["Hidden Power Ground"], ["Healing Wish", "Calm Mind"]] + }, + { + "species": "Mesprit", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Psychic"], ["Ice Beam", "Signal Beam"], ["U-turn"], ["Healing Wish"]] + }, + { + "species": "Mesprit", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Psychic"], ["U-turn"], ["Thunder Wave", "Healing Wish"]] + } + ] + }, + "mantine": { + "flags": {}, + "sets": [ + { + "species": "Mantine", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 16, "spe": 0}, + "nature": "Calm", + "moves": [["Defog"], ["Scald"], ["Air Slash"], ["Toxic"]] + }, + { + "species": "Mantine", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 32, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 224}, + "nature": "Modest", + "moves": [["Air Slash"], ["Hydro Pump"], ["Ice Beam"], ["Rain Dance"]] + } + ] + }, + "malamar": { + "flags": {}, + "sets": [ + { + "species": "Malamar", + "item": "Leftovers", + "ability": "Contrary", + "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Rest"], ["Sleep Talk"], ["Superpower"], ["Knock Off"]] + }, + { + "species": "Malamar", + "item": "Choice Scarf", + "ability": "Contrary", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Superpower"], ["Knock Off"], ["Psycho Cut"], ["Switcheroo"]] + } + ] + }, + "magmortar": { + "flags": {}, + "sets": [ + { + "species": "Magmortar", + "item": "Assault Vest", + "ability": "Vital Spirit", + "evs": {"hp": 64, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 192}, + "nature": "Modest", + "moves": [["Fire Blast"], ["Thunderbolt"], ["Focus Blast"], ["Flame Charge", "Earthquake"]] + }, + { + "species": "Magmortar", + "item": "Assault Vest", + "ability": "Vital Spirit", + "evs": {"hp": 64, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 192}, + "nature": "Modest", + "moves": [["Fire Blast"], ["Thunderbolt"], ["Hidden Power Grass"], ["Flame Charge", "Earthquake"]] + }, + { + "species": "Magmortar", + "item": "Life Orb", + "ability": "Vital Spirit", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Mild", + "moves": [["Fire Blast"], ["Thunderbolt"], ["Earthquake"], ["Focus Blast"]] + }, + { + "species": "Magmortar", + "item": "Life Orb", + "ability": "Vital Spirit", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Mild", + "moves": [["Fire Blast"], ["Thunderbolt"], ["Earthquake"], ["Hidden Power Grass"]] + } + ] + }, + "ludicolo": { + "flags": {}, + "sets": [ + { + "species": "Ludicolo", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Hydro Pump"], ["Giga Drain"], ["Ice Beam"], ["Rain Dance"]] + } + ] + }, + "lilligant": { + "flags": {}, + "sets": [ + { + "species": "Lilligant", + "item": "Life Orb", + "ability": "Own Tempo", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Quiver Dance"], ["Sleep Powder"], ["Giga Drain"], ["Hidden Power Fire"]] + }, + { + "species": "Lilligant", + "item": "Life Orb", + "ability": "Own Tempo", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Quiver Dance"], ["Sleep Powder"], ["Giga Drain"], ["Hidden Power Ice"]] + }, + { + "species": "Lilligant", + "item": "Choice Scarf", + "ability": "Own Tempo", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Sleep Powder"], ["Leaf Storm"], ["Hidden Power Rock"], ["Healing Wish"]] + } + ] + }, + "liepard": { + "flags": {}, + "sets": [ + { + "species": "Liepard", + "item": "Black Glasses", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Dark Pulse"], ["Copycat"], ["Encore"]] + }, + { + "species": "Liepard", + "item": "Black Glasses", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Knock Off"], ["Encore"], ["Sucker Punch"], ["U-turn"]] + } + ] + }, + "lanturn": { + "flags": {}, + "sets": [ + { + "species": "Lanturn", + "item": "Choice Specs", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 72, "spe": 184}, + "nature": "Modest", + "moves": [["Hydro Pump", "Scald"], ["Volt Switch"], ["Ice Beam", "Signal Beam"], ["Hidden Power Fire"]] + }, + { + "species": "Lanturn", + "item": "Choice Specs", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 72, "spe": 184}, + "nature": "Modest", + "moves": [["Hydro Pump", "Scald"], ["Volt Switch"], ["Ice Beam", "Signal Beam"], ["Hidden Power Grass"]] + }, + { + "species": "Lanturn", + "item": "Leftovers", + "ability": "Volt Absorb", + "evs": {"hp": 40, "atk": 0, "def": 152, "spa": 0, "spd": 208, "spe": 108}, + "nature": "Calm", + "moves": [["Scald"], ["Volt Switch"], ["Heal Bell"], ["Toxic", "Thunder Wave", "Protect"]] + }, + { + "species": "Lanturn", + "item": "Assault Vest", + "ability": "Volt Absorb", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 144, "spe": 112}, + "nature": "Modest", + "moves": [["Scald"], ["Volt Switch"], ["Ice Beam"], ["Hidden Power Fire"]] + } + ] + }, + "klinklang": { + "flags": {}, + "sets": [ + { + "species": "Klinklang", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 92, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 164}, + "nature": "Adamant", + "moves": [["Shift Gear"], ["Gear Grind"], ["Return"], ["Substitute"]], + "happiness": 255 + } + ] + }, + "kangaskhan": { + "flags": {}, + "sets": [ + { + "species": "Kangaskhan", + "gender": "F", + "item": "Silk Scarf", + "ability": "Scrappy", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Fake Out"], ["Double-Edge"], ["Sucker Punch"], ["Earthquake"]] + } + ] + }, + "kabutops": { + "flags": {}, + "sets": [ + { + "species": "Kabutops", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Rapid Spin"], ["Stone Edge"], ["Aqua Jet"], ["Waterfall"]] + }, + { + "species": "Kabutops", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Stone Edge"], ["Aqua Jet"], ["Superpower", "Waterfall"]] + } + ] + }, + "jynx": { + "flags": {}, + "sets": [ + { + "species": "Jynx", + "item": "Choice Scarf", + "ability": "Dry Skin", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Ice Beam"], ["Psychic"], ["Focus Blast"], ["Trick"]] + }, + { + "species": "Jynx", + "item": "Focus Sash", + "ability": "Dry Skin", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Lovely Kiss"], ["Ice Beam"], ["Psychic"], ["Focus Blast", "Nasty Plot"]] + }, + { + "species": "Jynx", + "item": "Life Orb", + "ability": "Dry Skin", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Lovely Kiss"], ["Nasty Plot"], ["Psychic"], ["Ice Beam"]] + } + ] + }, + "hariyama": { + "flags": {}, + "sets": [ + { + "species": "Hariyama", + "item": "Assault Vest", + "ability": "Thick Fat", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Knock Off"], ["Bullet Punch"], ["Fake Out", "Earthquake"]] + }, + { + "species": "Hariyama", + "item": "Choice Band", + "ability": "Guts", + "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Adamant", + "moves": [["Close Combat"], ["Knock Off"], ["Earthquake"], ["Bullet Punch"]] + } + ] + }, + "golurk": { + "flags": {}, + "sets": [ + { + "species": "Golurk", + "item": "Choice Band", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Shadow Punch"], ["Earthquake"], ["Ice Punch"], ["Zen Headbutt", "Thunder Punch"]] + }, + { + "species": "Golurk", + "item": "Colbur Berry", + "ability": "No Guard", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Earthquake"], ["Shadow Punch"], ["Dynamic Punch"]] + }, + { + "species": "Golurk", + "item": "Life Orb", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Rock Polish"], ["Earthquake"], ["Shadow Punch"], ["Ice Punch"]] + } + ] + }, + "garbodor": { + "flags": {}, + "sets": [ + { + "species": "Garbodor", + "item": "Rocky Helmet", + "ability": "Aftermath", + "evs": {"hp": 252, "atk": 0, "def": 160, "spa": 0, "spd": 0, "spe": 96}, + "nature": "Impish", + "moves": [["Spikes"], ["Gunk Shot"], ["Drain Punch"], ["Toxic Spikes"]] + }, + { + "species": "Garbodor", + "item": "Rocky Helmet", + "ability": "Aftermath", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Spikes"], ["Gunk Shot"], ["Drain Punch"], ["Seed Bomb"]] + } + ] + }, + "ferroseed": { + "flags": {}, + "sets": [ + { + "species": "Ferroseed", + "item": "Eviolite", + "ability": "Iron Barbs", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Relaxed", + "moves": [["Spikes"], ["Gyro Ball", "Knock Off"], ["Leech Seed"], ["Protect"]] + }, + { + "species": "Ferroseed", + "item": "Eviolite", + "ability": "Iron Barbs", + "evs": {"hp": 252, "atk": 0, "def": 112, "spa": 0, "spd": 144, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Seed Bomb"], ["Leech Seed"], ["Thunder Wave"]] + } + ] + }, + "exeggutor": { + "flags": {}, + "sets": [ + { + "species": "Exeggutor", + "item": "Life Orb", + "ability": "Chlorophyll", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Psychic"], ["Hidden Power Fire"], ["Sleep Powder"]] + }, + { + "species": "Exeggutor", + "item": "Choice Specs", + "ability": "Chlorophyll", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Psychic"], ["Leaf Storm"], ["Giga Drain"], ["Hidden Power Fire"]] + }, + { + "species": "Exeggutor", + "item": "Lum Berry", + "ability": "Harvest", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 176, "spd": 0, "spe": 84}, + "nature": "Modest", + "moves": [["Sleep Powder"], ["Giga Drain"], ["Psychic"], ["Rest"]] + } + ] + }, + "electivire": { + "flags": {}, + "sets": [ + { + "species": "Electivire", + "item": "Life Orb", + "ability": "Motor Drive", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Wild Charge"], ["Earthquake"], ["Ice Punch"], ["Hidden Power Grass"]] + } + ] + }, + "cryogonal": { + "flags": {}, + "sets": [ + { + "species": "Cryogonal", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Rapid Spin"], ["Freeze-Dry"], ["Frost Breath"], ["Recover"]] + }, + { + "species": "Cryogonal", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Rapid Spin"], ["Freeze-Dry"], ["Hidden Power Ground"], ["Recover"]] + } + ] + }, + "crustle": { + "flags": {}, + "sets": [ + { + "species": "Crustle", + "item": "Custap Berry", + "ability": "Sturdy", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Spikes"], ["Rock Blast"], ["Knock Off"]] + } + ] + }, + "cacturne": { + "flags": {}, + "sets": [ + { + "species": "Cacturne", + "item": "Life Orb", + "ability": "Water Absorb", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Rash", + "moves": [["Dark Pulse"], ["Giga Drain"], ["Sucker Punch"], ["Destiny Bond"]] + } + ] + }, + "audino": { + "flags": { + "megaOnly": 1 + }, + "sets": [ + { + "species": "Audino", + "item": "Audinite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 208, "spa": 48, "spd": 0, "spe": 0}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Dazzling Gleam"], ["Wish"], ["Protect"]] + }, + { + "species": "Audino", + "item": "Audinite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 208, "spa": 48, "spd": 0, "spe": 0}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Dazzling Gleam"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Audino", + "item": "Audinite", + "ability": "Regenerator", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Calm Mind", "Healing Wish"], ["Dazzling Gleam"], ["Fire Blast"], ["Surf", "Thunder Wave", "Psychic"]] + }, + { + "species": "Audino", + "item": "Audinite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 128, "spa": 0, "spd": 128, "spe": 0}, + "nature": "Calm", + "moves": [["Wish"], ["Protect"], ["Heal Bell"], ["Dazzling Gleam"]] + } + ] + }, + "archeops": { + "flags": {}, + "sets": [ + { + "species": "Archeops", + "ability": "Defeatist", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Taunt"], ["Roost"], ["Acrobatics"], ["Earth Power"]] + }, + { + "species": "Archeops", + "ability": "Defeatist", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Taunt"], ["Roost"], ["Acrobatics"], ["Defog"]] + }, + { + "species": "Archeops", + "ability": "Defeatist", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Defog"], ["Roost"], ["Acrobatics"], ["Earth Power"]] + }, + { + "species": "Archeops", + "item": "Focus Sash", + "ability": "Defeatist", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Stealth Rock"], ["Taunt"], ["Endeavor"], ["Head Smash"]] + }, + { + "species": "Archeops", + "ability": "Defeatist", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Acrobatics"], ["Stone Edge"], ["Earth Power"], ["Roost"]] + } + ] + }, + "claydol": { + "flags": {}, + "sets": [ + { + "species": "Claydol", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Rapid Spin"], ["Earth Power"], ["Shadow Ball"], ["Psychic", "Psyshock"]] + } + ] + }, + "tauros": { + "flags": {}, + "sets": [ + { + "species": "Tauros", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Rock Climb"], ["Earthquake"], ["Fire Blast"], ["Iron Tail", "Zen Headbutt"]] + } + ] + }, + "mawile": { + "flags": {}, + "sets": [ + { + "species": "Mawile", + "item": "Life Orb", + "ability": "Sheer Force", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naughty", + "moves": [["Play Rough"], ["Iron Head"], ["Fire Blast"], ["Sucker Punch"]] + } + ] + }, + "scyther": { + "flags": {}, + "sets": [ + { + "species": "Scyther", + "item": "Eviolite", + "ability": "Technician", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Aerial Ace"], ["U-turn"], ["Roost"]] + }, + { + "species": "Scyther", + "item": "Choice Band", + "ability": "Technician", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["U-turn"], ["Aerial Ace"], ["Knock Off", "Pursuit"], ["Quick Attack"]] + }, + { + "species": "Scyther", + "item": "Choice Scarf", + "ability": "Technician", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["U-turn"], ["Aerial Ace"], ["Knock Off"], ["Bug Bite"]] + } + ] + }, + "torterra": { + "flags": {}, + "sets": [ + { + "species": "Torterra", + "item": "Leftovers", + "ability": "Overgrow", + "evs": {"hp": 252, "atk": 128, "def": 128, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Adamant", + "moves": [["Wood Hammer"], ["Earthquake"], ["Stealth Rock"], ["Synthesis"]] + }, + { + "species": "Torterra", + "item": "Soft Sand", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Rock Polish"], ["Wood Hammer"], ["Earthquake"], ["Stone Edge"]] + } + ] + }, + "haunter": { + "flags": {}, + "sets": [ + { + "species": "Haunter", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Shadow Ball"], ["Sludge Bomb"], ["Destiny Bond"], ["Trick"]] + }, + { + "species": "Haunter", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Shadow Ball"], ["Sludge Bomb"], ["Taunt"], ["Destiny Bond", "Will-O-Wisp"]] + }, + { + "species": "Haunter", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Shadow Ball"], ["Sludge Bomb"], ["Substitute"], ["Pain Split"]] + } + ] + }, + "prinplup": { + "flags": {}, + "sets": [ + { + "species": "Prinplup", + "item": "Eviolite", + "ability": "Torrent", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Defog"], ["Scald"], ["Stealth Rock"], ["Toxic"]] + } + ] + }, + "tangela": { + "flags": {}, + "sets": [ + { + "species": "Tangela", + "item": "Eviolite", + "ability": "Regenerator", + "evs": {"hp": 236, "atk": 0, "def": 48, "spa": 224, "spd": 0, "spe": 0}, + "nature": "Modest", + "moves": [["Leaf Storm"], ["Giga Drain", "Ancient Power"], ["Sleep Powder"], ["Hidden Power Fire"]] + }, + { + "species": "Tangela", + "item": "Eviolite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0}, + "nature": "Bold", + "moves": [["Giga Drain"], ["Hidden Power Fire"], ["Sleep Powder"], ["Leech Seed"]] + } + ] + }, + "pelipper": { + "flags": {}, + "sets": [ + { + "species": "Pelipper", + "item": "Leftovers", + "ability": "Keen Eye", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0}, + "nature": "Bold", + "moves": [["Defog"], ["Scald"], ["Roost"], ["U-turn", "Hurricane"]] + } + ] + }, + "piloswine": { + "flags": {}, + "sets": [ + { + "species": "Piloswine", + "item": "Eviolite", + "ability": "Thick Fat", + "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Adamant", + "moves": [["Earthquake"], ["Stealth Rock"], ["Icicle Crash"], ["Ice Shard"]] + } + ] + }, + "poliwrath": { + "flags": {}, + "sets": [ + { + "species": "Poliwrath", + "item": "Choice Specs", + "ability": "Water Absorb", + "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160}, + "nature": "Modest", + "moves": [["Hydro Pump"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]] + }, + { + "species": "Poliwrath", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160}, + "nature": "Modest", + "moves": [["Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]] + } + ] + }, + "shiftry": { + "flags": {}, + "sets": [ + { + "species": "Shiftry", + "item": "Life Orb", + "ability": "Chlorophyll", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Lonely", + "moves": [["Knock Off"], ["Leaf Storm"], ["Sucker Punch"], ["Explosion"]] + }, + { + "species": "Shiftry", + "item": "Life Orb", + "ability": "Chlorophyll", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Lonely", + "moves": [["Knock Off"], ["Leaf Storm"], ["Sucker Punch"], ["Defog"]] + }, + { + "species": "Shiftry", + "item": "Black Glasses", + "ability": "Chlorophyll", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Knock Off"], ["Seed Bomb"], ["Sucker Punch"]] + } + ] + }, + "charizard": { + "flags": {}, + "sets": [ + { + "species": "Charizard", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Air Slash"], ["Focus Blast"], ["Roost"]] + }, + { + "species": "Charizard", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Fire Blast"], ["Air Slash"], ["Hidden Power Grass"], ["Roost"]] + }, + { + "species": "Charizard", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Fire Blast"], ["Air Slash"], ["Earthquake"], ["Roost"]] + }, + { + "species": "Charizard", + "ability": "Blaze", + "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Acrobatics"], ["Roost"], ["Will-O-Wisp"]] + } + ] + }, + "floatzel": { + "flags": {}, + "sets": [ + { + "species": "Floatzel", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Focus Blast"], ["Taunt"]] + } + ] + }, + "abomasnow": { + "flags": {}, + "sets": [ + { + "species": "Abomasnow", + "item": "Life Orb", + "ability": "Snow Warning", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Blizzard"], ["Giga Drain"], ["Earthquake"], ["Ice Shard"]] + }, + { + "species": "Abomasnow", + "item": "Life Orb", + "ability": "Snow Warning", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Ice Shard"], ["Seed Bomb"], ["Earthquake"]] + } + ] + }, + "hitmonchan": { + "flags": {}, + "sets": [ + { + "species": "Hitmonchan", + "item": "Life Orb", + "ability": "Iron Fist", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Drain Punch", "Close Combat"], ["Mach Punch"], ["Ice Punch", "Stone Edge"], ["Rapid Spin"]] + } + ] + }, + "skuntank": { + "flags": {}, + "sets": [ + { + "species": "Skuntank", + "item": "Lum Berry", + "ability": "Aftermath", + "evs": {"hp": 0, "atk": 232, "def": 0, "spa": 0, "spd": 132, "spe": 144}, + "nature": "Adamant", + "moves": [["Sucker Punch"], ["Pursuit"], ["Poison Jab"], ["Taunt"]] + }, + { + "species": "Skuntank", + "item": "Expert Belt", + "ability": "Aftermath", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Dark Pulse"], ["Fire Blast"], ["Hidden Power Grass"], ["Defog"]] + } + ] + }, + "omastar": { + "flags": {}, + "sets": [ + { + "species": "Omastar", + "item": "White Herb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Shell Smash"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"]] + }, + { + "species": "Omastar", + "item": "Leftovers", + "ability": "Shell Armor", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Spikes"], ["Stealth Rock"], ["Scald"], ["Icy Wind"]] + }, + { + "species": "Omastar", + "item": "Leftovers", + "ability": "Shell Armor", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Spikes"], ["Stealth Rock"], ["Scald"], ["Hidden Power Electric"]] + }, + { + "species": "Omastar", + "item": "Focus Sash", + "ability": "Weak Armor", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Stealth Rock"], ["Spikes"], ["Scald"], ["Ice Beam"]] + } + ] + }, + "pinsir": { + "flags": {}, + "sets": [ + { + "species": "Pinsir", + "item": "Life Orb", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["X-Scissor"], ["Earthquake"], ["Stone Edge"]] + }, + { + "species": "Pinsir", + "item": "Choice Band", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["X-Scissor"], ["Earthquake"], ["Stone Edge"], ["Close Combat"]] + }, + { + "species": "Pinsir", + "item": "Focus Sash", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["X-Scissor"], ["Rock Tomb"], ["Earthquake"]] + } + ] + }, + "grumpig": { + "flags": {}, + "sets": [ + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Calm Mind"], ["Psyshock"], ["Focus Blast"], ["Signal Beam"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 160, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic", "Psyshock"], ["Focus Blast"], ["Taunt"], ["Thunder Wave", "Toxic"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Psychic"], ["Heal Bell"], ["Thunder Wave"], ["Whirlwind"]] + } + ] + }, + "sliggoo": { + "flags": {}, + "sets": [ + { + "species": "Sliggoo", + "item": "Eviolite", + "ability": "Sap Sipper", + "evs": {"hp": 252, "atk": 0, "def": 168, "spa": 0, "spd": 88, "spe": 0}, + "nature": "Careful", + "moves": [["Curse"], ["Outrage"], ["Rest"], ["Sleep Talk"]] + }, + { + "species": "Sliggoo", + "item": "Eviolite", + "ability": "Sap Sipper", + "evs": {"hp": 92, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 164}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Sludge Bomb"], ["Muddy Water"], ["Thunderbolt"]] + } + ] + }, + "camerupt": { + "flags": {}, + "sets": [ + { + "species": "Camerupt", + "item": "Leftovers", + "ability": "Solid Rock", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 252, "spe": 0}, + "nature": "Sassy", + "moves": [["Stealth Rock"], ["Lava Plume"], ["Earthquake"], ["Toxic"]] + }, + { + "species": "Camerupt", + "item": "Choice Specs", + "ability": "Solid Rock", + "evs": {"hp": 140, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 116}, + "nature": "Modest", + "moves": [["Fire Blast"], ["Earth Power"], ["Lava Plume"], ["Hidden Power Electric"]] + } + ] + }, + "ninetales": { + "flags": {}, + "sets": [ + { + "species": "Ninetales", + "item": "Life Orb", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Fire Blast"], ["Psyshock"], ["Energy Ball"]] + } + ] + }, + "manectric": { + "flags": {}, + "sets": [ + { + "species": "Manectric", + "item": "Life Orb", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Hidden Power Grass"], ["Overheat"]] + } + ] + }, + "roselia": { + "flags": {}, + "sets": [ + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Spikes"], ["Giga Drain"], ["Synthesis"], ["Sludge Bomb"]] + }, + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 80, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 176}, + "nature": "Modest", + "moves": [["Spikes"], ["Leaf Storm"], ["Sludge Bomb"], ["Sleep Powder"]] + } + ] + }, + "misdreavus": { + "flags": {}, + "sets": [ + { + "species": "Misdreavus", + "item": "Eviolite", + "ability": "Levitate", + "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16}, + "nature": "Bold", + "moves": [["Hex"], ["Will-O-Wisp"], ["Taunt"], ["Pain Split"]] + } + ] + }, + "clefairy": { + "flags": {}, + "sets": [ + { + "species": "Clefairy", + "item": "Eviolite", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Moonblast"], ["Soft-Boiled"], ["Thunder Wave"], ["Healing Wish"]] + }, + { + "species": "Clefairy", + "item": "Eviolite", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Moonblast"], ["Soft-Boiled"], ["Thunder Wave"], ["Stealth Rock"]] + } + ] + } + }, + "PU": { + "prinplup": { + "flags": {}, + "sets": [ + { + "species": "Prinplup", + "item": "Eviolite", + "ability": "Torrent", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Scald"], ["Toxic"], ["Defog"]] + } + ] + }, + "ampharos": { + "flags": {}, + "sets": [ + { + "species": "Ampharos", + "item": "Life Orb", + "ability": "Static", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Agility"], ["Thunderbolt"], ["Focus Blast"], ["Hidden Power Ice"]] + } + ] + }, + "cryogonal": { + "flags": {}, + "sets": [ + { + "species": "Cryogonal", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Freeze-Dry"], ["Hidden Power Fighting"], ["Recover"], ["Rapid Spin"]] + }, + { + "species": "Cryogonal", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 156, "spa": 0, "spd": 104, "spe": 0}, + "nature": "Calm", + "moves": [["Freeze-Dry"], ["Rapid Spin"], ["Recover"], ["Hidden Power Fighting"]] + } + ] + }, + "glalie": { + "flags": {}, + "sets": [ + { + "species": "Glalie", + "item": "Focus Sash", + "ability": "Inner Focus", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Spikes"], ["Taunt"], ["Ice Beam", "Freeze-Dry"], ["Explosion"]] + } + ] + }, + "camerupt": { + "flags": {}, + "sets": [ + { + "species": "Camerupt", + "item": "Leftovers", + "ability": "Solid Rock", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 252, "spe": 0}, + "nature": "Timid", + "moves": [["Stealth Rock"], ["Lava Plume", "Fire Blast"], ["Earth Power"], ["Roar", "Toxic"]] + } + ] + }, + "altaria": { + "flags": {}, + "sets": [ + { + "species": "Altaria", + "item": "Leftovers", + "ability": "Natural Cure", + "evs": {"hp": 116, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 140}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Dragon Claw"], ["Substitute", "Earthquake"], ["Roost"]] + }, + { + "species": "Altaria", + "item": "Life Orb", + "ability": "Natural Cure", + "evs": {"hp": 116, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 140}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Roost"], ["Fire Blast"], ["Toxic"]] + }, + { + "species": "Altaria", + "item": "Life Orb", + "ability": "Natural Cure", + "evs": {"hp": 116, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 140}, + "nature": "Modest", + "moves": [["Draco Meteor"], ["Roost"], ["Fire Blast"], ["Hidden Power Fighting"]] + } + ] + }, + "audino": { + "flags": {}, + "sets": [ + { + "species": "Audino", + "item": "Leftovers", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Knock Off"], ["Wish"], ["Protect"], ["Encore", "Toxic", "Double-Edge", "Thunder Wave"]] + } + ] + }, + "bouffalant": { + "flags": {}, + "sets": [ + { + "species": "Bouffalant", + "item": "Leftovers", + "ability": "Sap Sipper", + "evs": {"hp": 252, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Adamant", + "moves": [["Substitute"], ["Swords Dance"], ["Return"], ["Earthquake"]], + "happiness": 255 + }, + { + "species": "Bouffalant", + "item": "Assault Vest", + "ability": "Sap Sipper", + "evs": {"hp": 252, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Adamant", + "moves": [["Return"], ["Earthquake"], ["Megahorn"], ["Pursuit", "Head Charge"]], + "happiness": 255 + }, + { + "species": "Bouffalant", + "item": "Choice Band", + "ability": "Sap Sipper", + "evs": {"hp": 252, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Adamant", + "moves": [["Head Charge"], ["Earthquake"], ["Megahorn"], ["Pursuit"]] + } + ] + }, + "gorebyss": { + "flags": {}, + "sets": [ + { + "species": "Gorebyss", + "item": "White Herb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Shell Smash"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"]] + } + ] + }, + "pawniard": { + "flags": {}, + "sets": [ + { + "species": "Pawniard", + "item": "Eviolite", + "ability": "Defiant", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Knock Off"], ["Iron Head"], ["Sucker Punch"], ["Swords Dance"]] + } + ] + }, + "gothitelle": { + "flags": {}, + "sets": [ + { + "species": "Gothitelle", + "item": "Leftovers", + "ability": "Competitive", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Mean Look"], ["Rest"], ["Psychic"]] + } + ] + }, + "roselia": { + "flags": {}, + "sets": [ + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 252, "atk": 0, "def": 128, "spa": 0, "spd": 128, "spe": 0}, + "nature": "Calm", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Spikes"]] + }, + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 252, "atk": 0, "def": 128, "spa": 0, "spd": 128, "spe": 0}, + "nature": "Calm", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Toxic Spikes"]] + }, + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fighting"], ["Sleep Powder"]] + }, + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fighting"], ["Spikes"]] + }, + { + "species": "Roselia", + "item": "Eviolite", + "ability": "Natural Cure", + "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220}, + "nature": "Modest", + "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fighting"], ["Toxic Spikes"]] + } + ] + }, + "floatzel": { + "flags": {}, + "sets": [ + { + "species": "Floatzel", + "item": "Choice Specs", + "ability": "Water Veil", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"], ["Surf", "Switcheroo"]] + }, + { + "species": "Floatzel", + "item": "Choice Band", + "ability": "Water Veil", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Waterfall"], ["Ice Punch"], ["Return"], ["Aqua Jet"]], + "happiness": 255 + }, + { + "species": "Floatzel", + "item": "Life Orb", + "ability": "Water Veil", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Ice Punch"], ["Hidden Power Electric"]] + }, + { + "species": "Floatzel", + "item": "Choice Scarf", + "ability": "Water Veil", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Modest", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"], ["Surf", "Switcheroo"]] + } + ] + }, + "stoutland": { + "flags": {}, + "sets": [ + { + "species": "Stoutland", + "item": "Choice Band", + "ability": "Scrappy", + "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Return"], ["Superpower"], ["Facade"], ["Pursuit", "Crunch"]], + "happiness": 255 + } + ] + }, + "dodrio": { + "flags": {}, + "sets": [ + { + "species": "Dodrio", + "item": "Choice Band", + "ability": "Early Bird", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Return"], ["Knock Off"], ["Quick Attack", "Pursuit"]], + "happiness": 255 + }, + { + "species": "Dodrio", + "item": "Choice Scarf", + "ability": "Early Bird", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Return"], ["Knock Off"], ["Pursuit"]], + "happiness": 255 + } + ] + }, + "zebstrika": { + "flags": {}, + "sets": [ + { + "species": "Zebstrika", + "item": "Life Orb", + "ability": "Sap Sipper", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Overheat"], ["Hidden Power Ice"]] + }, + { + "species": "Zebstrika", + "item": "Life Orb", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Volt Switch"], ["Thunderbolt"], ["Overheat"], ["Hidden Power Ice"]] + } + ] + }, + "jumpluff": { + "flags": {}, + "sets": [ + { + "species": "Jumpluff", + "ability": "Infiltrator", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Acrobatics"], ["Sleep Powder"], ["U-turn", "Seed Bomb"], ["Memento"]] + }, + { + "species": "Jumpluff", + "ability": "Infiltrator", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Acrobatics"], ["Sleep Powder"], ["Seed Bomb"], ["Swords Dance"]] + } + ] + }, + "grumpig": { + "flags": {}, + "sets": [ + { + "species": "Grumpig", + "item": "Colbur Berry", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Toxic"]] + }, + { + "species": "Grumpig", + "item": "Colbur Berry", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Shadow Ball"]] + }, + { + "species": "Grumpig", + "item": "Colbur Berry", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Thunder Wave"]] + }, + { + "species": "Grumpig", + "item": "Colbur Berry", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Toxic"]] + }, + { + "species": "Grumpig", + "item": "Colbur Berry", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Shadow Ball"]] + }, + { + "species": "Grumpig", + "item": "Colbur Berry", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Toxic"]] + }, + { + "species": "Grumpig", + "item": "Colbur Berry", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Thunder Wave"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Toxic"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Shadow Ball"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Thunder Wave"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Toxic"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Shadow Ball"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Toxic"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Thunder Wave"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96}, + "nature": "Modest", + "moves": [["Psychic"], ["Focus Blast"], ["Calm Mind"], ["Shadow Ball", "Taunt"]] + }, + { + "species": "Grumpig", + "item": "Leftovers", + "ability": "Thick Fat", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Psychic"], ["Thunder Wave", "Toxic"], ["Focus Blast", "Whirlwind"], ["Protect"]] + } + ] + }, + "stunfisk": { + "flags": {}, + "sets": [ + { + "species": "Stunfisk", + "item": "Leftovers", + "ability": "Static", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Protect"]] + }, + { + "species": "Stunfisk", + "item": "Leftovers", + "ability": "Static", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Hidden Power Bug"]] + }, + { + "species": "Stunfisk", + "item": "Passho Berry", + "ability": "Static", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Toxic"]] + }, + { + "species": "Stunfisk", + "item": "Passho Berry", + "ability": "Static", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Hidden Power Bug"]] + }, + { + "species": "Stunfisk", + "item": "Leftovers", + "ability": "Static", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Protect"]] + }, + { + "species": "Stunfisk", + "item": "Leftovers", + "ability": "Static", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Bold", + "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Hidden Power Bug"]] + } + ] + }, + "rapidash": { + "flags": {}, + "sets": [ + { + "species": "Rapidash", + "item": "Leftovers", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Wild Charge"], ["Will-O-Wisp"], ["Morning Sun"]] + }, + { + "species": "Rapidash", + "item": "Charcoal", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Flare Blitz"], ["Wild Charge"], ["Will-O-Wisp"], ["Morning Sun"]] + } + ] + }, + "tangela": { + "flags": {}, + "sets": [ + { + "species": "Tangela", + "item": "Eviolite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Bold", + "moves": [["Giga Drain"], ["Synthesis"], ["Hidden Power Fire"], ["Sleep Powder", "Knock Off"]] + }, + { + "species": "Tangela", + "item": "Eviolite", + "ability": "Regenerator", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0}, + "nature": "Modest", + "moves": [["Leaf Storm"], ["Giga Drain"], ["Hidden Power Fire"], ["Sleep Powder"]] + } + ] + }, + "simipour": { + "flags": {}, + "sets": [ + { + "species": "Simipour", + "item": "Life Orb", + "ability": "Torrent", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Grass Knot"], ["Knock Off", "Low Kick", "Nasty Plot"]] + }, + { + "species": "Simipour", + "item": "Life Orb", + "ability": "Torrent", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"], ["Knock Off", "Low Kick", "Nasty Plot"]] + }, + { + "species": "Simipour", + "item": "Choice Scarf", + "ability": "Torrent", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Hasty", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Grass Knot"], ["Superpower", "Knock Off"]] + }, + { + "species": "Simipour", + "item": "Salac Berry", + "ability": "Torrent", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Hydro Pump"], ["Ice Beam"], ["Substitute"], ["Nasty Plot"]] + } + ] + }, + "kadabra": { + "flags": {}, + "sets": [ + { + "species": "Kadabra", + "item": "Focus Sash", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Shadow Ball", "Signal Beam"], ["Thunder Wave"], ["Encore"]] + }, + { + "species": "Kadabra", + "item": "Focus Sash", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Hidden Power Fighting"], ["Thunder Wave"], ["Encore"]] + }, + { + "species": "Kadabra", + "item": "Focus Sash", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Shadow Ball"], ["Thunder Wave"], ["Encore"]] + }, + { + "species": "Kadabra", + "item": "Life Orb", + "ability": "Magic Guard", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Psychic"], ["Hidden Power Fighting"], ["Shadow Ball"], ["Substitute", "Encore"]] + } + ] + }, + "raichu": { + "flags": {}, + "sets": [ + { + "species": "Raichu", + "item": "Life Orb", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]] + }, + { + "species": "Raichu", + "item": "Life Orb", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 29, "atk": 0, "def": 30, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Focus Blast"], ["Signal Beam"]] + }, + { + "species": "Raichu", + "item": "Life Orb", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Focus Blast"], ["Hidden Power Ice"]] + }, + { + "species": "Raichu", + "item": "Life Orb", + "ability": "Static", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Signal Beam", "Focus Blast"], ["Surf"]] + }, + { + "species": "Raichu", + "item": "Choice Scarf", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 30, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Signal Beam"], ["Focus Blast"]] + }, + { + "species": "Raichu", + "item": "Choice Scarf", + "ability": "Lightning Rod", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Hidden Power Ice"], ["Focus Blast"]] + } + ] + }, + "regice": { + "flags": {}, + "sets": [ + { + "species": "Regice", + "item": "Life Orb", + "ability": "Clear Body", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Ice Beam"], ["Focus Blast"], ["Thunderbolt"], ["Rock Polish"]] + }, + { + "species": "Regice", + "item": "Leftovers", + "ability": "Clear Body", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Thunder Wave"], ["Ice Beam"], ["Thunderbolt"], ["Focus Blast"]] + } + ] + }, + "relicanth": { + "flags": {}, + "sets": [ + { + "species": "Relicanth", + "item": "Stone Plate", + "ability": "Rock Head", + "evs": {"hp": 104, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 148}, + "nature": "Adamant", + "moves": [["Rock Polish"], ["Head Smash"], ["Waterfall"], ["Earthquake"]] + }, + { + "species": "Relicanth", + "item": "Leftovers", + "ability": "Rock Head", + "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Head Smash"], ["Stealth Rock"], ["Earthquake", "Waterfall"], ["Toxic", "Yawn"]] + }, + { + "species": "Relicanth", + "item": "Leftovers", + "ability": "Rock Head", + "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Head Smash"], ["Stealth Rock"], ["Earthquake", "Waterfall"], ["Protect"]] + }, + { + "species": "Relicanth", + "item": "Leftovers", + "ability": "Rock Head", + "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Head Smash"], ["Stealth Rock"], ["Protect"], ["Toxic", "Yawn"]] + }, + { + "species": "Relicanth", + "item": "Stone Plate", + "ability": "Rock Head", + "evs": {"hp": 168, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 88}, + "nature": "Adamant", + "moves": [["Head Smash"], ["Stealth Rock"], ["Waterfall"], ["Toxic", "Earthquake"]] + }, + { + "species": "Relicanth", + "item": "Leftovers", + "ability": "Rock Head", + "evs": {"hp": 168, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 88}, + "nature": "Adamant", + "moves": [["Head Smash"], ["Stealth Rock"], ["Waterfall"], ["Toxic", "Earthquake"]] + } + ] + }, + "rotomfrost": { + "flags": {}, + "sets": [ + { + "species": "Rotom-Frost", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Blizzard"], ["Trick", "Will-O-Wisp"]] + }, + { + "species": "Rotom-Frost", + "item": "Choice Scarf", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Blizzard"], ["Hidden Power Ice"]] + }, + { + "species": "Rotom-Frost", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Thunderbolt"], ["Blizzard"], ["Will-O-Wisp", "Volt Switch"]] + }, + { + "species": "Rotom-Frost", + "item": "Life Orb", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Thunderbolt"], ["Blizzard"], ["Pain Split", "Will-O-Wisp"]] + } + ] + }, + "simisage": { + "flags": {}, + "sets": [ + { + "species": "Simisage", + "item": "Life Orb", + "ability": "Overgrow", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Naive", + "moves": [["Leaf Storm"], ["Superpower"], ["Gunk Shot"], ["Knock Off"]] + } + ] + }, + "chatot": { + "flags": {}, + "sets": [ + { + "species": "Chatot", + "item": "Choice Scarf", + "ability": "Keen Eye", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Boomburst"], ["Heat Wave"], ["Hidden Power Fighting"], ["U-turn"]] + }, + { + "species": "Chatot", + "item": "Choice Scarf", + "ability": "Keen Eye", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Timid", + "moves": [["Boomburst"], ["Heat Wave"], ["Hidden Power Fighting"], ["U-turn"]] + }, + { + "species": "Chatot", + "item": "Choice Specs", + "ability": "Keen Eye", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Boomburst"], ["Heat Wave"], ["Hidden Power Fighting"], ["U-turn"]] + } + ] + }, + "mrmime": { + "flags": {}, + "sets": [ + { + "species": "Mr. Mime", + "item": "Choice Scarf", + "ability": "Soundproof", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Psychic"], ["Dazzling Gleam"], ["Focus Blast"], ["Healing Wish"]] + }, + { + "species": "Mr. Mime", + "item": "Choice Specs", + "ability": "Soundproof", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Psychic"], ["Dazzling Gleam"], ["Focus Blast"], ["Shadow Ball"]] + }, + { + "species": "Mr. Mime", + "item": "Life Orb", + "ability": "Soundproof", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Psychic"], ["Dazzling Gleam"], ["Focus Blast"], ["Shadow Ball", "Healing Wish"]] + } + ] + }, + "mightyena": { + "flags": {}, + "sets": [ + { + "species": "Mightyena", + "item": "Life Orb", + "ability": "Moxie", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Adamant", + "moves": [["Crunch"], ["Sucker Punch"], ["Play Rough"], ["Iron Tail"]] + } + ] + }, + "fraxure": { + "flags": {}, + "sets": [ + { + "species": "Fraxure", + "item": "Eviolite", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Dragon Dance"], ["Outrage"], ["Low Kick"], ["Dual Chop", "Taunt", "Poison Jab"]] + } + ] + }, + "misdreavus": { + "flags": {}, + "sets": [ + { + "species": "Misdreavus", + "item": "Eviolite", + "ability": "Levitate", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Nasty Plot"], ["Taunt", "Will-O-Wisp"], ["Shadow Ball"], ["Thunderbolt"]] + }, + { + "species": "Misdreavus", + "item": "Eviolite", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 124, "spa": 0, "spd": 0, "spe": 136}, + "nature": "Timid", + "moves": [["Will-O-Wisp"], ["Taunt"], ["Foul Play"], ["Pain Split", "Thunder Wave"]] + } + ] + }, + "probopass": { + "flags": {}, + "sets": [ + { + "species": "Probopass", + "item": "Leftovers", + "ability": "Magnet Pull", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0}, + "nature": "Modest", + "moves": [["Stealth Rock"], ["Flash Cannon"], ["Volt Switch"], ["Earth Power", "Thunder Wave"]] + }, + { + "species": "Probopass", + "item": "Passho Berry", + "ability": "Sturdy", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0}, + "nature": "Modest", + "moves": [["Stealth Rock"], ["Flash Cannon"], ["Volt Switch"], ["Earth Power", "Thunder Wave"]] + }, + { + "species": "Probopass", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Calm", + "moves": [["Stealth Rock"], ["Flash Cannon"], ["Volt Switch"], ["Earth Power", "Toxic", "Thunder Wave"]] + } + ] + }, + "sawsbuck": { + "flags": {}, + "sets": [ + { + "species": "Sawsbuck", + "item": "Choice Scarf", + "ability": "Sap Sipper", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Double-Edge"], ["Horn Leech"], ["Jump Kick"], ["Megahorn"]] + }, + { + "species": "Sawsbuck", + "item": "Choice Scarf", + "ability": "Sap Sipper", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Double-Edge"], ["Horn Leech"], ["Jump Kick"], ["Toxic"]] + }, + { + "species": "Sawsbuck", + "item": "Salac Berry", + "ability": "Sap Sipper", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Return"], ["Horn Leech"], ["Substitute"], ["Swords Dance"]], + "happiness": 255 + } + ] + }, + "arbok": { + "flags": {}, + "sets": [ + { + "species": "Arbok", + "item": "Black Sludge", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Coil"], ["Gunk Shot"], ["Sucker Punch"], ["Earthquake"]] + }, + { + "species": "Arbok", + "item": "Shuca Berry", + "ability": "Intimidate", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Coil"], ["Gunk Shot"], ["Sucker Punch"], ["Earthquake"]] + }, + { + "species": "Arbok", + "item": "Black Sludge", + "ability": "Shed Skin", + "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 236, "spe": 20}, + "nature": "Careful", + "moves": [["Coil"], ["Gunk Shot"], ["Rest"], ["Earthquake"]] + } + ] + }, + "duosion": { + "flags": {}, + "sets": [ + { + "species": "Duosion", + "item": "Eviolite", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0}, + "nature": "Impish", + "moves": [["Calm Mind"], ["Recover"], ["Psyshock", "Psychic"], ["Acid Armor", "Signal Beam"]] + } + ] + }, + "ninetales": { + "flags": {}, + "sets": [ + { + "species": "Ninetales", + "item": "Leftovers", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Nasty Plot"], ["Fire Blast"], ["Energy Ball"]] + }, + { + "species": "Ninetales", + "item": "Passho Berry", + "ability": "Flash Fire", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Fire Blast"], ["Energy Ball"], ["Hidden Power Ground"]] + } + ] + }, + "articuno": { + "flags": {}, + "sets": [ + { + "species": "Articuno", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220}, + "nature": "Modest", + "moves": [["Agility"], ["Ice Beam", "Freeze-Dry"], ["Hurricane"], ["Roost"]] + }, + { + "species": "Articuno", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220}, + "nature": "Modest", + "moves": [["Agility"], ["Ice Beam", "Freeze-Dry"], ["Hurricane"], ["Hidden Power Fighting"]] + }, + { + "species": "Articuno", + "item": "Life Orb", + "ability": "Pressure", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Substitute"], ["Ice Beam", "Freeze-Dry"], ["Hurricane"], ["Roost"]] + } + ] + }, + "clefairy": { + "flags": {}, + "sets": [ + { + "species": "Clefairy", + "item": "Eviolite", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Soft-Boiled"], ["Moonblast"], ["Thunder Wave", "Knock Off", "Healing Wish"], ["Stealth Rock"]] + }, + { + "species": "Clefairy", + "item": "Eviolite", + "ability": "Magic Guard", + "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Bold", + "moves": [["Calm Mind"], ["Soft-Boiled"], ["Moonblast"], ["Thunder Wave", "Knock Off", "Encore"]] + } + ] + }, + "golduck": { + "flags": {}, + "sets": [ + { + "species": "Golduck", + "item": "Life Orb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Modest", + "moves": [["Hydro Pump"], ["Rain Dance"], ["Ice Beam"], ["Psyshock", "Focus Blast"]] + } + ] + }, + "golem": { + "flags": {}, + "sets": [ + { + "species": "Golem", + "item": "Custap Berry", + "ability": "Sturdy", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Earthquake"], ["Explosion"], ["Stealth Rock"], ["Stone Edge"]] + }, + { + "species": "Golem", + "item": "Weakness Policy", + "ability": "Sturdy", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Adamant", + "moves": [["Earthquake"], ["Sucker Punch"], ["Stealth Rock"], ["Stone Edge"]] + }, + { + "species": "Golem", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 56, "def": 0, "spa": 0, "spd": 204, "spe": 0}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Stone Edge"], ["Earthquake"], ["Protect"]] + } + ] + }, + "gourgeistsuper": { + "flags": {}, + "sets": [ + { + "species": "Gourgeist-Super", + "item": "Leftovers", + "ability": "Frisk", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Foul Play"], ["Will-O-Wisp"], ["Synthesis"], ["Seed Bomb"]] + } + ] + }, + "lickilicky": { + "flags": {}, + "sets": [ + { + "species": "Lickilicky", + "item": "Leftovers", + "ability": "Oblivious", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Wish"], ["Protect"], ["Body Slam", "Knock Off"], ["Dragon Tail", "Heal Bell"]] + } + ] + }, + "monferno": { + "flags": {}, + "sets": [ + { + "species": "Monferno", + "item": "Eviolite", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Mach Punch"], ["Flare Blitz"], ["Close Combat"]] + }, + { + "species": "Monferno", + "item": "Life Orb", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Swords Dance"], ["Mach Punch"], ["Flare Blitz"], ["Close Combat"]] + }, + { + "species": "Monferno", + "item": "Eviolite", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["U-turn", "Thunder Punch"], ["Mach Punch"], ["Flare Blitz"], ["Close Combat"]] + }, + { + "species": "Monferno", + "item": "Eviolite", + "ability": "Iron Fist", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["U-turn", "Thunder Punch"], ["Mach Punch"], ["Flare Blitz"], ["Stealth Rock"]] + } + ] + }, + "politoed": { + "flags": {}, + "sets": [ + { + "species": "Politoed", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0}, + "nature": "Modest", + "moves": [["Scald"], ["Ice Beam"], ["Hidden Power Electric"], ["Encore", "Toxic"]] + }, + { + "species": "Politoed", + "item": "Leftovers", + "ability": "Water Absorb", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Calm", + "moves": [["Perish Song"], ["Scald"], ["Toxic"], ["Protect"]] + } + ] + }, + "seaking": { + "flags": {}, + "sets": [ + { + "species": "Seaking", + "item": "Leftovers", + "ability": "Lightning Rod", + "evs": {"hp": 104, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 152}, + "nature": "Adamant", + "moves": [["Waterfall"], ["Knock Off"], ["Megahorn"], ["Haze", "Protect"]] + } + ] + }, + "simisear": { + "flags": {}, + "sets": [ + { + "species": "Simisear", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Naive", + "moves": [["Knock Off"], ["Rock Slide"], ["Superpower", "Low Kick"], ["Overheat", "Fire Blast"]] + }, + { + "species": "Simisear", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Naive", + "moves": [["Fire Blast"], ["Grass Knot"], ["Low Kick"], ["Knock Off"]] + }, + { + "species": "Simisear", + "item": "Life Orb", + "ability": "Blaze", + "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252}, + "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Nasty Plot"], ["Focus Blast"], ["Grass Knot"], ["Fire Blast"]] + }, + { + "species": "Simisear", + "item": "Salac Berry", + "ability": "Blaze", + "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Substitute"], ["Nasty Plot"], ["Focus Blast"], ["Fire Blast"]] + } + ] + }, + "swanna": { + "flags": {}, + "sets": [ + { + "species": "Swanna", + "item": "Life Orb", + "ability": "Keen Eye", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31}, + "nature": "Timid", + "moves": [["Defog"], ["Roost"], ["Scald"], ["Hurricane"]] + } + ] + }, + "vullaby": { + "flags": {}, + "sets": [ + { + "species": "Vullaby", + "item": "Eviolite", + "ability": "Overcoat", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Defog"], ["Roost"], ["U-turn", "Whirlwind"], ["Foul Play"]] + }, + { + "species": "Vullaby", + "item": "Eviolite", + "ability": "Overcoat", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Defog"], ["Roost"], ["U-turn", "Whirlwind"], ["Foul Play"]] + } + ] + }, + "basculin": { + "flags": {}, + "sets": [ + { + "species": "Basculin", + "item": "Choice Band", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Waterfall", "Aqua Tail"], ["Aqua Jet"], ["Crunch", "Zen Headbutt"], ["Double-Edge"]] + }, + { + "species": "Basculin", + "item": "Life Orb", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 30, "spd": 31, "spe": 31}, + "nature": "Naive", + "moves": [["Waterfall"], ["Aqua Jet"], ["Ice Beam"], ["Superpower"]] + }, + { + "species": "Basculin", + "item": "Life Orb", + "ability": "Adaptability", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Waterfall"], ["Aqua Jet"], ["Ice Beam"], ["Hidden Power Electric"]] + } + ] + }, + "gabite": { + "flags": {}, + "sets": [ + { + "species": "Gabite", + "item": "Eviolite", + "ability": "Rough Skin", + "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Toxic", "Roar"], ["Dragon Claw"], ["Earthquake"]] + }, + { + "species": "Gabite", + "item": "Eviolite", + "ability": "Rough Skin", + "evs": {"hp": 248, "atk": 220, "def": 0, "spa": 0, "spd": 0, "spe": 40}, + "nature": "Adamant", + "moves": [["Stealth Rock"], ["Toxic", "Roar"], ["Dragon Claw"], ["Earthquake"]] + }, + { + "species": "Gabite", + "item": "Eviolite", + "ability": "Rough Skin", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Earthquake"], ["Outrage"], ["Stealth Rock"], ["Stone Edge", "Toxic", "Roar"]] + } + ] + }, + "gourgeistsmall": { + "flags": {}, + "sets": [ + { + "species": "Gourgeist-Small", + "item": "Leftovers", + "ability": "Frisk", + "evs": {"hp": 152, "atk": 0, "def": 104, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Leech Seed"], ["Substitute"], ["Foul Play", "Seed Bomb"], ["Will-O-Wisp", "Disable"]] + }, + { + "species": "Gourgeist-Small", + "item": "Choice Scarf", + "ability": "Frisk", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Seed Bomb"], ["Trick"], ["Rock Slide"], ["Explosion", "Destiny Bond"]] + } + ] + }, + "klang": { + "flags": {}, + "sets": [ + { + "species": "Klang", + "item": "Eviolite", + "ability": "Clear Body", + "evs": {"hp": 252, "atk": 0, "def": 156, "spa": 0, "spd": 100, "spe": 0}, + "nature": "Careful", + "moves": [["Rest"], ["Sleep Talk"], ["Shift Gear"], ["Gear Grind"]] + } + ] + }, + "leafeon": { + "flags": {}, + "sets": [ + { + "species": "Leafeon", + "item": "Choice Band", + "ability": "Leaf Guard", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Leaf Blade"], ["Bullet Seed"], ["Knock Off"], ["Double-Edge", "Quick Attack"]] + }, + { + "species": "Leafeon", + "item": "Yache Berry", + "ability": "Chlorophyll", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Leaf Blade"], ["Knock Off"], ["Synthesis", "Return"]] + }, + { + "species": "Leafeon", + "item": "Occa Berry", + "ability": "Chlorophyll", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Swords Dance"], ["Leaf Blade"], ["Knock Off"], ["Synthesis", "Return"]] + }, + { + "species": "Leafeon", + "item": "Choice Scarf", + "ability": "Chlorophyll", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Double-Edge", "Return"], ["Leaf Blade"], ["Knock Off"], ["Bullet Seed", "X-Scissor"]] + } + ] + }, + "leavanny": { + "flags": {}, + "sets": [ + { + "species": "Leavanny", + "item": "Focus Sash", + "ability": "Chlorophyll", + "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Leaf Storm"], ["Electroweb", "Magic Coat"], ["Sticky Web"], ["Knock Off"]] + } + ] + }, + "metang": { + "flags": {}, + "sets": [ + { + "species": "Metang", + "item": "Eviolite", + "ability": "Clear Body", + "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Adamant", + "moves": [["Meteor Mash"], ["Stealth Rock"], ["Pursuit", "Bullet Punch"], ["Earthquake", "Zen Headbutt"]] + }, + { + "species": "Metang", + "item": "Eviolite", + "ability": "Clear Body", + "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 252, "spe": 8}, + "nature": "Careful", + "moves": [["Meteor Mash"], ["Stealth Rock"], ["Toxic"], ["Pursuit", "Bullet Punch", "Earthquake", "Zen Headbutt"]] + }, + { + "species": "Metang", + "item": "Eviolite", + "ability": "Clear Body", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8}, + "nature": "Impish", + "moves": [["Meteor Mash"], ["Stealth Rock"], ["Toxic"], ["Earthquake", "Zen Headbutt", "Pursuit", "Bullet Punch"]] + } + ] + }, + "ninjask": { + "flags": {}, + "sets": [ + { + "species": "Ninjask", + "item": "Choice Band", + "ability": "Infiltrator", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["U-turn"], ["X-Scissor"], ["Aerial Ace"], ["Toxic"]] + } + ] + }, + "purugly": { + "flags": {}, + "sets": [ + { + "species": "Purugly", + "item": "Life Orb", + "ability": "Defiant", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Return"], ["Fake Out"], ["Knock Off"], ["U-turn", "Sucker Punch", "Wake-Up Slap"]], + "happiness": 255 + } + ] + }, + "solrock": { + "flags": {}, + "sets": [ + { + "species": "Solrock", + "item": "Leftovers", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Will-O-Wisp"], ["Zen Headbutt", "Stone Edge"], ["Morning Sun"]] + }, + { + "species": "Solrock", + "item": "Colbur Berry", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Stealth Rock"], ["Will-O-Wisp"], ["Stone Edge"], ["Morning Sun"]] + } + ] + }, + "venipede": { + "flags": {}, + "sets": [ + { + "species": "Venipede", + "item": "Focus Sash", + "ability": "Speed Boost", + "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Timid", + "moves": [["Protect"], ["Spikes"], ["Toxic Spikes"], ["Endeavor"]] + } + ] + }, + "armaldo": { + "flags": {}, + "sets": [ + { + "species": "Armaldo", + "item": "Leftovers", + "ability": "Battle Armor", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Rapid Spin"], ["Knock Off"], ["Stone Edge"], ["Toxic"]] + }, + { + "species": "Armaldo", + "item": "Leftovers", + "ability": "Battle Armor", + "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0}, + "nature": "Impish", + "moves": [["Rapid Spin"], ["Knock Off"], ["Stone Edge"], ["Stealth Rock"]] + }, + { + "species": "Armaldo", + "item": "Leftovers", + "ability": "Battle Armor", + "evs": {"hp": 248, "atk": 252, "def": 8, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Adamant", + "moves": [["Stone Edge"], ["Knock Off"], ["Rapid Spin"], ["Earthquake"]] + } + ] + }, + "dusknoir": { + "flags": {}, + "sets": [ + { + "species": "Dusknoir", + "item": "Choice Band", + "ability": "Frisk", + "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Adamant", + "moves": [["Shadow Sneak"], ["Thunder Punch"], ["Earthquake"], ["Trick"]] + }, + { + "species": "Dusknoir", + "item": "Spell Tag", + "ability": "Frisk", + "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Adamant", + "moves": [["Shadow Sneak"], ["Thunder Punch"], ["Earthquake"], ["Will-O-Wisp"]] + } + ] + }, + "huntail": { + "flags": {}, + "sets": [ + { + "species": "Huntail", + "item": "White Herb", + "ability": "Water Veil", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naughty", + "moves": [["Shell Smash"], ["Sucker Punch"], ["Waterfall"], ["Ice Beam"]] + }, + { + "species": "Huntail", + "item": "White Herb", + "ability": "Swift Swim", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Shell Smash"], ["Sucker Punch"], ["Waterfall"], ["Double-Edge"]] + } + ] + }, + "murkrow": { + "flags": {}, + "sets": [ + { + "species": "Murkrow", + "item": "Life Orb", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Jolly", + "moves": [["Brave Bird"], ["Sucker Punch"], ["Pursuit"], ["Thunder Wave"]] + }, + { + "species": "Murkrow", + "item": "Life Orb", + "ability": "Prankster", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Brave Bird"], ["Sucker Punch"], ["Hidden Power Fighting"], ["Thunder Wave", "Pursuit"]] + } + ] + }, + "vibrava": { + "flags": {}, + "sets": [ + { + "species": "Vibrava", + "item": "Eviolite", + "ability": "Levitate", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Earthquake"], ["U-turn", "Toxic"], ["Defog"], ["Roost"]] + } + ] + }, + "zweilous": { + "flags": {}, + "sets": [ + { + "species": "Zweilous", + "item": "Eviolite", + "ability": "Hustle", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Rest"], ["Sleep Talk"], ["Crunch"], ["Dragon Tail", "Roar"]] + }, + { + "species": "Zweilous", + "item": "Choice Band", + "ability": "Hustle", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Crunch"], ["Outrage"], ["Superpower"], ["Sleep Talk"]] + } + ] + }, + "avalugg": { + "flags": {}, + "sets": [ + { + "species": "Avalugg", + "item": "Leftovers", + "ability": "Sturdy", + "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0}, + "nature": "Careful", + "moves": [["Recover"], ["Rapid Spin"], ["Avalanche"], ["Roar", "Toxic"]] + } + ] + }, + "electrode": { + "flags": {}, + "sets": [ + { + "species": "Electrode", + "item": "Life Orb", + "ability": "Soundproof", + "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252}, + "nature": "Modest", + "moves": [["Thunderbolt"], ["Volt Switch"], ["Signal Beam"], ["Hidden Power Ice"]] + } + ] + }, + "marowak": { + "flags": {}, + "sets": [ + { + "species": "Marowak", + "item": "Thick Club", + "ability": "Rock Head", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Bonemerang"], ["Knock Off"], ["Double-Edge"], ["Stealth Rock"]] + }, + { + "species": "Marowak", + "item": "Thick Club", + "ability": "Rock Head", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Bonemerang"], ["Knock Off"], ["Double-Edge"], ["Stone Edge"]] + }, + { + "species": "Marowak", + "item": "Thick Club", + "ability": "Rock Head", + "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252}, + "nature": "Adamant", + "moves": [["Bonemerang"], ["Knock Off"], ["Stone Edge"], ["Stealth Rock"]] + } + ] + }, + "quilladin": { + "flags": {}, + "sets": [ + { + "species": "Quilladin", + "item": "Eviolite", + "ability": "Bulletproof", + "evs": {"hp": 252, "atk": 4, "def": 252, "spa": 0, "spd": 0, "spe": 0}, + "nature": "Impish", + "moves": [["Wood Hammer"], ["Spikes"], ["Synthesis"], ["Roar"]] + }, + { + "species": "Quilladin", + "item": "Eviolite", + "ability": "Bulletproof", + "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252}, + "nature": "Jolly", + "moves": [["Wood Hammer"], ["Taunt"], ["Spikes"], ["Zen Headbutt", "Drain Punch"]] + } + ] + }, + "rampardos": { + "flags": {}, + "sets": [ + { + "species": "Rampardos", + "item": "Focus Sash", + "ability": "Mold Breaker", + "evs": {"hp": 0, "atk": 144, "def": 0, "spa": 112, "spd": 0, "spe": 252}, + "nature": "Naive", + "moves": [["Stealth Rock"], ["Superpower"], ["Head Smash"], ["Surf"]] + } + ] + }, + "drifblim": { + "flags": {}, + "sets": [ + { + "species": "Drifblim", + "item": "Liechi Berry", + "ability": "Unburden", + "evs": {"hp": 12, "atk": 244, "def": 0, "spa": 0, "spd": 40, "spe": 212}, + "nature": "Adamant", + "moves": [["Substitute"], ["Acrobatics"], ["Knock Off"], ["Will-O-Wisp"]] + } + ] + } + } +} diff --git a/data/random-battles/gen6megasrevisited/sets.json b/data/random-battles/gen6megasrevisited/sets.json new file mode 100644 index 0000000000..10fb1f136a --- /dev/null +++ b/data/random-battles/gen6megasrevisited/sets.json @@ -0,0 +1,6301 @@ +{ + "venusaur": { + "level": 83, + "sets": [ + { + "role": "Staller", + "movepool": ["gigadrain", "leechseed", "sleeppowder", "sludgebomb", "substitute"], + "abilities": ["Chlorophyll", "Overgrow"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "gigadrain", "sleeppowder", "sludgebomb", "synthesis"], + "abilities": ["Chlorophyll", "Overgrow"] + } + ] + }, + "venusaurmega": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["hiddenpowerground", "leafstorm", "sludgebomb", "synthesis"], + "abilities": ["Chlorophyll"] + }, + { + "role": "Bulky Support", + "movepool": ["gigadrain", "leechseed", "sleeppowder", "sludgebomb", "substitute"], + "abilities": ["Chlorophyll"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "gigadrain", "leechseed", "sludgebomb"], + "abilities": ["Chlorophyll"] + } + ] + }, + "charizard": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["hurricane", "earthquake", "fireblast", "roost", "willowisp"], + "abilities": ["Blaze", "Solar Power"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "hurricane", "fireblast", "roost"], + "abilities": ["Blaze", "Solar Power"] + }, + { + "role": "Setup Sweeper", + "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"], + "abilities": ["Blaze"] + } + ] + }, + "charizardmegax": { + "level": 74, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragonclaw", "dragondance", "earthquake", "flareblitz", "roost"], + "abilities": ["Blaze"] + } + ] + }, + "charizardmegay": { + "level": 74, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["hurricane", "fireblast", "roost", "focusblast"], + "abilities": ["Blaze"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "hurricane", "lavaplume", "roost"], + "abilities": ["Blaze"] + } + ] + }, + "blastoise": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["icebeam", "rapidspin", "roar", "scald", "toxic"], + "abilities": ["Torrent"] + }, + { + "role": "Staller", + "movepool": ["haze", "icebeam", "protect", "rapidspin", "scald", "toxic"], + "abilities": ["Torrent"] + } + ] + }, + "blastoisemega": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["moonblast", "rapidspin", "scald", "taunt"], + "abilities": ["Rain Dish"] + }, + { + "role": "Bulky Attacker", + "movepool": ["moonblast", "rapidspin", "hydropump", "hiddenpowerfire"], + "abilities": ["Rain Dish"] + } + ] + }, + "butterfree": { + "level": 92, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bugbuzz", "psychic", "quiverdance", "sleeppowder"], + "abilities": ["Tinted Lens"] + } + ] + }, + "beedrill": { + "level": 94, + "sets": [ + { + "role": "Fast Support", + "movepool": ["defog", "knockoff", "poisonjab", "toxicspikes", "uturn", "stealthrock"], + "abilities": ["Swarm"] + }, + { + "role": "Setup Sweeper", + "movepool": ["poisonjab", "earthquake", "diamondstorm", "swordsdance"], + "abilities": ["Swarm"] + } + ] + }, + "beedrillmega": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["diamondstorm", "earthquake", "roost", "uturn"], + "abilities": ["Swarm"] + }, + { + "role": "Bulky Support", + "movepool": ["diamondstorm", "earthquake", "roost", "uturn", "defog", "stealthrock"], + "abilities": ["Swarm"] + }, + { + "role": "Bulky Setup", + "movepool": ["diamondstorm", "earthquake", "roost", "swordsdance"], + "abilities": ["Swarm"] + } + ] + }, + "pidgeot": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "defog", "heatwave", "return", "roost", "uturn"], + "abilities": ["Big Pecks"] + }, + { + "role": "Fast Attacker", + "movepool": ["bravebird", "focusblast", "return", "workup"], + "abilities": ["Keen Eye"] + } + ] + }, + "pidgeotmega": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "focusblast", "hurricane", "roost", "uturn", "workup"], + "abilities": ["Big Pecks"] + } + ] + }, + "raticate": { + "level": 88, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["crunch", "facade", "flamewheel", "protect", "suckerpunch", "swordsdance", "uturn"], + "abilities": ["Guts"], + "preferredTypes": ["Dark"] + } + ] + }, + "fearow": { + "level": 88, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["doubleedge", "drillpeck", "drillrun", "return", "uturn"], + "abilities": ["Sniper"] + } + ] + }, + "arbok": { + "level": 90, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["aquatail", "coil", "earthquake", "gunkshot", "suckerpunch"], + "abilities": ["Intimidate"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Setup", + "movepool": ["coil", "earthquake", "gunkshot", "rest"], + "abilities": ["Shed Skin"] + } + ] + }, + "pikachu": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["extremespeed", "grassknot", "hiddenpowerice", "knockoff", "surf", "voltswitch", "volttackle"], + "abilities": ["Lightning Rod"] + } + ] + }, + "raichu": { + "level": 87, + "sets": [ + { + "role": "Fast Support", + "movepool": ["encore", "hiddenpowerice", "knockoff", "nastyplot", "nuzzle", "thunderbolt", "voltswitch"], + "abilities": ["Lightning Rod"], + "preferredTypes": ["Ice"] + }, + { + "role": "Fast Attacker", + "movepool": ["focusblast", "grassknot", "nastyplot", "surf", "thunderbolt", "voltswitch"], + "abilities": ["Lightning Rod"] + } + ] + }, + "sandslash": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "knockoff", "rapidspin", "stealthrock", "stoneedge", "swordsdance", "toxic"], + "abilities": ["Sand Rush"] + } + ] + }, + "nidoqueen": { + "level": 81, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "stealthrock", "toxicspikes"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Ice"] + } + ] + }, + "nidoking": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "substitute"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Ice"] + } + ] + }, + "clefable": { + "level": 80, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["aromatherapy", "knockoff", "moonblast", "softboiled", "stealthrock", "thunderwave"], + "abilities": ["Magic Guard", "Unaware"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "fireblast", "moonblast", "softboiled"], + "abilities": ["Magic Guard", "Unaware"] + } + ] + }, + "ninetales": { + "level": 83, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["fireblast", "hiddenpowerrock", "nastyplot", "solarbeam"], + "abilities": ["Drought"] + }, + { + "role": "Bulky Setup", + "movepool": ["fireblast", "nastyplot", "solarbeam", "substitute", "willowisp"], + "abilities": ["Drought"], + "preferredTypes": ["Grass"] + } + ] + }, + "wigglytuff": { + "level": 93, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["dazzlinggleam", "fireblast", "healbell", "knockoff", "protect", "stealthrock", "thunderwave", "wish"], + "abilities": ["Competitive"] + } + ] + }, + "vileplume": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["aromatherapy", "gigadrain", "hiddenpowerground", "sleeppowder", "sludgebomb", "synthesis"], + "abilities": ["Effect Spore"] + } + ] + }, + "parasect": { + "level": 100, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["aromatherapy", "knockoff", "seedbomb", "spore", "stunspore", "xscissor"], + "abilities": ["Dry Skin"], + "preferredTypes": ["Bug"] + } + ] + }, + "venomoth": { + "level": 84, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["bugbuzz", "quiverdance", "sleeppowder", "sludgebomb"], + "abilities": ["Tinted Lens"] + } + ] + }, + "dugtrio": { + "level": 86, + "sets": [ + { + "role": "Fast Support", + "movepool": ["earthquake", "honeclaws", "stealthrock", "stoneedge", "suckerpunch"], + "abilities": ["Arena Trap"] + }, + { + "role": "Wallbreaker", + "movepool": ["doubleedge", "earthquake", "stoneedge", "suckerpunch"], + "abilities": ["Arena Trap"] + } + ] + }, + "persian": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["doubleedge", "knockoff", "return", "seedbomb", "uturn"], + "abilities": ["Limber"] + }, + { + "role": "Wallbreaker", + "movepool": ["doubleedge", "fakeout", "knockoff", "return", "uturn"], + "abilities": ["Technician"] + }, + { + "role": "Setup Sweeper", + "movepool": ["hiddenpowerfighting", "hypervoice", "nastyplot", "shadowball"], + "abilities": ["Technician"] + } + ] + }, + "golduck": { + "level": 90, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "encore", "focusblast", "icebeam", "scald", "substitute"], + "abilities": ["Cloud Nine", "Swift Swim"], + "preferredTypes": ["Ice"] + }, + { + "role": "Fast Attacker", + "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam"], + "abilities": ["Cloud Nine", "Swift Swim"], + "preferredTypes": ["Ice"] + } + ] + }, + "primeape": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["closecombat", "earthquake", "gunkshot", "honeclaws", "stoneedge", "uturn"], + "abilities": ["Defiant"] + } + ] + }, + "arcanine": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["closecombat", "extremespeed", "flareblitz", "morningsun", "roar", "toxic", "wildcharge", "willowisp"], + "abilities": ["Intimidate"] + }, + { + "role": "Fast Attacker", + "movepool": ["closecombat", "extremespeed", "flareblitz", "morningsun", "wildcharge"], + "abilities": ["Intimidate"], + "preferredTypes": ["Fighting"] + } + ] + }, + "poliwrath": { + "level": 89, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "icepunch", "raindance", "waterfall"], + "abilities": ["Swift Swim"] + }, + { + "role": "Bulky Attacker", + "movepool": ["circlethrow", "rest", "scald", "sleeptalk"], + "abilities": ["Water Absorb"] + } + ] + }, + "alakazam": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["counter", "focusblast", "psychic", "psyshock", "shadowball"], + "abilities": ["Magic Guard"] + }, + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "encore", "focusblast", "psychic", "psyshock", "shadowball", "substitute"], + "abilities": ["Magic Guard"], + "preferredTypes": ["Fighting"] + } + ] + }, + "alakazammega": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "icebeam"], + "abilities": ["Magic Guard"] + }, + { + "role": "Fast Attacker", + "movepool": ["substitute", "focusblast", "psychic", "psyshock", "icebeam"], + "abilities": ["Magic Guard"] + } + ] + }, + "machamp": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bulkup", "bulletpunch", "dynamicpunch", "knockoff", "stoneedge"], + "abilities": ["No Guard"], + "preferredTypes": ["Dark"] + }, + { + "role": "AV Pivot", + "movepool": ["bulletpunch", "dynamicpunch", "knockoff", "stoneedge"], + "abilities": ["No Guard"] + } + ] + }, + "victreebel": { + "level": 90, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["hiddenpowerground", "knockoff", "powerwhip", "sleeppowder", "sludgebomb", "suckerpunch"], + "abilities": ["Chlorophyll"] + }, + { + "role": "Setup Sweeper", + "movepool": ["powerwhip", "sludgebomb", "sunnyday", "weatherball"], + "abilities": ["Chlorophyll"] + } + ] + }, + "tentacruel": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["haze", "knockoff", "rapidspin", "scald", "sludgebomb", "toxicspikes"], + "abilities": ["Clear Body", "Liquid Ooze"] + } + ] + }, + "golem": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "explosion", "stealthrock", "stoneedge", "suckerpunch", "toxic"], + "abilities": ["Sturdy"] + }, + { + "role": "Bulky Setup", + "movepool": ["earthquake", "explosion", "rockpolish", "stoneedge", "suckerpunch"], + "abilities": ["Sturdy"] + } + ] + }, + "rapidash": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["drillrun", "flareblitz", "morningsun", "wildcharge", "willowisp"], + "abilities": ["Flame Body", "Flash Fire"] + }, + { + "role": "Wallbreaker", + "movepool": ["drillrun", "flareblitz", "megahorn", "morningsun", "wildcharge"], + "abilities": ["Flash Fire"] + } + ] + }, + "slowbro": { + "level": 82, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], + "abilities": ["Regenerator"] + }, + { + "role": "AV Pivot", + "movepool": ["fireblast", "futuresight", "icebeam", "psyshock", "scald"], + "abilities": ["Regenerator"] + } + ] + }, + "slowbromega": { + "level": 81, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["futuresight", "fireblast", "scald", "slackoff"], + "abilities": ["Regenerator"] + } + ] + }, + "farfetchd": { + "level": 100, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bravebird", "knockoff", "leafblade", "return", "swordsdance"], + "abilities": ["Defiant"] + } + ] + }, + "dodrio": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["bravebird", "doubleedge", "knockoff", "quickattack", "return"], + "abilities": ["Early Bird"] + }, + { + "role": "Fast Attacker", + "movepool": ["bravebird", "knockoff", "return", "roost"], + "abilities": ["Early Bird"] + } + ] + }, + "dewgong": { + "level": 94, + "sets": [ + { + "role": "Staller", + "movepool": ["icebeam", "protect", "surf", "toxic"], + "abilities": ["Thick Fat"] + }, + { + "role": "Bulky Support", + "movepool": ["encore", "icebeam", "surf", "toxic"], + "abilities": ["Thick Fat"] + } + ] + }, + "muk": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["brickbreak", "curse", "gunkshot", "haze", "icepunch", "poisonjab", "shadowsneak"], + "abilities": ["Poison Touch"], + "preferredTypes": ["Fighting"] + } + ] + }, + "cloyster": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["hydropump", "iciclespear", "rockblast", "shellsmash"], + "abilities": ["Skill Link"] + } + ] + }, + "gengar": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["focusblast", "shadowball", "sludgewave", "substitute", "trick", "willowisp"], + "abilities": ["Levitate"] + }, + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "shadowball", "sludgewave", "calmmind"], + "abilities": ["Levitate"] + } + ] + }, + "gengarmega": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "shadowball", "sludgewave", "calmmind"], + "abilities": ["Levitate"] + }, + { + "role": "Fast Attacker", + "movepool": ["focusblast", "hex", "sludgebomb", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "hypno": { + "level": 96, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["focusblast", "foulplay", "protect", "psychic", "thunderwave", "toxic", "wish"], + "abilities": ["Insomnia"] + }, + { + "role": "Staller", + "movepool": ["protect", "seismictoss", "toxic", "wish"], + "abilities": ["Insomnia"] + } + ] + }, + "kingler": { + "level": 89, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["agility", "crabhammer", "knockoff", "rockslide", "superpower", "swordsdance", "xscissor"], + "abilities": ["Hyper Cutter", "Sheer Force"] + } + ] + }, + "electrode": { + "level": 88, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["foulplay", "hiddenpowerice", "signalbeam", "taunt", "thunderbolt", "voltswitch"], + "abilities": ["Aftermath", "Static"], + "preferredTypes": ["Ice"] + }, + { + "role": "Fast Support", + "movepool": ["hiddenpowerice", "thunderbolt", "thunderwave", "toxic", "voltswitch"], + "abilities": ["Aftermath", "Static"] + } + ] + }, + "exeggutor": { + "level": 92, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["gigadrain", "hiddenpowerfire", "leechseed", "psychic", "sleeppowder", "substitute"], + "abilities": ["Harvest"], + "preferredTypes": ["Psychic"] + } + ] + }, + "marowak": { + "level": 88, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["doubleedge", "earthquake", "knockoff", "stealthrock", "stoneedge", "swordsdance"], + "abilities": ["Battle Armor", "Rock Head"], + "preferredTypes": ["Rock"] + } + ] + }, + "hitmonlee": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["highjumpkick", "knockoff", "machpunch", "poisonjab", "rapidspin", "stoneedge"], + "abilities": ["Reckless"], + "preferredTypes": ["Dark"] + }, + { + "role": "Setup Sweeper", + "movepool": ["bulkup", "closecombat", "knockoff", "poisonjab", "stoneedge"], + "abilities": ["Unburden"], + "preferredTypes": ["Dark"] + } + ] + }, + "hitmonchan": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bulkup", "drainpunch", "icepunch", "machpunch", "rapidspin", "stoneedge"], + "abilities": ["Iron Fist"] + } + ] + }, + "weezing": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["fireblast", "painsplit", "sludgebomb", "toxicspikes", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "rhydon": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "megahorn", "stealthrock", "stoneedge", "swordsdance", "toxic"], + "abilities": ["Lightning Rod"] + } + ] + }, + "chansey": { + "level": 86, + "sets": [ + { + "role": "Staller", + "movepool": ["aromatherapy", "seismictoss", "softboiled", "stealthrock", "thunderwave", "toxic", "wish"], + "abilities": ["Natural Cure"] + } + ] + }, + "kangaskhan": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["doubleedge", "drainpunch", "earthquake", "fakeout", "return", "suckerpunch"], + "abilities": ["Scrappy"] + }, + { + "role": "AV Pivot", + "movepool": ["drainpunch", "earthquake", "fakeout", "return", "suckerpunch"], + "abilities": ["Scrappy"] + } + ] + }, + "kangaskhanmega": { + "level": 77, + "sets": [ + { + "role": "Fast Support", + "movepool": ["bodyslam", "milkdrink", "earthquake", "suckerpunch"], + "abilities": ["Scrappy"] + }, + { + "role": "Setup Sweeper", + "movepool": ["return", "earthquake", "poweruppunch", "suckerpunch"], + "abilities": ["Scrappy"] + } + ] + }, + "seaking": { + "level": 93, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["drillrun", "icebeam", "knockoff", "megahorn", "waterfall"], + "abilities": ["Lightning Rod"], + "preferredTypes": ["Dark"] + }, + { + "role": "Setup Sweeper", + "movepool": ["drillrun", "icebeam", "knockoff", "megahorn", "raindance", "waterfall"], + "abilities": ["Swift Swim"], + "preferredTypes": ["Dark"] + } + ] + }, + "starmie": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["hydropump", "icebeam", "psyshock", "recover", "thunderbolt"], + "abilities": ["Analytic", "Natural Cure"] + }, + { + "role": "Bulky Support", + "movepool": ["psyshock", "rapidspin", "recover", "scald", "thunderwave", "toxic"], + "abilities": ["Natural Cure"] + } + ] + }, + "mrmime": { + "level": 89, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"], + "abilities": ["Filter"], + "preferredTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"], + "abilities": ["Filter"] + } + ] + }, + "scyther": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["aerialace", "brickbreak", "knockoff", "pursuit", "uturn"], + "abilities": ["Technician"] + }, + { + "role": "Setup Sweeper", + "movepool": ["aerialace", "brickbreak", "bugbite", "knockoff", "roost", "swordsdance"], + "abilities": ["Technician"] + } + ] + }, + "jynx": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["focusblast", "icebeam", "lovelykiss", "psychic", "psyshock", "trick"], + "abilities": ["Dry Skin"] + }, + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "icebeam", "lovelykiss", "nastyplot", "psyshock"], + "abilities": ["Dry Skin"] + } + ] + }, + "pinsir": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["closecombat", "earthquake", "knockoff", "stealthrock", "stoneedge", "swordsdance", "xscissor"], + "abilities": ["Moxie"], + "preferredTypes": ["Ground"] + } + ] + }, + "pinsirmega": { + "level": 73, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["closecombat", "iceshard", "iciclecrash", "swordsdance"], + "abilities": ["Hyper Cutter"] + }, + { + "role": "Fast Attacker", + "movepool": ["closecombat", "iceshard", "iciclecrash", "uturn"], + "abilities": ["Hyper Cutter"] + } + ] + }, + "tauros": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["bodyslam", "earthquake", "fireblast", "rockslide", "zenheadbutt"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Ground"] + }, + { + "role": "Fast Attacker", + "movepool": ["doubleedge", "earthquake", "stoneedge", "zenheadbutt"], + "abilities": ["Intimidate"] + } + ] + }, + "gyarados": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "earthquake", "stoneedge", "substitute", "waterfall"], + "abilities": ["Intimidate", "Moxie"] + } + ] + }, + "gyaradosmega": { + "level": 74, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["doubleedge", "dragondance", "earthquake", "substitute", "waterfall"], + "abilities": ["Intimidate"] + } + ] + }, + "lapras": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["freezedry", "healbell", "hydropump", "icebeam", "toxic"], + "abilities": ["Water Absorb"] + }, + { + "role": "Staller", + "movepool": ["freezedry", "hydropump", "protect", "toxic"], + "abilities": ["Water Absorb"] + } + ] + }, + "ditto": { + "level": 84, + "sets": [ + { + "role": "Fast Support", + "movepool": ["transform"], + "abilities": ["Imposter"] + } + ] + }, + "vaporeon": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["healbell", "icebeam", "protect", "scald", "wish"], + "abilities": ["Water Absorb"] + }, + { + "role": "Staller", + "movepool": ["protect", "scald", "toxic", "wish"], + "abilities": ["Water Absorb"] + } + ] + }, + "jolteon": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["hiddenpowerice", "shadowball", "thunderbolt", "voltswitch"], + "abilities": ["Volt Absorb"] + }, + { + "role": "Wallbreaker", + "movepool": ["hiddenpowerice", "signalbeam", "thunderbolt", "voltswitch"], + "abilities": ["Volt Absorb"] + } + ] + }, + "flareon": { + "level": 88, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["facade", "flamecharge", "flareblitz", "quickattack", "superpower"], + "abilities": ["Guts"] + } + ] + }, + "omastar": { + "level": 83, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "shellsmash"], + "abilities": ["Shell Armor", "Swift Swim"] + } + ] + }, + "kabutops": { + "level": 87, + "sets": [ + { + "role": "Fast Support", + "movepool": ["aquajet", "knockoff", "rapidspin", "stoneedge", "waterfall"], + "abilities": ["Battle Armor", "Swift Swim"] + }, + { + "role": "Setup Sweeper", + "movepool": ["aquajet", "knockoff", "stoneedge", "swordsdance", "waterfall"], + "abilities": ["Weak Armor"] + } + ] + }, + "aerodactyl": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "earthquake", "roost", "stealthrock", "stoneedge", "taunt", "toxic"], + "abilities": ["Unnerve"] + }, + { + "role": "Fast Support", + "movepool": ["aerialace", "aquatail", "defog", "earthquake", "roost", "stealthrock", "stoneedge"], + "abilities": ["Unnerve"], + "preferredTypes": ["Ground"] + } + ] + }, + "aerodactylmega": { + "level": 77, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["hurricane", "earthquake", "honeclaws", "roost", "stoneedge"], + "abilities": ["Unnerve"], + "preferredTypes": ["Ground"] + } + ] + }, + "snorlax": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["bodyslam", "crunch", "curse", "earthquake", "rest", "sleeptalk"], + "abilities": ["Thick Fat"] + } + ] + }, + "articuno": { + "level": 84, + "sets": [ + { + "role": "Staller", + "movepool": ["freezedry", "roost", "substitute", "toxic"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Support", + "movepool": ["freezedry", "hurricane", "roost", "substitute", "toxic"], + "abilities": ["Pressure"] + } + ] + }, + "zapdos": { + "level": 78, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["defog", "discharge", "heatwave", "hiddenpowerice", "roost", "toxic", "uturn"], + "abilities": ["Static"] + } + ] + }, + "moltres": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "fireblast", "hurricane", "roost", "toxic", "uturn", "willowisp"], + "abilities": ["Flame Body"] + } + ] + }, + "dragonite": { + "level": 73, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "earthquake", "ironhead", "outrage", "roost"], + "abilities": ["Multiscale"], + "preferredTypes": ["Ground"] + } + ] + }, + "mewtwo": { + "level": 70, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"], + "abilities": ["Unnerve"] + } + ] + }, + "mewtwomegax": { + "level": 69, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bulkup", "drainpunch", "stoneedge", "taunt", "zenheadbutt"], + "abilities": ["Unnerve"] + } + ] + }, + "mewtwomegay": { + "level": 69, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"], + "abilities": ["Unnerve"] + } + ] + }, + "mew": { + "level": 80, + "sets": [ + { + "role": "Staller", + "movepool": ["defog", "knockoff", "psychic", "roost", "stealthrock", "taunt", "uturn", "willowisp"], + "abilities": ["Synchronize"] + }, + { + "role": "Setup Sweeper", + "movepool": ["aurasphere", "earthpower", "fireblast", "nastyplot", "psychic", "psyshock", "roost"], + "abilities": ["Synchronize"] + }, + { + "role": "Fast Attacker", + "movepool": ["drainpunch", "knockoff", "swordsdance", "zenheadbutt"], + "abilities": ["Synchronize"] + } + ] + }, + "meganium": { + "level": 92, + "sets": [ + { + "role": "Staller", + "movepool": ["aromatherapy", "dragontail", "earthquake", "energyball", "leechseed", "synthesis", "toxic"], + "abilities": ["Overgrow"] + } + ] + }, + "typhlosion": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["eruption", "fireblast", "focusblast", "hiddenpowergrass", "hiddenpowerrock"], + "abilities": ["Flash Fire"] + } + ] + }, + "feraligatr": { + "level": 79, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["crunch", "dragondance", "earthquake", "icepunch", "waterfall"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Ice"] + } + ] + }, + "furret": { + "level": 93, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["aquatail", "doubleedge", "firepunch", "knockoff", "trick", "uturn"], + "abilities": ["Frisk"], + "preferredTypes": ["Dark"] + } + ] + }, + "noctowl": { + "level": 95, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["airslash", "defog", "hypervoice", "roost", "toxic"], + "abilities": ["Tinted Lens"], + "preferredTypes": ["Normal"] + } + ] + }, + "ledian": { + "level": 100, + "sets": [ + { + "role": "Staller", + "movepool": ["encore", "focusblast", "knockoff", "roost", "toxic"], + "abilities": ["Early Bird"], + "preferredTypes": ["Dark"] + } + ] + }, + "ariados": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["megahorn", "poisonjab", "stickyweb", "suckerpunch", "toxicspikes"], + "abilities": ["Insomnia", "Swarm"] + } + ] + }, + "crobat": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "defog", "roost", "superfang", "taunt", "toxic", "uturn"], + "abilities": ["Infiltrator"] + } + ] + }, + "lanturn": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["healbell", "icebeam", "scald", "thunderbolt", "toxic", "voltswitch"], + "abilities": ["Volt Absorb"] + } + ] + }, + "xatu": { + "level": 87, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "heatwave", "psychic", "roost"], + "abilities": ["Magic Bounce"] + }, + { + "role": "Bulky Support", + "movepool": ["heatwave", "psychic", "roost", "thunderwave", "toxic", "uturn"], + "abilities": ["Magic Bounce"] + } + ] + }, + "ampharos": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["focusblast", "healbell", "slackoff", "thunderbolt", "toxic", "voltswitch", "defog"], + "abilities": ["Static"] + } + ] + }, + "ampharosmega": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["agility", "dragonpulse", "aurasphere", "thunderbolt", "voltswitch"], + "abilities": ["Static"] + }, + { + "role": "Bulky Support", + "movepool": ["dragonpulse", "aurasphere", "slackoff", "voltswitch", "thunderbolt", "defog"], + "abilities": ["Static"] + } + ] + }, + "bellossom": { + "level": 96, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["gigadrain", "hiddenpowerground", "leechseed", "moonblast", "sleeppowder", "sludgebomb", "synthesis", "toxic"], + "abilities": ["Chlorophyll"] + }, + { + "role": "Bulky Setup", + "movepool": ["drainpunch", "leafblade", "return", "swordsdance"], + "abilities": ["Chlorophyll"] + } + ] + }, + "azumarill": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["aquajet", "bellydrum", "knockoff", "playrough", "superpower", "waterfall"], + "abilities": ["Huge Power"] + } + ] + }, + "sudowoodo": { + "level": 94, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "stealthrock", "stoneedge", "suckerpunch", "toxic", "woodhammer"], + "abilities": ["Rock Head"], + "preferredTypes": ["Grass"] + } + ] + }, + "politoed": { + "level": 86, + "sets": [ + { + "role": "Staller", + "movepool": ["encore", "icebeam", "protect", "scald", "toxic"], + "abilities": ["Drizzle"] + }, + { + "role": "Bulky Support", + "movepool": ["encore", "icebeam", "rest", "scald", "toxic"], + "abilities": ["Drizzle"] + } + ] + }, + "jumpluff": { + "level": 90, + "sets": [ + { + "role": "Staller", + "movepool": ["acrobatics", "leechseed", "protect", "substitute"], + "abilities": ["Infiltrator"] + }, + { + "role": "Bulky Attacker", + "movepool": ["acrobatics", "encore", "sleeppowder", "toxic", "uturn"], + "abilities": ["Infiltrator"] + } + ] + }, + "sunflora": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthpower", "hiddenpowerfire", "hiddenpowerice", "hiddenpowerrock", "leafstorm", "sludgebomb"], + "abilities": ["Chlorophyll"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthpower", "hiddenpowerfire", "solarbeam", "sunnyday"], + "abilities": ["Chlorophyll"] + } + ] + }, + "quagsire": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "icebeam", "recover", "scald", "toxic"], + "abilities": ["Unaware"] + } + ] + }, + "espeon": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["calmmind", "dazzlinggleam", "morningsun", "psychic", "psyshock", "shadowball", "trick"], + "abilities": ["Magic Bounce"], + "preferredTypes": ["Fairy"] + } + ] + }, + "umbreon": { + "level": 83, + "sets": [ + { + "role": "Staller", + "movepool": ["foulplay", "protect", "toxic", "wish"], + "abilities": ["Synchronize"] + }, + { + "role": "Bulky Support", + "movepool": ["foulplay", "healbell", "moonlight", "toxic"], + "abilities": ["Synchronize"] + } + ] + }, + "murkrow": { + "level": 90, + "sets": [ + { + "role": "Staller", + "movepool": ["bravebird", "defog", "foulplay", "haze", "roost", "thunderwave"], + "abilities": ["Prankster"] + } + ] + }, + "slowking": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"], + "abilities": ["Regenerator"] + }, + { + "role": "AV Pivot", + "movepool": ["dragontail", "fireblast", "futuresight", "icebeam", "psyshock", "scald"], + "abilities": ["Regenerator"] + } + ] + }, + "unown": { + "level": 100, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["hiddenpowerfighting", "hiddenpowerpsychic"], + "abilities": ["Levitate"] + } + ] + }, + "wobbuffet": { + "level": 93, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["counter", "destinybond", "encore", "mirrorcoat"], + "abilities": ["Shadow Tag"] + } + ] + }, + "girafarig": { + "level": 93, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dazzlinggleam", "hypervoice", "nastyplot", "psychic", "psyshock", "substitute", "thunderbolt"], + "abilities": ["Sap Sipper"], + "preferredTypes": ["Psychic"] + } + ] + }, + "forretress": { + "level": 82, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["gyroball", "rapidspin", "spikes", "stealthrock", "toxic"], + "abilities": ["Sturdy"] + }, + { + "role": "Bulky Support", + "movepool": ["gyroball", "rapidspin", "stealthrock", "toxicspikes", "voltswitch"], + "abilities": ["Sturdy"] + } + ] + }, + "dunsparce": { + "level": 93, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "glare", "headbutt", "roost"], + "abilities": ["Serene Grace"] + }, + { + "role": "Bulky Setup", + "movepool": ["bodyslam", "coil", "earthquake", "roost"], + "abilities": ["Serene Grace"] + } + ] + }, + "gligar": { + "level": 82, + "sets": [ + { + "role": "Staller", + "movepool": ["defog", "earthquake", "knockoff", "roost", "stealthrock", "toxic", "uturn"], + "abilities": ["Immunity"] + } + ] + }, + "steelix": { + "level": 83, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthquake", "ironhead", "roar", "rockslide", "stealthrock", "toxic"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Steel"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "heavyslam", "protect", "toxic"], + "abilities": ["Sturdy"] + }, + { + "role": "Bulky Support", + "movepool": ["earthquake", "heavyslam", "roar", "stealthrock", "toxic", "rapidspin"], + "abilities": ["Sturdy"] + } + ] + }, + "steelixmega": { + "level": 80, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["heatcrash", "earthquake", "heavyslam", "stealthrock", "toxic"], + "abilities": ["Sturdy"] + }, + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "heavyslam", "rest", "sleeptalk"], + "abilities": ["Sturdy"] + } + ] + }, + "granbull": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "healbell", "playrough", "thunderwave", "toxic"], + "abilities": ["Intimidate"] + } + ] + }, + "qwilfish": { + "level": 84, + "sets": [ + { + "role": "Fast Support", + "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"], + "abilities": ["Intimidate"] + } + ] + }, + "scizor": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bugbite", "bulletpunch", "knockoff", "roost", "superpower", "swordsdance"], + "abilities": ["Technician"] + }, + { + "role": "Bulky Support", + "movepool": ["bulletpunch", "defog", "knockoff", "roost", "superpower", "uturn"], + "abilities": ["Technician"] + }, + { + "role": "Fast Attacker", + "movepool": ["bulletpunch", "knockoff", "pursuit", "superpower", "uturn"], + "abilities": ["Technician"] + } + ] + }, + "scizormega": { + "level": 74, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["bugbite", "bulletpunch", "knockoff", "roost", "superpower", "swordsdance"], + "abilities": ["Light Metal"] + }, + { + "role": "Bulky Support", + "movepool": ["bulletpunch", "defog", "knockoff", "roost", "superpower", "uturn"], + "abilities": ["Light Metal"] + } + ] + }, + "shuckle": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["encore", "knockoff", "stealthrock", "stickyweb", "toxic"], + "abilities": ["Sturdy"] + } + ] + }, + "heracross": { + "level": 79, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["closecombat", "facade", "knockoff", "megahorn", "icepunch"], + "abilities": ["Guts"] + }, + { + "role": "Fast Attacker", + "movepool": ["closecombat", "knockoff", "megahorn", "stoneedge", "icepunch"], + "abilities": ["Moxie"] + } + ] + }, + "heracrossmega": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["closecombat", "earthquake", "knockoff", "megahorn", "healorder", "icepunch", "swordsdance"], + "abilities": ["Moxie"], + "preferredTypes": ["Ice"] + }, + { + "role": "Bulky Support", + "movepool": ["circlethrow", "spikes", "knockoff", "healorder"], + "abilities": ["Moxie"] + } + ] + }, + "ursaring": { + "level": 85, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["closecombat", "crunch", "facade", "protect"], + "abilities": ["Guts"] + }, + { + "role": "Setup Sweeper", + "movepool": ["closecombat", "crunch", "facade", "swordsdance"], + "abilities": ["Quick Feet"] + } + ] + }, + "magcargo": { + "level": 98, + "sets": [ + { + "role": "Staller", + "movepool": ["ancientpower", "lavaplume", "recover", "stealthrock", "toxic"], + "abilities": ["Flame Body"] + } + ] + }, + "corsola": { + "level": 99, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["powergem", "recover", "scald", "stealthrock", "toxic"], + "abilities": ["Regenerator"] + } + ] + }, + "octillery": { + "level": 93, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["energyball", "fireblast", "gunkshot", "hydropump", "icebeam", "scald"], + "abilities": ["Sniper"], + "preferredTypes": ["Poison"] + }, + { + "role": "Bulky Attacker", + "movepool": ["energyball", "fireblast", "gunkshot", "icebeam", "scald", "thunderwave"], + "abilities": ["Sniper"], + "preferredTypes": ["Poison"] + } + ] + }, + "delibird": { + "level": 100, + "sets": [ + { + "role": "Fast Support", + "movepool": ["destinybond", "freezedry", "rapidspin", "spikes"], + "abilities": ["Insomnia", "Vital Spirit"] + } + ] + }, + "mantine": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["airslash", "defog", "haze", "rest", "scald", "toxic"], + "abilities": ["Water Absorb"] + }, + { + "role": "Staller", + "movepool": ["rest", "scald", "sleeptalk", "toxic"], + "abilities": ["Water Absorb"] + } + ] + }, + "skarmory": { + "level": 74, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["bravebird", "roost", "spikes", "stealthrock", "whirlwind"], + "abilities": ["Sturdy"] + }, + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "roost", "spikes", "stealthrock", "toxic"], + "abilities": ["Sturdy"] + } + ] + }, + "houndoom": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["darkpulse", "fireblast", "nastyplot", "sludgebomb", "suckerpunch", "toxicspikes"], + "abilities": ["Flash Fire"] + } + ] + }, + "houndoommega": { + "level": 80, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["darkpulse", "fireblast", "nastyplot", "sludgebomb", "taunt"], + "abilities": ["Flash Fire"] + }, + { + "role": "Fast Attacker", + "movepool": ["darkpulse", "fireblast", "toxicspikes", "sludgebomb"], + "abilities": ["Flash Fire"] + } + ] + }, + "kingdra": { + "level": 84, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dracometeor", "hydropump", "icebeam", "raindance", "waterfall"], + "abilities": ["Swift Swim"] + }, + { + "role": "Fast Attacker", + "movepool": ["dragondance", "ironhead", "outrage", "waterfall"], + "abilities": ["Sniper", "Swift Swim"] + } + ] + }, + "donphan": { + "level": 83, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "knockoff", "rapidspin", "stealthrock", "stoneedge", "toxic"], + "abilities": ["Sturdy"] + } + ] + }, + "porygon2": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["discharge", "icebeam", "recover", "toxic", "triattack"], + "abilities": ["Download", "Trace"] + } + ] + }, + "stantler": { + "level": 90, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "suckerpunch", "thunderwave"], + "abilities": ["Intimidate"], + "preferredTypes": ["Ground"] + } + ] + }, + "smeargle": { + "level": 89, + "sets": [ + { + "role": "Fast Support", + "movepool": ["nuzzle", "spikes", "spore", "stealthrock", "stickyweb", "whirlwind"], + "abilities": ["Own Tempo"] + } + ] + }, + "hitmontop": { + "level": 89, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["closecombat", "earthquake", "rapidspin", "stoneedge", "suckerpunch", "toxic"], + "abilities": ["Intimidate"] + } + ] + }, + "miltank": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bodyslam", "curse", "earthquake", "healbell", "milkdrink", "stealthrock", "toxic"], + "abilities": ["Sap Sipper", "Thick Fat"] + } + ] + }, + "blissey": { + "level": 84, + "sets": [ + { + "role": "Staller", + "movepool": ["aromatherapy", "seismictoss", "softboiled", "stealthrock", "thunderwave", "toxic"], + "abilities": ["Natural Cure"] + }, + { + "role": "Bulky Support", + "movepool": ["protect", "seismictoss", "toxic", "wish"], + "abilities": ["Natural Cure"] + } + ] + }, + "raikou": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["aurasphere", "hiddenpowerice", "thunderbolt", "voltswitch"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Setup", + "movepool": ["aurasphere", "calmmind", "hiddenpowerice", "substitute", "thunderbolt"], + "abilities": ["Pressure"], + "preferredTypes": ["Ice"] + } + ] + }, + "entei": { + "level": 77, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["bulldoze", "extremespeed", "flareblitz", "sacredfire"], + "abilities": ["Pressure"] + }, + { + "role": "Fast Attacker", + "movepool": ["extremespeed", "flareblitz", "sacredfire", "stoneedge"], + "abilities": ["Pressure"] + } + ] + }, + "suicune": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "rest", "scald", "sleeptalk"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "icebeam", "rest", "scald", "substitute"], + "abilities": ["Pressure"] + }, + { + "role": "Staller", + "movepool": ["calmmind", "protect", "scald", "substitute"], + "abilities": ["Pressure"] + } + ] + }, + "tyranitar": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["crunch", "earthquake", "fireblast", "icebeam", "pursuit", "stealthrock", "stoneedge"], + "abilities": ["Sand Stream"] + }, + { + "role": "Bulky Setup", + "movepool": ["crunch", "dragondance", "earthquake", "firepunch", "icepunch", "stoneedge"], + "abilities": ["Sand Stream"] + } + ] + }, + "tyranitarmega": { + "level": 75, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "superpower", "icepunch", "wildcharge"], + "abilities": ["Sand Stream"] + }, + { + "role": "Bulky Attacker", + "movepool": ["stealthrock", "earthquake", "icepunch", "wildcharge"], + "abilities": ["Sand Stream"] + } + ] + }, + "lugia": { + "level": 71, + "sets": [ + { + "role": "Staller", + "movepool": ["aeroblast", "defog", "earthquake", "roost", "substitute", "toxic", "whirlwind"], + "abilities": ["Multiscale"] + } + ] + }, + "hooh": { + "level": 69, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "defog", "earthquake", "roost", "sacredfire", "substitute", "toxic"], + "abilities": ["Regenerator"] + } + ] + }, + "celebi": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthpower", "gigadrain", "leafstorm", "nastyplot", "psychic", "uturn"], + "abilities": ["Natural Cure"], + "preferredTypes": ["Psychic"] + }, + { + "role": "Bulky Support", + "movepool": ["leafstorm", "psychic", "recover", "stealthrock", "thunderwave", "uturn"], + "abilities": ["Natural Cure"] + }, + { + "role": "Bulky Setup", + "movepool": ["leafstorm", "nastyplot", "psychic", "recover"], + "abilities": ["Natural Cure"] + } + ] + }, + "sceptile": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthquake", "focusblast", "gigadrain", "hiddenpowerfire", "hiddenpowerice", "leafstorm", "rockslide"], + "abilities": ["Overgrow"] + }, + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "gigadrain", "hiddenpowerfire", "hiddenpowerice", "calmmind"], + "abilities": ["Unburden"] + }, + { + "role": "Staller", + "movepool": ["gigadrain", "hiddenpowerfire", "hiddenpowerice", "leechseed", "substitute"], + "abilities": ["Overgrow"] + } + ] + }, + "sceptilemega": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["focusblast", "leafstorm", "dragonpulse", "sludgewave"], + "abilities": ["Overgrow"] + }, + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "gigadrain", "dragonpulse", "calmmind"], + "abilities": ["Overgrow"] + } + ] + }, + "combusken": { + "level": 93, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["flareblitz", "focusblast", "hiddenpowerelectric", "protect", "hiddenpowerice"], + "abilities": ["Speed Boost"] + } + ] + }, + "blaziken": { + "level": 85, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["flareblitz", "closecombat", "knockoff", "stoneedge", "swordsdance"], + "abilities": ["Blaze"] + } + ] + }, + "blazikenmega": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["flareblitz", "closecombat", "knockoff", "stoneedge", "swordsdance"], + "abilities": ["Blaze"] + }, + { + "role": "Fast Attacker", + "movepool": ["flareblitz", "closecombat", "knockoff", "spikes", "uturn"], + "abilities": ["Blaze"] + } + ] + }, + "swampert": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "icebeam", "roar", "scald", "stealthrock", "toxic", "toxicspikes"], + "abilities": ["Torrent"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "protect", "scald", "toxic"], + "abilities": ["Torrent"] + } + ] + }, + "swampertmega": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "poisonjab", "substitute", "superpower", "waterfall", "toxicspikes"], + "abilities": ["Damp"] + }, + { + "role": "Bulky Setup", + "movepool": ["bulkup", "gunkshot", "earthquake", "waterfall"], + "abilities": ["Damp"] + } + ] + }, + "mightyena": { + "level": 93, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["crunch", "irontail", "playrough", "suckerpunch", "toxic"], + "abilities": ["Intimidate"], + "preferredTypes": ["Fairy"] + } + ] + }, + "linoone": { + "level": 84, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bellydrum", "extremespeed", "seedbomb", "shadowclaw"], + "abilities": ["Quick Feet"] + } + ] + }, + "beautifly": { + "level": 99, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["aircutter", "bugbuzz", "hiddenpowerground", "quiverdance"], + "abilities": ["Swarm"] + } + ] + }, + "dustox": { + "level": 96, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["bugbuzz", "hiddenpowerground", "quiverdance", "roost", "sludgebomb"], + "abilities": ["Shield Dust"] + }, + { + "role": "Bulky Support", + "movepool": ["bugbuzz", "defog", "roost", "toxic", "uturn"], + "abilities": ["Shield Dust"] + } + ] + }, + "ludicolo": { + "level": 88, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["gigadrain", "hydropump", "icebeam", "raindance"], + "abilities": ["Swift Swim"] + }, + { + "role": "Wallbreaker", + "movepool": ["energyball", "hydropump", "icebeam", "scald"], + "abilities": ["Swift Swim"] + } + ] + }, + "shiftry": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["defog", "knockoff", "leafstorm", "lowkick", "suckerpunch"], + "abilities": ["Chlorophyll", "Pickpocket"] + }, + { + "role": "Setup Sweeper", + "movepool": ["knockoff", "leafblade", "lowkick", "suckerpunch", "swordsdance"], + "abilities": ["Chlorophyll", "Pickpocket"] + } + ] + }, + "swellow": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["bravebird", "facade", "protect", "uturn"], + "abilities": ["Guts"] + }, + { + "role": "Wallbreaker", + "movepool": ["bravebird", "facade", "quickattack", "uturn"], + "abilities": ["Guts"] + } + ] + }, + "pelipper": { + "level": 91, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "hurricane", "knockoff", "roost", "scald", "toxic", "uturn"], + "abilities": ["Rain Dish"] + }, + { + "role": "Bulky Support", + "movepool": ["defog", "knockoff", "roost", "scald", "toxic", "uturn"], + "abilities": ["Rain Dish"] + } + ] + }, + "gardevoir": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["calmmind", "focusblast", "healingwish", "moonblast", "psychic", "shadowball", "thunderbolt", "trick"], + "abilities": ["Trace"], + "preferredTypes": ["Fighting"] + }, + { + "role": "Fast Support", + "movepool": ["willowisp", "healingwish", "rapidspin", "psychic", "moonblast"], + "abilities": ["Trace"], + "preferredTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "focusblast", "moonblast", "psyshock", "substitute", "willowisp"], + "abilities": ["Trace"] + } + ] + }, + "gardevoirmega": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "encore", "focusblast", "hypervoice", "psyshock", "taunt", "willowisp", "mysticalfire"], + "abilities": ["Trace"] + }, + { + "role": "Fast Attacker", + "movepool": ["focusblast", "hypervoice", "psyshock", "substitute", "taunt", "willowisp", "rapidspin"], + "abilities": ["Trace"], + "preferredTypes": ["Fighting"] + } + ] + }, + "masquerain": { + "level": 90, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["airslash", "bugbuzz", "hydropump", "quiverdance"], + "abilities": ["Intimidate"] + }, + { + "role": "Fast Support", + "movepool": ["airslash", "bugbuzz", "roost", "scald", "stickyweb", "stunspore", "uturn"], + "abilities": ["Intimidate"] + } + ] + }, + "breloom": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["bulletseed", "machpunch", "rocktomb", "spore", "swordsdance"], + "abilities": ["Technician"] + }, + { + "role": "Setup Sweeper", + "movepool": ["bulletseed", "machpunch", "rocktomb", "swordsdance"], + "abilities": ["Technician"] + } + ] + }, + "vigoroth": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["bodyslam", "bulkup", "earthquake", "return", "shadowclaw", "slackoff"], + "abilities": ["Vital Spirit"] + } + ] + }, + "slaking": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthquake", "gigaimpact", "nightslash", "retaliate"], + "abilities": ["Truant"] + }, + { + "role": "Wallbreaker", + "movepool": ["doubleedge", "earthquake", "gigaimpact", "pursuit"], + "abilities": ["Truant"] + } + ] + }, + "ninjask": { + "level": 93, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["aerialace", "nightslash", "swordsdance", "uturn", "xscissor"], + "abilities": ["Infiltrator"] + } + ] + }, + "shedinja": { + "level": 95, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["shadowclaw", "shadowsneak", "swordsdance", "willowisp", "xscissor"], + "abilities": ["Wonder Guard"] + } + ] + }, + "exploud": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["boomburst", "fireblast", "focusblast", "surf"], + "abilities": ["Scrappy"] + } + ] + }, + "hariyama": { + "level": 86, + "sets": [ + { + "role": "AV Pivot", + "movepool": ["bulletpunch", "closecombat", "heavyslam", "knockoff", "stoneedge"], + "abilities": ["Guts", "Thick Fat"], + "preferredTypes": ["Dark"] + }, + { + "role": "Wallbreaker", + "movepool": ["bulletpunch", "closecombat", "facade", "fakeout", "knockoff"], + "abilities": ["Guts"], + "preferredTypes": ["Dark"] + } + ] + }, + "delcatty": { + "level": 100, + "sets": [ + { + "role": "Fast Support", + "movepool": ["doubleedge", "fakeout", "healbell", "suckerpunch", "thunderwave", "toxic"], + "abilities": ["Wonder Skin"] + } + ] + }, + "sableye": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["foulplay", "knockoff", "recover", "taunt", "willowisp"], + "abilities": ["Prankster"] + } + ] + }, + "sableyemega": { + "level": 81, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "darkpulse", "recover", "willowisp"], + "abilities": ["Prankster"] + } + ] + }, + "mawile": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["ironhead", "knockoff", "playrough", "stealthrock", "suckerpunch", "swordsdance", "slackoff", "rockslide"], + "abilities": ["Intimidate", "Sheer Force"] + }, + { + "role": "Bulky Support", + "movepool": ["knockoff", "playrough", "stealthrock", "slackoff"], + "abilities": ["Intimidate"] + } + ] + }, + "mawilemega": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["ironhead", "knockoff", "playrough", "stealthrock", "suckerpunch", "swordsdance", "slackoff", "rockslide"], + "abilities": ["Intimidate"] + }, + { + "role": "Wallbreaker", + "movepool": ["ironhead", "knockoff", "playrough", "firepunch", "suckerpunch", "swordsdance", "rockslide"], + "abilities": ["Intimidate"] + } + ] + }, + "aggron": { + "level": 86, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"], + "abilities": ["Rock Head"] + }, + { + "role": "Wallbreaker", + "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "voltswitch"], + "abilities": ["Rock Head"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Attacker", + "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"], + "abilities": ["Rock Head"], + "preferredTypes": ["Ground"] + } + ] + }, + "aggronmega": { + "level": 78, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "heavyslam", "roar", "stealthrock", "stoneedge", "thunderwave", "toxic"], + "abilities": ["Sturdy"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Attacker", + "movepool": ["voltswitch", "earthquake", "stoneedge", "heavyslam", "stealthrock", "toxic", "protect"], + "abilities": ["Rock Head"], + "preferredTypes": ["Ground"] + } + ] + }, + "medicham": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["bulletpunch", "closecombat", "icepunch", "gunkshot", "zenheadbutt", "healingwish"], + "abilities": ["Pure Power"] + } + ] + }, + "medichammega": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["focusblast", "psychic", "psyshock", "thunderbolt", "shadowball", "vacuumwave"], + "abilities": ["Telepathy"], + "preferredTypes": ["Ghost"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "psychic", "recover", "vacuumwave"], + "abilities": ["Telepathy"] + } + ] + }, + "manectric": { + "level": 84, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["flamethrower", "hiddenpowerice", "overheat", "thunderbolt", "voltswitch"], + "abilities": ["Lightning Rod"] + } + ] + }, + "manectricmega": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["hiddenpowerice", "overheat", "thunderbolt", "voltswitch"], + "abilities": ["Lightning Rod"] + } + ] + }, + "plusle": { + "level": 93, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["encore", "hiddenpowerice", "nastyplot", "substitute", "thunderbolt"], + "abilities": ["Lightning Rod"], + "preferredTypes": ["Ice"] + }, + { + "role": "Setup Sweeper", + "movepool": ["grassknot", "hiddenpowerice", "nastyplot", "thunderbolt"], + "abilities": ["Lightning Rod"] + } + ] + }, + "minun": { + "level": 93, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["encore", "hiddenpowerice", "nastyplot", "substitute", "thunderbolt"], + "abilities": ["Volt Absorb"], + "preferredTypes": ["Ice"] + }, + { + "role": "Setup Sweeper", + "movepool": ["grassknot", "hiddenpowerice", "nastyplot", "thunderbolt"], + "abilities": ["Volt Absorb"] + } + ] + }, + "volbeat": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["encore", "roost", "thunderwave", "uturn"], + "abilities": ["Prankster"] + } + ] + }, + "illumise": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["bugbuzz", "encore", "roost", "thunderwave"], + "abilities": ["Prankster"] + } + ] + }, + "swalot": { + "level": 90, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "encore", "icebeam", "painsplit", "sludgebomb", "toxic", "yawn"], + "abilities": ["Liquid Ooze"], + "preferredTypes": ["Ground"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "protect", "sludgebomb", "toxic"], + "abilities": ["Liquid Ooze"] + } + ] + }, + "sharpedo": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["crunch", "destinybond", "earthquake", "icebeam", "protect", "waterfall"], + "abilities": ["Speed Boost"] + } + ] + }, + "sharpedomega": { + "level": 78, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["thunder", "blizzard", "protect", "hydropump"], + "abilities": ["Speed Boost"] + } + ] + }, + "wailord": { + "level": 93, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "waterspout"], + "abilities": ["Water Veil"] + } + ] + }, + "camerupt": { + "level": 89, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "fireblast", "rockpolish", "stoneedge"], + "abilities": ["Solid Rock"] + }, + { + "role": "Bulky Support", + "movepool": ["earthquake", "lavaplume", "morningsun", "roar", "stealthrock", "toxic"], + "abilities": ["Solid Rock"] + } + ] + }, + "cameruptmega": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["morningsun", "earthpower", "fireblast", "stealthrock", "toxic", "willowisp"], + "abilities": ["Solid Rock"] + } + ] + }, + "torkoal": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "lavaplume", "rapidspin", "stealthrock", "yawn"], + "abilities": ["Shell Armor"] + } + ] + }, + "grumpig": { + "level": 92, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["focusblast", "healbell", "psychic", "thunderwave", "toxic", "whirlwind"], + "abilities": ["Thick Fat"] + } + ] + }, + "spinda": { + "level": 97, + "sets": [ + { + "role": "Staller", + "movepool": ["rest", "return", "sleeptalk", "suckerpunch", "superpower", "thief"], + "abilities": ["Contrary"], + "preferredTypes": ["Fighting"] + } + ] + }, + "flygon": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthquake", "outrage", "stoneedge", "uturn"], + "abilities": ["Levitate"] + }, + { + "role": "Bulky Support", + "movepool": ["defog", "dracometeor", "earthquake", "roost", "uturn"], + "abilities": ["Levitate"] + } + ] + }, + "cacturne": { + "level": 90, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["darkpulse", "gigadrain", "spikes", "suckerpunch", "superpower"], + "abilities": ["Water Absorb"] + }, + { + "role": "Setup Sweeper", + "movepool": ["drainpunch", "seedbomb", "suckerpunch", "swordsdance"], + "abilities": ["Water Absorb"] + } + ] + }, + "altaria": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["dragondance", "earthquake", "outrage", "roost"], + "abilities": ["Natural Cure"] + }, + { + "role": "Bulky Support", + "movepool": ["dracometeor", "earthquake", "fireblast", "healbell", "roost", "toxic"], + "abilities": ["Natural Cure"] + } + ] + }, + "altariamega": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["moonblast", "hydropump", "fireblast", "roost"], + "abilities": ["Natural Cure"] + } + ] + }, + "zangoose": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["closecombat", "facade", "knockoff", "quickattack", "swordsdance"], + "abilities": ["Toxic Boost"], + "preferredTypes": ["Dark"] + } + ] + }, + "seviper": { + "level": 91, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthquake", "flamethrower", "gigadrain", "glare", "knockoff", "sludgewave", "suckerpunch", "switcheroo"], + "abilities": ["Infiltrator"], + "preferredTypes": ["Ground"] + } + ] + }, + "lunatone": { + "level": 96, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthpower", "icebeam", "moonblast", "moonlight", "psychic", "rockpolish"], + "abilities": ["Levitate"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["earthpower", "moonlight", "psychic", "stealthrock", "toxic"], + "abilities": ["Levitate"] + } + ] + }, + "solrock": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "morningsun", "stealthrock", "stoneedge", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "whiscash": { + "level": 88, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "earthquake", "stoneedge", "waterfall"], + "abilities": ["Hydration", "Oblivious"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "protect", "scald", "toxic"], + "abilities": ["Hydration", "Oblivious"] + } + ] + }, + "crawdaunt": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["aquajet", "crabhammer", "dragondance", "knockoff", "superpower"], + "abilities": ["Adaptability"] + } + ] + }, + "claydol": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "icebeam", "psychic", "rapidspin", "stealthrock", "toxic"], + "abilities": ["Levitate"] + } + ] + }, + "cradily": { + "level": 89, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["curse", "earthquake", "recover", "seedbomb", "stoneedge", "swordsdance"], + "abilities": ["Storm Drain"] + }, + { + "role": "Bulky Attacker", + "movepool": ["earthpower", "gigadrain", "recover", "stealthrock", "stoneedge", "toxic"], + "abilities": ["Storm Drain"], + "preferredTypes": ["Grass"] + } + ] + }, + "armaldo": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "knockoff", "rapidspin", "stealthrock", "stoneedge", "toxic", "xscissor"], + "abilities": ["Battle Armor", "Swift Swim"] + }, + { + "role": "Bulky Attacker", + "movepool": ["aquajet", "earthquake", "knockoff", "stoneedge", "swordsdance", "xscissor"], + "abilities": ["Battle Armor", "Swift Swim"] + } + ] + }, + "milotic": { + "level": 83, + "sets": [ + { + "role": "Staller", + "movepool": ["dragontail", "haze", "icebeam", "recover", "scald", "toxic"], + "abilities": ["Competitive", "Marvel Scale"] + } + ] + }, + "castform": { + "level": 97, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["fireblast", "icebeam", "return", "scald", "thunderbolt", "thunderwave"], + "abilities": ["Forecast"], + "preferredTypes": ["Water"] + } + ] + }, + "kecleon": { + "level": 89, + "sets": [ + { + "role": "Fast Support", + "movepool": ["drainpunch", "fakeout", "knockoff", "recover", "shadowsneak", "stealthrock", "suckerpunch"], + "abilities": ["Protean"], + "preferredTypes": ["Fighting"] + }, + { + "role": "Bulky Attacker", + "movepool": ["drainpunch", "knockoff", "recover", "stealthrock", "thunderwave", "toxic"], + "abilities": ["Protean"] + } + ] + }, + "banette": { + "level": 90, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["gunkshot", "knockoff", "shadowclaw", "shadowsneak", "thunderwave", "willowisp"], + "abilities": ["Cursed Body", "Frisk", "Insomnia"] + } + ] + }, + "banettemega": { + "level": 87, + "sets": [ + { + "role": "Fast Support", + "movepool": ["powder", "knockoff", "ironhead", "taunt", "willowisp", "stealthrock", "defog"], + "abilities": ["Frisk"] + } + ] + }, + "tropius": { + "level": 94, + "sets": [ + { + "role": "Staller", + "movepool": ["airslash", "leechseed", "protect", "substitute"], + "abilities": ["Harvest"] + } + ] + }, + "chimecho": { + "level": 97, + "sets": [ + { + "role": "Staller", + "movepool": ["healbell", "knockoff", "psychic", "recover", "toxic"], + "abilities": ["Levitate"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "psychic", "psyshock", "recover", "signalbeam"], + "abilities": ["Levitate"] + } + ] + }, + "absol": { + "level": 84, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["knockoff", "playrough", "pursuit", "suckerpunch", "closecombat", "swordsdance"], + "abilities": ["Justified"], + "preferredTypes": ["Fairy"] + } + ] + }, + "absolmega": { + "level": 80, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["irontail", "knockoff", "playrough", "pursuit", "suckerpunch", "closecombat", "swordsdance"], + "abilities": ["Justified"], + "preferredTypes": ["Fairy"] + }, + { + "role": "Fast Attacker", + "movepool": ["knockoff", "moonblast", "suckerpunch", "closecombat", "fireblast"], + "abilities": ["Justified"] + } + ] + }, + "glalie": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "freezedry", "spikes", "superfang", "taunt"], + "abilities": ["Inner Focus"] + } + ] + }, + "glaliemega": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthquake", "explosion", "freezedry", "iceshard", "doubleedge", "spikes"], + "abilities": ["Inner Focus"], + "preferredTypes": ["Ground"] + }, + { + "role": "Wallbreaker", + "movepool": ["earthquake", "iceshard", "boomburst", "doubleedge"], + "abilities": ["Inner Focus"], + "preferredTypes": ["Ground"] + } + ] + }, + "walrein": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["icebeam", "roar", "superfang", "surf", "toxic"], + "abilities": ["Thick Fat"] + }, + { + "role": "Staller", + "movepool": ["icebeam", "protect", "surf", "toxic"], + "abilities": ["Thick Fat"] + } + ] + }, + "huntail": { + "level": 84, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["icebeam", "return", "shellsmash", "suckerpunch", "waterfall"], + "abilities": ["Swift Swim", "Water Veil"], + "preferredTypes": ["Ice"] + } + ] + }, + "gorebyss": { + "level": 83, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "shellsmash"], + "abilities": ["Swift Swim"] + } + ] + }, + "relicanth": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "headsmash", "stealthrock", "toxic", "waterfall"], + "abilities": ["Rock Head"] + }, + { + "role": "Wallbreaker", + "movepool": ["doubleedge", "earthquake", "headsmash", "waterfall"], + "abilities": ["Rock Head"] + }, + { + "role": "Bulky Setup", + "movepool": ["earthquake", "headsmash", "rockpolish", "waterfall"], + "abilities": ["Rock Head"] + } + ] + }, + "luvdisc": { + "level": 100, + "sets": [ + { + "role": "Staller", + "movepool": ["icebeam", "protect", "scald", "substitute", "toxic"], + "abilities": ["Hydration"] + } + ] + }, + "salamence": { + "level": 75, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "earthquake", "outrage", "roost", "ironhead"], + "abilities": ["Intimidate", "Moxie"] + } + ] + }, + "salamencemega": { + "level": 74, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["outrage", "dragondance", "earthquake", "hurricane", "roost"], + "abilities": ["Intimidate"] + }, + { + "role": "Fast Attacker", + "movepool": ["hurricane", "fireblast", "dracometeor", "roost"], + "abilities": ["Intimidate"] + } + ] + }, + "metagross": { + "level": 80, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["agility", "earthquake", "icepunch", "meteormash", "thunderpunch", "zenheadbutt"], + "abilities": ["Clear Body"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["bulletpunch", "earthquake", "explosion", "icepunch", "meteormash", "stealthrock", "thunderpunch", "zenheadbutt"], + "abilities": ["Clear Body"], + "preferredTypes": ["Ground"] + } + ] + }, + "metagrossmega": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["agility", "earthquake", "hammerarm", "meteormash", "zenheadbutt"], + "abilities": ["Clear Body"], + "preferredTypes": ["Psychic"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "hammerarm", "honeclaws", "meteormash", "zenheadbutt"], + "abilities": ["Clear Body"], + "preferredTypes": ["Psychic"] + } + ] + }, + "regirock": { + "level": 86, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["curse", "drainpunch", "rest", "stoneedge"], + "abilities": ["Sturdy"] + }, + { + "role": "Bulky Support", + "movepool": ["drainpunch", "earthquake", "stealthrock", "stoneedge", "thunderwave", "toxic"], + "abilities": ["Sturdy"] + } + ] + }, + "regice": { + "level": 87, + "sets": [ + { + "role": "Staller", + "movepool": ["icebeam", "protect", "thunderbolt", "toxic"], + "abilities": ["Clear Body"] + }, + { + "role": "Bulky Attacker", + "movepool": ["focusblast", "icebeam", "rest", "sleeptalk", "thunderbolt", "thunderwave"], + "abilities": ["Clear Body"], + "preferredTypes": ["Electric"] + }, + { + "role": "Bulky Setup", + "movepool": ["focusblast", "icebeam", "rockpolish", "thunderbolt"], + "abilities": ["Clear Body"] + } + ] + }, + "registeel": { + "level": 82, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["curse", "ironhead", "rest", "sleeptalk"], + "abilities": ["Clear Body"] + }, + { + "role": "Bulky Support", + "movepool": ["rest", "seismictoss", "sleeptalk", "toxic"], + "abilities": ["Clear Body"] + }, + { + "role": "Staller", + "movepool": ["protect", "seismictoss", "stealthrock", "thunderwave", "toxic"], + "abilities": ["Clear Body"] + } + ] + }, + "latias": { + "level": 74, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "dracometeor", "psyshock", "roost"], + "abilities": ["Levitate"] + } + ] + }, + "latiasmega": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "dracometeor", "psyshock", "roost"], + "abilities": ["Levitate"] + } + ] + }, + "latios": { + "level": 72, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "dracometeor", "psyshock", "roost"], + "abilities": ["Levitate"] + } + ] + }, + "latiosmega": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "dracometeor", "psyshock", "roost"], + "abilities": ["Levitate"] + }, + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "zenheadbutt", "dracometeor", "earthquake"], + "abilities": ["Levitate"] + }, + { + "role": "Fast Attacker", + "movepool": ["defog", "dracometeor", "psyshock", "roost", "icebeam"], + "abilities": ["Levitate"] + } + ] + }, + "kyogre": { + "level": 67, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["icebeam", "originpulse", "scald", "thunder", "waterspout"], + "abilities": ["Drizzle"] + } + ] + }, + "kyogreprimal": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "rest", "scald", "sleeptalk"], + "abilities": ["Drizzle"] + }, + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "icebeam", "originpulse", "thunder"], + "abilities": ["Drizzle"] + } + ] + }, + "groudon": { + "level": 74, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["dragontail", "lavaplume", "precipiceblades", "stealthrock", "stoneedge", "thunderwave"], + "abilities": ["Drought"] + }, + { + "role": "Bulky Setup", + "movepool": ["firepunch", "precipiceblades", "rockpolish", "stoneedge", "swordsdance"], + "abilities": ["Drought"] + } + ] + }, + "groudonprimal": { + "level": 64, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["dragontail", "lavaplume", "precipiceblades", "stealthrock", "thunderwave"], + "abilities": ["Drought"] + }, + { + "role": "Bulky Setup", + "movepool": ["firepunch", "precipiceblades", "rockpolish", "swordsdance"], + "abilities": ["Drought"] + } + ] + }, + "rayquaza": { + "level": 72, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["dracometeor", "earthquake", "extremespeed", "outrage", "vcreate"], + "abilities": ["Air Lock"] + }, + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "earthquake", "extremespeed", "outrage", "vcreate", "coil"], + "abilities": ["Air Lock"] + }, + { + "role": "Fast Attacker", + "movepool": ["earthquake", "extremespeed", "outrage", "swordsdance", "vcreate"], + "abilities": ["Air Lock"], + "preferredTypes": ["Normal"] + } + ] + }, + "rayquazamega": { + "level": 65, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["dragonascent", "dragondance", "earthquake", "extremespeed", "vcreate", "coil"], + "abilities": ["Air Lock"] + } + ] + }, + "jirachi": { + "level": 78, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["bodyslam", "firepunch", "healingwish", "ironhead", "protect", "stealthrock", "toxic", "uturn", "wish"], + "abilities": ["Serene Grace"] + } + ] + }, + "deoxys": { + "level": 74, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["extremespeed", "knockoff", "psychoboost", "superpower"], + "abilities": ["Pressure"] + }, + { + "role": "Fast Attacker", + "movepool": ["icebeam", "knockoff", "psychoboost", "superpower"], + "abilities": ["Pressure"] + } + ] + }, + "deoxysattack": { + "level": 72, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["extremespeed", "knockoff", "psychoboost", "superpower"], + "abilities": ["Pressure"] + }, + { + "role": "Fast Attacker", + "movepool": ["icebeam", "knockoff", "psychoboost", "superpower"], + "abilities": ["Pressure"] + } + ] + }, + "deoxysdefense": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["knockoff", "recover", "seismictoss", "spikes", "stealthrock", "taunt", "toxic"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Setup", + "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "recover", "signalbeam"], + "abilities": ["Pressure"] + } + ] + }, + "deoxysspeed": { + "level": 81, + "sets": [ + { + "role": "Fast Support", + "movepool": ["knockoff", "psychoboost", "spikes", "stealthrock", "superpower", "taunt"], + "abilities": ["Pressure"] + }, + { + "role": "Setup Sweeper", + "movepool": ["darkpulse", "focusblast", "nastyplot", "psychoboost"], + "abilities": ["Pressure"] + } + ] + }, + "torterra": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "stealthrock", "stoneedge", "synthesis", "woodhammer"], + "abilities": ["Overgrow"] + }, + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "rockpolish", "stoneedge", "woodhammer"], + "abilities": ["Overgrow"] + } + ] + }, + "infernape": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["closecombat", "grassknot", "machpunch", "overheat", "stealthrock"], + "abilities": ["Blaze", "Iron Fist"] + }, + { + "role": "Fast Support", + "movepool": ["closecombat", "flareblitz", "machpunch", "stoneedge", "swordsdance", "uturn"], + "abilities": ["Blaze", "Iron Fist"] + } + ] + }, + "empoleon": { + "level": 82, + "sets": [ + { + "role": "Staller", + "movepool": ["defog", "knockoff", "protect", "scald", "stealthrock", "toxic"], + "abilities": ["Torrent"] + }, + { + "role": "Bulky Support", + "movepool": ["defog", "icebeam", "knockoff", "roar", "scald", "toxic"], + "abilities": ["Torrent"] + }, + { + "role": "Bulky Attacker", + "movepool": ["flashcannon", "grassknot", "hydropump", "icebeam", "knockoff", "scald"], + "abilities": ["Torrent"] + } + ] + }, + "staraptor": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["bravebird", "closecombat", "doubleedge", "quickattack", "uturn"], + "abilities": ["Reckless"], + "preferredTypes": ["Fighting"] + } + ] + }, + "bibarel": { + "level": 95, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["quickattack", "return", "waterfall", "workup"], + "abilities": ["Simple"] + }, + { + "role": "Bulky Setup", + "movepool": ["curse", "quickattack", "return", "waterfall"], + "abilities": ["Simple"] + } + ] + }, + "kricketune": { + "level": 98, + "sets": [ + { + "role": "Fast Support", + "movepool": ["bugbite", "knockoff", "stickyweb", "taunt", "toxic"], + "abilities": ["Technician"] + } + ] + }, + "luxray": { + "level": 88, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["crunch", "facade", "superpower", "wildcharge"], + "abilities": ["Guts"] + }, + { + "role": "AV Pivot", + "movepool": ["crunch", "icefang", "superpower", "voltswitch", "wildcharge"], + "abilities": ["Intimidate"], + "preferredTypes": ["Fighting"] + } + ] + }, + "roserade": { + "level": 83, + "sets": [ + { + "role": "Fast Support", + "movepool": ["gigadrain", "hiddenpowerground", "leafstorm", "sleeppowder", "sludgebomb", "spikes", "synthesis", "toxicspikes"], + "abilities": ["Natural Cure", "Technician"] + } + ] + }, + "rampardos": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "firepunch", "rockpolish", "rockslide", "zenheadbutt"], + "abilities": ["Sheer Force"] + }, + { + "role": "Fast Attacker", + "movepool": ["earthquake", "firepunch", "headsmash", "rockslide"], + "abilities": ["Sheer Force"] + } + ] + }, + "bastiodon": { + "level": 95, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"], + "abilities": ["Sturdy"] + } + ] + }, + "wormadam": { + "level": 100, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["hiddenpowerground", "hiddenpowerrock", "leafstorm", "signalbeam", "synthesis", "toxic"], + "abilities": ["Anticipation", "Overcoat"] + }, + { + "role": "Wallbreaker", + "movepool": ["hiddenpowerground", "hiddenpowerrock", "leafstorm", "psychic", "signalbeam"], + "abilities": ["Anticipation", "Overcoat"] + }, + { + "role": "Staller", + "movepool": ["gigadrain", "hiddenpowerground", "protect", "toxic"], + "abilities": ["Anticipation", "Overcoat"] + } + ] + }, + "wormadamsandy": { + "level": 90, + "sets": [ + { + "role": "Staller", + "movepool": ["earthquake", "infestation", "protect", "stealthrock", "toxic"], + "abilities": ["Overcoat"] + } + ] + }, + "wormadamtrash": { + "level": 88, + "sets": [ + { + "role": "Staller", + "movepool": ["flashcannon", "infestation", "protect", "stealthrock", "toxic"], + "abilities": ["Overcoat"] + } + ] + }, + "mothim": { + "level": 94, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["airslash", "bugbuzz", "energyball", "quiverdance"], + "abilities": ["Tinted Lens"] + } + ] + }, + "vespiquen": { + "level": 100, + "sets": [ + { + "role": "Staller", + "movepool": ["airslash", "defog", "roost", "toxic", "uturn"], + "abilities": ["Pressure"] + } + ] + }, + "pachirisu": { + "level": 95, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["nuzzle", "superfang", "thunderbolt", "toxic", "uturn"], + "abilities": ["Volt Absorb"] + } + ] + }, + "floatzel": { + "level": 86, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bulkup", "icepunch", "lowkick", "substitute", "waterfall"], + "abilities": ["Water Veil"], + "preferredTypes": ["Ice"] + }, + { + "role": "Fast Attacker", + "movepool": ["aquajet", "crunch", "icepunch", "lowkick", "waterfall"], + "abilities": ["Water Veil"], + "preferredTypes": ["Ice"] + } + ] + }, + "cherrim": { + "level": 97, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["dazzlinggleam", "energyball", "healingwish", "hiddenpowerfire", "hiddenpowerground", "hiddenpowerrock", "morningsun"], + "abilities": ["Flower Gift"] + }, + { + "role": "Staller", + "movepool": ["aromatherapy", "energyball", "hiddenpowerground", "leechseed", "morningsun", "toxic"], + "abilities": ["Flower Gift"] + } + ] + }, + "gastrodon": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["clearsmog", "earthquake", "icebeam", "recover", "scald", "toxic"], + "abilities": ["Storm Drain"] + } + ] + }, + "ambipom": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["fakeout", "knockoff", "lowkick", "return", "uturn"], + "abilities": ["Technician"], + "preferredTypes": ["Dark"] + } + ] + }, + "drifblim": { + "level": 83, + "sets": [ + { + "role": "Fast Support", + "movepool": ["acrobatics", "defog", "destinybond", "shadowball", "substitute", "willowisp"], + "abilities": ["Unburden"] + }, + { + "role": "Bulky Support", + "movepool": ["acrobatics", "hex", "substitute", "willowisp"], + "abilities": ["Unburden"] + } + ] + }, + "lopunny": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["healingwish", "highjumpkick", "icepunch", "return", "switcheroo"], + "abilities": ["Limber"] + } + ] + }, + "lopunnymega": { + "level": 76, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["encore", "fakeout", "highjumpkick", "poweruppunch", "return", "substitute"], + "abilities": ["Limber"] + } + ] + }, + "mismagius": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["dazzlinggleam", "destinybond", "painsplit", "shadowball", "taunt", "willowisp"], + "abilities": ["Levitate"] + }, + { + "role": "Wallbreaker", + "movepool": ["dazzlinggleam", "nastyplot", "shadowball", "thunderbolt", "trick"], + "abilities": ["Levitate"] + } + ] + }, + "honchkrow": { + "level": 82, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["bravebird", "heatwave", "pursuit", "roost", "suckerpunch", "superpower"], + "abilities": ["Moxie"] + } + ] + }, + "purugly": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["fakeout", "knockoff", "return", "uturn", "wakeupslap"], + "abilities": ["Defiant", "Thick Fat"], + "preferredTypes": ["Dark"] + } + ] + }, + "skuntank": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["crunch", "defog", "fireblast", "poisonjab", "pursuit", "suckerpunch", "taunt"], + "abilities": ["Aftermath"] + } + ] + }, + "bronzong": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "ironhead", "psychic", "stealthrock", "toxic"], + "abilities": ["Levitate"], + "preferredTypes": ["Ground"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "ironhead", "protect", "psychic", "toxic"], + "abilities": ["Levitate"], + "preferredTypes": ["Ground"] + } + ] + }, + "chatot": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["boomburst", "chatter", "heatwave", "hiddenpowerground", "uturn"], + "abilities": ["Tangled Feet"] + }, + { + "role": "Setup Sweeper", + "movepool": ["boomburst", "chatter", "heatwave", "nastyplot", "substitute"], + "abilities": ["Tangled Feet"] + } + ] + }, + "spiritomb": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "darkpulse", "rest", "sleeptalk"], + "abilities": ["Infiltrator"] + }, + { + "role": "Bulky Attacker", + "movepool": ["foulplay", "painsplit", "pursuit", "suckerpunch", "toxic", "willowisp"], + "abilities": ["Infiltrator"] + } + ] + }, + "garchomp": { + "level": 75, + "sets": [ + { + "role": "Fast Support", + "movepool": ["dragonclaw", "earthquake", "fireblast", "outrage", "stealthrock", "stoneedge", "toxic"], + "abilities": ["Rough Skin"] + }, + { + "role": "Fast Attacker", + "movepool": ["earthquake", "firefang", "outrage", "stoneedge", "swordsdance"], + "abilities": ["Rough Skin"] + } + ] + }, + "garchompmega": { + "level": 76, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["dracometeor", "earthquake", "fireblast", "stealthrock", "stoneedge"], + "abilities": ["Rough Skin"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "firefang", "outrage", "stoneedge", "swordsdance"], + "abilities": ["Rough Skin"] + } + ] + }, + "lucario": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["bulletpunch", "closecombat", "crunch", "extremespeed", "stoneedge", "swordsdance"], + "abilities": ["Justified"], + "preferredTypes": ["Normal"] + }, + { + "role": "Setup Sweeper", + "movepool": ["aurasphere", "flashcannon", "nastyplot", "vacuumwave"], + "abilities": ["Inner Focus"] + } + ] + }, + "lucariomega": { + "level": 79, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["bulletpunch", "closecombat", "meteormash", "swordsdance"], + "abilities": ["Justified"] + }, + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "flashcannon", "nastyplot", "vacuumwave"], + "abilities": ["Justified"] + } + ] + }, + "hippowdon": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "slackoff", "stealthrock", "stoneedge", "toxic", "whirlwind"], + "abilities": ["Sand Stream"] + } + ] + }, + "drapion": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["aquatail", "earthquake", "knockoff", "poisonjab", "pursuit", "swordsdance"], + "abilities": ["Battle Armor"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["earthquake", "knockoff", "poisonjab", "taunt", "toxicspikes", "whirlwind"], + "abilities": ["Battle Armor"] + } + ] + }, + "toxicroak": { + "level": 83, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["drainpunch", "earthquake", "gunkshot", "knockoff", "substitute", "suckerpunch", "swordsdance"], + "abilities": ["Dry Skin"] + } + ] + }, + "carnivine": { + "level": 100, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["knockoff", "powerwhip", "sleeppowder", "swordsdance", "synthesis", "toxic"], + "abilities": ["Levitate"] + } + ] + }, + "lumineon": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["defog", "icebeam", "scald", "toxic", "uturn"], + "abilities": ["Storm Drain"] + } + ] + }, + "abomasnow": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["blizzard", "earthquake", "gigadrain", "iceshard", "woodhammer"], + "abilities": ["Snow Warning"], + "preferredTypes": ["Ground"] + } + ] + }, + "abomasnowmega": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["icebeam", "earthquake", "gigadrain", "iceshard", "woodhammer"], + "abilities": ["Snow Warning"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["icebeam", "gigadrain", "leechseed", "earthquake"], + "abilities": ["Snow Warning"] + } + ] + }, + "weavile": { + "level": 77, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["iceshard", "iciclecrash", "knockoff", "lowkick", "pursuit", "swordsdance"], + "abilities": ["Pickpocket"] + } + ] + }, + "magnezone": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"], + "abilities": ["Analytic", "Magnet Pull"] + }, + { + "role": "Staller", + "movepool": ["flashcannon", "protect", "thunderbolt", "toxic"], + "abilities": ["Analytic"] + } + ] + }, + "lickilicky": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["bodyslam", "knockoff", "protect", "wish"], + "abilities": ["Cloud Nine", "Oblivious"] + }, + { + "role": "AV Pivot", + "movepool": ["bodyslam", "dragontail", "earthquake", "explosion", "knockoff", "powerwhip"], + "abilities": ["Cloud Nine", "Own Tempo"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Setup", + "movepool": ["bodyslam", "earthquake", "explosion", "knockoff", "powerwhip", "return", "swordsdance"], + "abilities": ["Cloud Nine", "Oblivious"], + "preferredTypes": ["Dark"] + } + ] + }, + "rhyperior": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["dragontail", "earthquake", "icepunch", "megahorn", "stoneedge"], + "abilities": ["Solid Rock"] + }, + { + "role": "Bulky Setup", + "movepool": ["earthquake", "icepunch", "megahorn", "rockpolish", "stoneedge"], + "abilities": ["Solid Rock"] + } + ] + }, + "tangrowth": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "knockoff", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder", "sludgebomb"], + "abilities": ["Regenerator"] + }, + { + "role": "AV Pivot", + "movepool": ["earthquake", "gigadrain", "knockoff", "powerwhip", "rockslide", "sludgebomb"], + "abilities": ["Regenerator"] + } + ] + }, + "electivire": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["crosschop", "earthquake", "flamethrower", "icepunch", "voltswitch", "wildcharge"], + "abilities": ["Motor Drive"], + "preferredTypes": ["Ice"] + } + ] + }, + "magmortar": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "fireblast", "focusblast", "hiddenpowerice", "taunt", "thunderbolt"], + "abilities": ["Flame Body"], + "preferredTypes": ["Electric"] + } + ] + }, + "togekiss": { + "level": 79, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["airslash", "aurasphere", "nastyplot", "roost", "thunderwave"], + "abilities": ["Serene Grace"] + }, + { + "role": "Bulky Attacker", + "movepool": ["airslash", "defog", "healbell", "roost", "thunderwave"], + "abilities": ["Serene Grace"] + }, + { + "role": "Fast Attacker", + "movepool": ["airslash", "aurasphere", "dazzlinggleam", "trick"], + "abilities": ["Serene Grace"] + } + ] + }, + "yanmega": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["airslash", "bugbuzz", "hiddenpowerground", "protect"], + "abilities": ["Speed Boost"] + }, + { + "role": "Wallbreaker", + "movepool": ["airslash", "bugbuzz", "gigadrain", "uturn"], + "abilities": ["Tinted Lens"] + } + ] + }, + "leafeon": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["doubleedge", "knockoff", "leafblade", "substitute", "swordsdance", "synthesis"], + "abilities": ["Chlorophyll"], + "preferredTypes": ["Dark"] + } + ] + }, + "glaceon": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["healbell", "hiddenpowerground", "icebeam", "protect", "wish"], + "abilities": ["Ice Body"] + }, + { + "role": "Staller", + "movepool": ["icebeam", "protect", "toxic", "wish"], + "abilities": ["Ice Body"] + } + ] + }, + "gliscor": { + "level": 77, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "protect", "substitute", "toxic"], + "abilities": ["Poison Heal"] + }, + { + "role": "Staller", + "movepool": ["defog", "earthquake", "knockoff", "roost", "stealthrock", "taunt", "toxic", "uturn"], + "abilities": ["Poison Heal"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "facade", "roost", "swordsdance"], + "abilities": ["Poison Heal"] + } + ] + }, + "mamoswine": { + "level": 78, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthquake", "iceshard", "iciclecrash", "knockoff", "stealthrock"], + "abilities": ["Thick Fat"] + } + ] + }, + "porygonz": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["icebeam", "nastyplot", "shadowball", "thunderbolt", "triattack", "trick"], + "abilities": ["Adaptability", "Download"] + } + ] + }, + "gallade": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["closecombat", "icepunch", "knockoff", "shadowsneak", "swordsdance", "zenheadbutt", "machpunch"], + "abilities": ["Justified"], + "preferredTypes": ["Dark"] + } + ] + }, + "gallademega": { + "level": 77, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["sacredsword", "knockoff", "swordsdance", "psychocut"], + "abilities": ["Justified"] + } + ] + }, + "probopass": { + "level": 91, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthpower", "flashcannon", "stealthrock", "thunderwave", "toxic", "voltswitch"], + "abilities": ["Magnet Pull"] + }, + { + "role": "Bulky Support", + "movepool": ["earthpower", "powergem", "stealthrock", "thunderwave", "toxic", "voltswitch"], + "abilities": ["Magnet Pull"], + "preferredTypes": ["Ground"] + } + ] + }, + "dusknoir": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "painsplit", "shadowsneak", "toxic", "willowisp"], + "abilities": ["Frisk", "Pressure"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["earthquake", "icepunch", "painsplit", "toxic", "willowisp"], + "abilities": ["Frisk", "Pressure"], + "preferredTypes": ["Ground"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "protect", "shadowsneak", "toxic"], + "abilities": ["Frisk", "Pressure"] + } + ] + }, + "froslass": { + "level": 84, + "sets": [ + { + "role": "Fast Support", + "movepool": ["destinybond", "icebeam", "shadowball", "spikes", "taunt", "thunderwave"], + "abilities": ["Cursed Body"] + } + ] + }, + "rotom": { + "level": 86, + "sets": [ + { + "role": "Fast Support", + "movepool": ["hiddenpowerice", "painsplit", "shadowball", "thunderbolt", "trick", "voltswitch", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "rotomheat": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["hiddenpowerice", "overheat", "painsplit", "thunderbolt", "voltswitch", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "rotomwash": { + "level": 80, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["hydropump", "painsplit", "thunderbolt", "trick", "voltswitch", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "rotomfrost": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["blizzard", "painsplit", "thunderbolt", "trick", "voltswitch", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "rotomfan": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["airslash", "painsplit", "thunderbolt", "voltswitch", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "rotommow": { + "level": 86, + "sets": [ + { + "role": "Fast Support", + "movepool": ["hiddenpowerice", "leafstorm", "thunderbolt", "trick", "voltswitch", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "uxie": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["healbell", "knockoff", "psychic", "stealthrock", "thunderwave", "toxic", "uturn", "yawn"], + "abilities": ["Levitate"] + } + ] + }, + "mesprit": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["calmmind", "healingwish", "hiddenpowerfire", "psychic", "psyshock", "signalbeam", "thunderbolt", "uturn"], + "abilities": ["Levitate"], + "preferredTypes": ["Bug"] + }, + { + "role": "Bulky Support", + "movepool": ["knockoff", "psychic", "stealthrock", "thunderwave", "toxic", "uturn"], + "abilities": ["Levitate"] + } + ] + }, + "azelf": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["dazzlinggleam", "fireblast", "nastyplot", "psychic", "psyshock", "uturn"], + "abilities": ["Levitate"] + }, + { + "role": "Fast Support", + "movepool": ["explosion", "fireblast", "knockoff", "psychic", "stealthrock", "taunt", "uturn"], + "abilities": ["Levitate"] + } + ] + }, + "dialga": { + "level": 73, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["dracometeor", "dragontail", "fireblast", "flashcannon", "stealthrock", "thunderbolt", "toxic"], + "abilities": ["Pressure"], + "preferredTypes": ["Fire"] + } + ] + }, + "palkia": { + "level": 73, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["dracometeor", "fireblast", "hydropump", "spacialrend", "thunderwave"], + "abilities": ["Pressure"], + "preferredTypes": ["Fire"] + } + ] + }, + "heatran": { + "level": 78, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthpower", "flashcannon", "lavaplume", "magmastorm", "stealthrock", "taunt", "toxic"], + "abilities": ["Flash Fire"] + }, + { + "role": "Staller", + "movepool": ["earthpower", "magmastorm", "protect", "toxic"], + "abilities": ["Flash Fire"] + } + ] + }, + "regigigas": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["drainpunch", "knockoff", "return", "thunderwave"], + "abilities": ["Slow Start"] + }, + { + "role": "Bulky Support", + "movepool": ["knockoff", "return", "substitute", "thunderwave"], + "abilities": ["Slow Start"] + } + ] + }, + "giratinaorigin": { + "level": 70, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["dracometeor", "hex", "shadowsneak", "thunderwave", "willowisp"], + "abilities": ["Levitate"] + }, + { + "role": "Fast Attacker", + "movepool": ["defog", "dracometeor", "earthquake", "outrage", "shadowball", "shadowsneak", "willowisp"], + "abilities": ["Levitate"] + } + ] + }, + "giratina": { + "level": 73, + "sets": [ + { + "role": "Fast Support", + "movepool": ["dragontail", "rest", "shadowball", "sleeptalk", "willowisp"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "dragonpulse", "rest", "sleeptalk"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Support", + "movepool": ["defog", "dragontail", "rest", "shadowball", "willowisp"], + "abilities": ["Pressure"] + } + ] + }, + "cresselia": { + "level": 80, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "moonblast", "moonlight", "psyshock"], + "abilities": ["Levitate"] + }, + { + "role": "Bulky Support", + "movepool": ["moonblast", "moonlight", "psychic", "thunderwave", "toxic"], + "abilities": ["Levitate"] + } + ] + }, + "phione": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["healbell", "icebeam", "knockoff", "scald", "toxic", "uturn"], + "abilities": ["Hydration"] + } + ] + }, + "manaphy": { + "level": 76, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["energyball", "icebeam", "surf", "tailglow"], + "abilities": ["Hydration"] + } + ] + }, + "darkrai": { + "level": 72, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["darkpulse", "darkvoid", "nastyplot", "sludgebomb"], + "abilities": ["Bad Dreams"], + "preferredTypes": ["Poison"] + } + ] + }, + "shaymin": { + "level": 83, + "sets": [ + { + "role": "Fast Support", + "movepool": ["airslash", "earthpower", "leechseed", "seedflare", "substitute", "synthesis"], + "abilities": ["Natural Cure"], + "preferredTypes": ["Flying"] + } + ] + }, + "shayminsky": { + "level": 73, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["airslash", "earthpower", "hiddenpowerice", "leechseed", "seedflare", "substitute"], + "abilities": ["Serene Grace"] + } + ] + }, + "arceus": { + "level": 71, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "extremespeed", "recover", "shadowclaw", "swordsdance"], + "abilities": ["Multitype"] + } + ] + }, + "arceusbug": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "earthpower", "fireblast", "judgment", "recover"], + "abilities": ["Multitype"] + }, + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "earthpower", "icebeam", "judgment"], + "abilities": ["Multitype"] + } + ] + }, + "arceusdark": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "defog", "fireblast", "judgment", "recover", "sludgebomb", "toxic", "willowisp"], + "abilities": ["Multitype"] + } + ] + }, + "arceusdragon": { + "level": 71, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["defog", "earthquake", "fireblast", "judgment", "recover", "willowisp"], + "abilities": ["Multitype"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "extremespeed", "outrage", "recover", "swordsdance"], + "abilities": ["Multitype"], + "preferredTypes": ["Ground"] + } + ] + }, + "arceuselectric": { + "level": 71, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "icebeam", "judgment", "recover"], + "abilities": ["Multitype"] + } + ] + }, + "arceusfairy": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"], + "abilities": ["Multitype"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "earthpower", "judgment", "recover"], + "abilities": ["Multitype"] + } + ] + }, + "arceusfighting": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "icebeam", "judgment", "recover", "shadowball"], + "abilities": ["Multitype"] + } + ] + }, + "arceusfire": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "earthpower", "energyball", "judgment", "recover"], + "abilities": ["Multitype"] + } + ] + }, + "arceusflying": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "earthpower", "judgment", "recover"], + "abilities": ["Multitype"] + }, + { + "role": "Bulky Attacker", + "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"], + "abilities": ["Multitype"] + } + ] + }, + "arceusghost": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "defog", "focusblast", "judgment", "recover", "toxic", "willowisp"], + "abilities": ["Multitype"] + }, + { + "role": "Setup Sweeper", + "movepool": ["brickbreak", "extremespeed", "shadowforce", "swordsdance"], + "abilities": ["Multitype"] + } + ] + }, + "arceusgrass": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "fireblast", "judgment", "recover"], + "abilities": ["Multitype"] + }, + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "earthpower", "icebeam", "judgment"], + "abilities": ["Multitype"] + } + ] + }, + "arceusground": { + "level": 71, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "extremespeed", "recover", "stoneedge", "swordsdance"], + "abilities": ["Multitype"], + "preferredTypes": ["Rock"] + }, + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "icebeam", "judgment", "recover", "toxic"], + "abilities": ["Multitype"] + } + ] + }, + "arceusice": { + "level": 71, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "earthpower", "judgment", "recover", "thunderbolt"], + "abilities": ["Multitype"] + } + ] + }, + "arceuspoison": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "earthquake", "icebeam", "recover", "sludgebomb"], + "abilities": ["Multitype"], + "preferredTypes": ["Ground"] + }, + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "earthpower", "icebeam", "recover", "sludgebomb"], + "abilities": ["Multitype"], + "preferredTypes": ["Ground"] + } + ] + }, + "arceuspsychic": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "earthquake", "fireblast", "judgment", "recover", "toxic", "willowisp"], + "abilities": ["Multitype"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "earthpower", "fireblast", "judgment", "recover"], + "abilities": ["Multitype"] + } + ] + }, + "arceusrock": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"], + "abilities": ["Multitype"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "extremespeed", "recover", "stoneedge", "swordsdance"], + "abilities": ["Multitype"], + "preferredTypes": ["Ground"] + } + ] + }, + "arceussteel": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"], + "abilities": ["Multitype"] + } + ] + }, + "arceuswater": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "icebeam", "judgment", "recover", "toxic", "willowisp"], + "abilities": ["Multitype"] + } + ] + }, + "victini": { + "level": 77, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["boltstrike", "uturn", "vcreate", "zenheadbutt"], + "abilities": ["Victory Star"] + }, + { + "role": "AV Pivot", + "movepool": ["boltstrike", "energyball", "focusblast", "glaciate", "psychic", "uturn", "vcreate"], + "abilities": ["Victory Star"], + "preferredTypes": ["Electric"] + } + ] + }, + "serperior": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["dragonpulse", "glare", "hiddenpowerfire", "leafstorm", "leechseed", "substitute"], + "abilities": ["Contrary"] + } + ] + }, + "emboar": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["flareblitz", "headsmash", "suckerpunch", "superpower", "wildcharge"], + "abilities": ["Reckless"] + }, + { + "role": "AV Pivot", + "movepool": ["flareblitz", "grassknot", "suckerpunch", "superpower", "wildcharge"], + "abilities": ["Reckless"] + } + ] + }, + "samurott": { + "level": 87, + "sets": [ + { + "role": "AV Pivot", + "movepool": ["aquajet", "grassknot", "hydropump", "icebeam", "knockoff", "megahorn", "scald", "superpower"], + "abilities": ["Torrent"] + }, + { + "role": "Fast Attacker", + "movepool": ["aquajet", "knockoff", "megahorn", "superpower", "swordsdance", "waterfall"], + "abilities": ["Torrent"] + } + ] + }, + "watchog": { + "level": 94, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["hypnosis", "knockoff", "return", "superfang"], + "abilities": ["Analytic"] + }, + { + "role": "Setup Sweeper", + "movepool": ["hypnosis", "knockoff", "return", "substitute", "swordsdance"], + "abilities": ["Analytic"] + } + ] + }, + "stoutland": { + "level": 85, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["crunch", "facade", "return", "superpower"], + "abilities": ["Scrappy"] + } + ] + }, + "liepard": { + "level": 85, + "sets": [ + { + "role": "Fast Support", + "movepool": ["copycat", "encore", "knockoff", "substitute", "thunderwave", "uturn"], + "abilities": ["Prankster"] + } + ] + }, + "simisage": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["gunkshot", "hiddenpowerice", "knockoff", "leafstorm", "rockslide", "superpower"], + "abilities": ["Overgrow"], + "preferredTypes": ["Fighting"] + }, + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "gigadrain", "hiddenpowerice", "nastyplot", "substitute"], + "abilities": ["Overgrow"] + } + ] + }, + "simisear": { + "level": 88, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["fireblast", "focusblast", "grassknot", "hiddenpowerrock", "nastyplot", "substitute"], + "abilities": ["Blaze"] + } + ] + }, + "simipour": { + "level": 86, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["grassknot", "hydropump", "icebeam", "nastyplot", "substitute"], + "abilities": ["Torrent"], + "preferredTypes": ["Ice"] + } + ] + }, + "musharna": { + "level": 88, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "hiddenpowerfighting", "moonlight", "psyshock", "signalbeam"], + "abilities": ["Synchronize"] + }, + { + "role": "Bulky Support", + "movepool": ["healbell", "moonlight", "psychic", "signalbeam", "thunderwave", "toxic"], + "abilities": ["Synchronize"] + } + ] + }, + "unfezant": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["nightslash", "pluck", "return", "roost", "toxic", "uturn"], + "abilities": ["Super Luck"] + } + ] + }, + "zebstrika": { + "level": 87, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["hiddenpowerice", "overheat", "voltswitch", "wildcharge"], + "abilities": ["Sap Sipper"] + }, + { + "role": "Wallbreaker", + "movepool": ["hiddenpowerice", "overheat", "thunderbolt", "voltswitch"], + "abilities": ["Lightning Rod"] + } + ] + }, + "gigalith": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "explosion", "stealthrock", "stoneedge", "superpower", "toxic"], + "abilities": ["Sturdy"], + "preferredTypes": ["Ground"] + } + ] + }, + "swoobat": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "heatwave", "roost", "storedpower"], + "abilities": ["Simple"] + }, + { + "role": "Setup Sweeper", + "movepool": ["airslash", "calmmind", "heatwave", "roost", "storedpower"], + "abilities": ["Simple"] + } + ] + }, + "excadrill": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthquake", "ironhead", "rapidspin", "rockslide", "swordsdance"], + "abilities": ["Mold Breaker", "Sand Rush"] + } + ] + }, + "audino": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["knockoff", "protect", "toxic", "wish", "voltswitch"], + "abilities": ["Regenerator"] + } + ] + }, + "audinomega": { + "level": 82, + "sets": [ + { + "role": "Staller", + "movepool": ["icebeam", "protect", "voltswitch", "wish", "toxic"], + "abilities": ["Regenerator"] + }, + { + "role": "Bulky Support", + "movepool": ["thunderwave", "icebeam", "knockoff", "voltswitch", "toxic"], + "abilities": ["Regenerator"] + } + ] + }, + "conkeldurr": { + "level": 81, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["drainpunch", "facade", "knockoff", "machpunch"], + "abilities": ["Guts"] + }, + { + "role": "Setup Sweeper", + "movepool": ["bulkup", "drainpunch", "knockoff", "machpunch"], + "abilities": ["Iron Fist"] + } + ] + }, + "seismitoad": { + "level": 84, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "hydropump", "knockoff", "raindance", "sludgewave"], + "abilities": ["Swift Swim"] + }, + { + "role": "Bulky Support", + "movepool": ["earthquake", "knockoff", "scald", "stealthrock", "toxic"], + "abilities": ["Water Absorb"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "protect", "scald", "toxic"], + "abilities": ["Water Absorb"] + } + ] + }, + "throh": { + "level": 88, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["bulkup", "circlethrow", "knockoff", "rest", "sleeptalk"], + "abilities": ["Guts"] + } + ] + }, + "sawk": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["bulkup", "closecombat", "earthquake", "knockoff", "poisonjab", "stoneedge"], + "abilities": ["Mold Breaker", "Sturdy"], + "preferredTypes": ["Dark"] + } + ] + }, + "leavanny": { + "level": 86, + "sets": [ + { + "role": "Fast Support", + "movepool": ["knockoff", "leafblade", "stickyweb", "toxic", "xscissor"], + "abilities": ["Chlorophyll", "Swarm"] + } + ] + }, + "scolipede": { + "level": 79, + "sets": [ + { + "role": "Fast Support", + "movepool": ["earthquake", "megahorn", "poisonjab", "spikes", "toxicspikes"], + "abilities": ["Speed Boost"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "megahorn", "poisonjab", "swordsdance"], + "abilities": ["Speed Boost"] + } + ] + }, + "whimsicott": { + "level": 85, + "sets": [ + { + "role": "Fast Support", + "movepool": ["encore", "energyball", "moonblast", "stunspore", "taunt", "toxic", "uturn"], + "abilities": ["Prankster"] + }, + { + "role": "Staller", + "movepool": ["encore", "leechseed", "moonblast", "substitute"], + "abilities": ["Prankster"] + } + ] + }, + "lilligant": { + "level": 86, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["gigadrain", "hiddenpowerfire", "hiddenpowerrock", "quiverdance", "sleeppowder"], + "abilities": ["Chlorophyll"] + }, + { + "role": "Fast Attacker", + "movepool": ["hiddenpowerfire", "hiddenpowerrock", "petaldance", "quiverdance", "sleeppowder"], + "abilities": ["Own Tempo"] + } + ] + }, + "basculin": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["aquajet", "crunch", "superpower", "waterfall", "zenheadbutt"], + "abilities": ["Adaptability"] + } + ] + }, + "krookodile": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["earthquake", "knockoff", "pursuit", "stealthrock", "stoneedge", "superpower"], + "abilities": ["Intimidate"] + } + ] + }, + "darmanitan": { + "level": 80, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthquake", "flareblitz", "rockslide", "superpower", "uturn"], + "abilities": ["Sheer Force"] + } + ] + }, + "maractus": { + "level": 98, + "sets": [ + { + "role": "Fast Support", + "movepool": ["gigadrain", "hiddenpowerfire", "knockoff", "spikes", "synthesis", "toxic"], + "abilities": ["Storm Drain", "Water Absorb"] + }, + { + "role": "Staller", + "movepool": ["gigadrain", "hiddenpowerfire", "hiddenpowerice", "leechseed", "spikyshield"], + "abilities": ["Storm Drain", "Water Absorb"] + } + ] + }, + "crustle": { + "level": 82, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "knockoff", "shellsmash", "stoneedge", "xscissor"], + "abilities": ["Sturdy"], + "preferredTypes": ["Ground"] + } + ] + }, + "scrafty": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["dragondance", "drainpunch", "ironhead", "knockoff"], + "abilities": ["Intimidate"] + }, + { + "role": "Bulky Setup", + "movepool": ["bulkup", "drainpunch", "knockoff", "rest"], + "abilities": ["Shed Skin"] + } + ] + }, + "sigilyph": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["airslash", "calmmind", "heatwave", "psyshock", "roost"], + "abilities": ["Magic Guard"] + }, + { + "role": "Wallbreaker", + "movepool": ["airslash", "energyball", "heatwave", "icebeam", "psychic", "psyshock"], + "abilities": ["Tinted Lens"], + "preferredTypes": ["Psychic"] + }, + { + "role": "Staller", + "movepool": ["cosmicpower", "psychoshift", "roost", "storedpower"], + "abilities": ["Magic Guard"] + } + ] + }, + "cofagrigus": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["haze", "painsplit", "shadowball", "toxicspikes", "willowisp"], + "abilities": ["Mummy"] + }, + { + "role": "Bulky Setup", + "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "trickroom"], + "abilities": ["Mummy"] + } + ] + }, + "carracosta": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["aquajet", "earthquake", "icebeam", "shellsmash", "stoneedge", "waterfall"], + "abilities": ["Solid Rock", "Sturdy", "Swift Swim"] + } + ] + }, + "archeops": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["acrobatics", "defog", "earthquake", "knockoff", "roost", "stealthrock", "stoneedge", "uturn"], + "abilities": ["Defeatist"], + "preferredTypes": ["Ground"] + } + ] + }, + "garbodor": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["drainpunch", "gunkshot", "haze", "painsplit", "spikes", "toxic", "toxicspikes"], + "abilities": ["Aftermath"] + } + ] + }, + "zoroark": { + "level": 81, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["darkpulse", "flamethrower", "focusblast", "nastyplot", "sludgebomb", "trick", "uturn"], + "abilities": ["Illusion"], + "preferredTypes": ["Poison"] + } + ] + }, + "cinccino": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["bulletseed", "knockoff", "rockblast", "tailslap", "uturn"], + "abilities": ["Skill Link"], + "preferredTypes": ["Grass"] + } + ] + }, + "gothitelle": { + "level": 89, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["calmmind", "hiddenpowerfighting", "psychic", "shadowball", "signalbeam", "thunderbolt", "trick"], + "abilities": ["Shadow Tag"] + } + ] + }, + "reuniclus": { + "level": 85, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover"], + "abilities": ["Magic Guard"] + } + ] + }, + "swanna": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "defog", "roost", "scald", "toxic"], + "abilities": ["Hydration"] + } + ] + }, + "vanilluxe": { + "level": 88, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["autotomize", "explosion", "flashcannon", "freezedry", "hiddenpowerground", "icebeam", "toxic"], + "abilities": ["Weak Armor"], + "preferredTypes": ["Ground"] + }, + { + "role": "AV Pivot", + "movepool": ["explosion", "flashcannon", "freezedry", "hiddenpowerground", "icebeam"], + "abilities": ["Weak Armor"], + "preferredTypes": ["Ground"] + } + ] + }, + "sawsbuck": { + "level": 86, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["hornleech", "jumpkick", "return", "substitute", "swordsdance"], + "abilities": ["Sap Sipper"], + "preferredTypes": ["Normal"] + } + ] + }, + "emolga": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["acrobatics", "encore", "knockoff", "nuzzle", "roost", "thunderbolt", "toxic", "uturn"], + "abilities": ["Motor Drive"] + } + ] + }, + "escavalier": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["drillrun", "ironhead", "knockoff", "megahorn", "swordsdance"], + "abilities": ["Overcoat", "Swarm"] + } + ] + }, + "amoonguss": { + "level": 83, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["clearsmog", "foulplay", "gigadrain", "hiddenpowerground", "sludgebomb", "spore"], + "abilities": ["Regenerator"] + }, + { + "role": "Bulky Support", + "movepool": ["gigadrain", "sludgebomb", "spore", "synthesis"], + "abilities": ["Regenerator"] + } + ] + }, + "jellicent": { + "level": 85, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["icebeam", "recover", "scald", "shadowball", "taunt"], + "abilities": ["Water Absorb"] + }, + { + "role": "Bulky Support", + "movepool": ["hex", "recover", "scald", "toxic", "willowisp"], + "abilities": ["Water Absorb"] + } + ] + }, + "alomomola": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["knockoff", "protect", "scald", "toxic", "wish"], + "abilities": ["Regenerator"] + } + ] + }, + "galvantula": { + "level": 79, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["bugbuzz", "energyball", "stickyweb", "thunder", "voltswitch"], + "abilities": ["Compound Eyes"], + "preferredTypes": ["Bug"] + } + ] + }, + "ferrothorn": { + "level": 71, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["gyroball", "leechseed", "powerwhip", "spikes", "stealthrock"], + "abilities": ["Iron Barbs"] + }, + { + "role": "Bulky Support", + "movepool": ["knockoff", "powerwhip", "spikes", "stealthrock", "thunderwave", "toxic"], + "abilities": ["Iron Barbs"] + } + ] + }, + "klinklang": { + "level": 87, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["geargrind", "return", "shiftgear", "substitute", "wildcharge"], + "abilities": ["Clear Body"] + } + ] + }, + "eelektross": { + "level": 85, + "sets": [ + { + "role": "AV Pivot", + "movepool": ["discharge", "flamethrower", "gigadrain", "hiddenpowerice", "knockoff", "superpower", "uturn"], + "abilities": ["Levitate"] + } + ] + }, + "beheeyem": { + "level": 92, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["hiddenpowerfighting", "psychic", "psyshock", "recover", "signalbeam", "thunderbolt", "trick", "trickroom"], + "abilities": ["Analytic"], + "preferredTypes": ["Bug"] + } + ] + }, + "chandelure": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["energyball", "fireblast", "shadowball", "trick"], + "abilities": ["Flash Fire"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "energyball", "fireblast", "shadowball", "substitute"], + "abilities": ["Flame Body", "Flash Fire"] + } + ] + }, + "haxorus": { + "level": 77, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "earthquake", "outrage", "poisonjab", "taunt"], + "abilities": ["Mold Breaker"], + "preferredTypes": ["Ground"] + } + ] + }, + "beartic": { + "level": 94, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["aquajet", "iciclecrash", "stoneedge", "superpower", "swordsdance"], + "abilities": ["Swift Swim"], + "preferredTypes": ["Fighting"] + } + ] + }, + "cryogonal": { + "level": 89, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["freezedry", "haze", "hiddenpowerground", "rapidspin", "recover", "toxic"], + "abilities": ["Levitate"] + } + ] + }, + "accelgor": { + "level": 89, + "sets": [ + { + "role": "Fast Support", + "movepool": ["bugbuzz", "encore", "focusblast", "hiddenpowerground", "hiddenpowerrock", "spikes", "uturn"], + "abilities": ["Hydration", "Sticky Hold"] + } + ] + }, + "stunfisk": { + "level": 88, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["discharge", "earthpower", "scald", "stealthrock", "toxic"], + "abilities": ["Static"] + }, + { + "role": "Bulky Support", + "movepool": ["discharge", "earthpower", "protect", "rest", "sleeptalk", "toxic"], + "abilities": ["Static"] + } + ] + }, + "mienshao": { + "level": 81, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["highjumpkick", "knockoff", "poisonjab", "stoneedge", "swordsdance", "uturn"], + "abilities": ["Reckless"], + "preferredTypes": ["Dark"] + }, + { + "role": "AV Pivot", + "movepool": ["fakeout", "highjumpkick", "knockoff", "uturn"], + "abilities": ["Regenerator"] + } + ] + }, + "druddigon": { + "level": 86, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["firepunch", "glare", "gunkshot", "outrage", "suckerpunch"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Poison"] + }, + { + "role": "Bulky Support", + "movepool": ["dragontail", "earthquake", "glare", "gunkshot", "outrage", "stealthrock", "suckerpunch"], + "abilities": ["Rough Skin"] + } + ] + }, + "golurk": { + "level": 83, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["dynamicpunch", "earthquake", "icepunch", "rockpolish", "stealthrock", "stoneedge"], + "abilities": ["No Guard"], + "preferredTypes": ["Fighting"] + } + ] + }, + "bisharp": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["ironhead", "knockoff", "pursuit", "suckerpunch", "swordsdance"], + "abilities": ["Defiant"] + } + ] + }, + "bouffalant": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthquake", "headcharge", "stoneedge", "superpower", "swordsdance"], + "abilities": ["Reckless", "Sap Sipper"] + } + ] + }, + "braviary": { + "level": 82, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "bulkup", "roost", "superpower"], + "abilities": ["Defiant"] + }, + { + "role": "Fast Attacker", + "movepool": ["bravebird", "return", "superpower", "uturn"], + "abilities": ["Defiant"] + } + ] + }, + "mandibuzz": { + "level": 84, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "defog", "foulplay", "knockoff", "roost", "taunt", "toxic", "uturn"], + "abilities": ["Overcoat"] + }, + { + "role": "Bulky Support", + "movepool": ["defog", "foulplay", "roost", "taunt", "toxic", "uturn"], + "abilities": ["Overcoat"] + } + ] + }, + "heatmor": { + "level": 92, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["fireblast", "gigadrain", "knockoff", "suckerpunch", "superpower"], + "abilities": ["Flash Fire"] + } + ] + }, + "durant": { + "level": 79, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["honeclaws", "ironhead", "rockslide", "superpower", "xscissor"], + "abilities": ["Hustle"], + "preferredTypes": ["Fighting"] + } + ] + }, + "hydreigon": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["darkpulse", "dracometeor", "earthpower", "fireblast", "flashcannon", "roost", "uturn"], + "abilities": ["Levitate"] + }, + { + "role": "Bulky Attacker", + "movepool": ["darkpulse", "dracometeor", "fireblast", "roost", "toxic", "uturn"], + "abilities": ["Levitate"] + }, + { + "role": "AV Pivot", + "movepool": ["darkpulse", "dracometeor", "flashcannon", "superpower", "uturn"], + "abilities": ["Levitate"], + "preferredTypes": ["Fighting"] + } + ] + }, + "volcarona": { + "level": 77, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bugbuzz", "fierydance", "fireblast", "gigadrain", "hiddenpowerrock", "quiverdance", "roost"], + "abilities": ["Flame Body", "Swarm"] + } + ] + }, + "cobalion": { + "level": 77, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["closecombat", "ironhead", "stealthrock", "stoneedge", "swordsdance"], + "abilities": ["Justified"] + } + ] + }, + "terrakion": { + "level": 77, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["closecombat", "earthquake", "quickattack", "stealthrock", "stoneedge", "swordsdance"], + "abilities": ["Justified"], + "preferredTypes": ["Ground"] + } + ] + }, + "virizion": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["closecombat", "leafblade", "stoneedge", "swordsdance"], + "abilities": ["Justified"] + } + ] + }, + "tornadus": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["heatwave", "hurricane", "knockoff", "superpower", "taunt", "uturn"], + "abilities": ["Defiant", "Prankster"] + }, + { + "role": "Setup Sweeper", + "movepool": ["acrobatics", "bulkup", "knockoff", "superpower", "taunt"], + "abilities": ["Defiant"], + "preferredTypes": ["Fighting"] + } + ] + }, + "tornadustherian": { + "level": 78, + "sets": [ + { + "role": "Fast Support", + "movepool": ["heatwave", "hurricane", "knockoff", "superpower", "taunt", "uturn"], + "abilities": ["Regenerator"] + } + ] + }, + "thundurus": { + "level": 78, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "hiddenpowerflying", "hiddenpowerice", "nastyplot", "substitute", "thunderbolt"], + "abilities": ["Prankster"] + }, + { + "role": "Fast Attacker", + "movepool": ["hiddenpowerflying", "hiddenpowerice", "knockoff", "superpower", "taunt", "thunderbolt", "thunderwave"], + "abilities": ["Prankster"] + } + ] + }, + "thundurustherian": { + "level": 78, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["focusblast", "hiddenpowerflying", "hiddenpowerice", "nastyplot", "thunderbolt", "voltswitch"], + "abilities": ["Volt Absorb"] + } + ] + }, + "reshiram": { + "level": 73, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["blueflare", "dracometeor", "roost", "toxic"], + "abilities": ["Turboblaze"] + } + ] + }, + "zekrom": { + "level": 74, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["boltstrike", "honeclaws", "outrage", "roost", "substitute"], + "abilities": ["Teravolt"] + }, + { + "role": "AV Pivot", + "movepool": ["boltstrike", "dracometeor", "outrage", "voltswitch"], + "abilities": ["Teravolt"] + } + ] + }, + "landorus": { + "level": 76, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["earthpower", "focusblast", "knockoff", "psychic", "rockpolish", "rockslide", "sludgewave", "stealthrock"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Rock"] + }, + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "earthpower", "focusblast", "psychic", "rockpolish", "sludgewave"], + "abilities": ["Sheer Force"], + "preferredTypes": ["Poison"] + } + ] + }, + "landorustherian": { + "level": 76, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["earthquake", "knockoff", "stealthrock", "stoneedge", "toxic", "uturn"], + "abilities": ["Intimidate"] + }, + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "knockoff", "rockpolish", "stoneedge", "superpower", "swordsdance"], + "abilities": ["Intimidate"], + "preferredTypes": ["Rock"] + } + ] + }, + "kyurem": { + "level": 78, + "sets": [ + { + "role": "Staller", + "movepool": ["earthpower", "icebeam", "roost", "substitute"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Support", + "movepool": ["dracometeor", "earthpower", "icebeam", "outrage", "roost", "substitute"], + "abilities": ["Pressure"] + }, + { + "role": "Bulky Attacker", + "movepool": ["dracometeor", "earthpower", "focusblast", "icebeam", "outrage"], + "abilities": ["Pressure"] + } + ] + }, + "kyuremblack": { + "level": 76, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthpower", "fusionbolt", "icebeam", "outrage", "roost", "substitute"], + "abilities": ["Teravolt"] + } + ] + }, + "kyuremwhite": { + "level": 74, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["dracometeor", "earthpower", "fusionflare", "icebeam", "roost"], + "abilities": ["Turboblaze"] + } + ] + }, + "keldeo": { + "level": 79, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["calmmind", "hiddenpowerelectric", "hiddenpowerflying", "hydropump", "icywind", "scald", "secretsword"], + "abilities": ["Justified"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "scald", "secretsword", "substitute"], + "abilities": ["Justified"] + }, + { + "role": "Fast Attacker", + "movepool": ["focusblast", "hydropump", "scald", "secretsword"], + "abilities": ["Justified"] + } + ] + }, + "meloetta": { + "level": 82, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["calmmind", "focusblast", "hypervoice", "psyshock", "uturn"], + "abilities": ["Serene Grace"] + }, + { + "role": "Wallbreaker", + "movepool": ["closecombat", "knockoff", "relicsong", "return"], + "abilities": ["Serene Grace"] + } + ] + }, + "genesect": { + "level": 72, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["blazekick", "ironhead", "shiftgear", "thunderbolt", "xscissor"], + "abilities": ["Download"] + }, + { + "role": "Wallbreaker", + "movepool": ["blazekick", "extremespeed", "ironhead", "uturn"], + "abilities": ["Download"] + }, + { + "role": "Fast Attacker", + "movepool": ["bugbuzz", "flamethrower", "flashcannon", "icebeam", "thunderbolt", "uturn"], + "abilities": ["Download"], + "preferredTypes": ["Bug"] + } + ] + }, + "chesnaught": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["bulkup", "drainpunch", "spikes", "synthesis", "toxic", "woodhammer"], + "abilities": ["Bulletproof"] + }, + { + "role": "Staller", + "movepool": ["drainpunch", "leechseed", "spikyshield", "woodhammer"], + "abilities": ["Bulletproof"] + } + ] + }, + "delphox": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["calmmind", "dazzlinggleam", "fireblast", "grassknot", "psyshock", "switcheroo"], + "abilities": ["Blaze"] + } + ] + }, + "greninja": { + "level": 79, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["grassknot", "gunkshot", "hydropump", "icebeam", "spikes", "taunt", "toxicspikes", "uturn"], + "abilities": ["Protean"], + "preferredTypes": ["Poison"] + } + ] + }, + "diggersby": { + "level": 81, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["agility", "earthquake", "knockoff", "quickattack", "return", "swordsdance"], + "abilities": ["Huge Power"], + "preferredTypes": ["Normal"] + }, + { + "role": "Fast Attacker", + "movepool": ["earthquake", "foulplay", "quickattack", "return", "uturn"], + "abilities": ["Huge Power"], + "preferredTypes": ["Normal"] + } + ] + }, + "talonflame": { + "level": 79, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bravebird", "overheat", "roost", "uturn", "willowisp"], + "abilities": ["Gale Wings"] + }, + { + "role": "Bulky Setup", + "movepool": ["bravebird", "flareblitz", "roost", "swordsdance"], + "abilities": ["Gale Wings"] + } + ] + }, + "vivillon": { + "level": 83, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["energyball", "hurricane", "quiverdance", "sleeppowder"], + "abilities": ["Compound Eyes"] + }, + { + "role": "Bulky Attacker", + "movepool": ["bugbuzz", "hurricane", "quiverdance", "sleeppowder"], + "abilities": ["Compound Eyes"] + } + ] + }, + "pyroar": { + "level": 86, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["fireblast", "hiddenpowergrass", "hypervoice", "solarbeam", "sunnyday", "willowisp", "workup"], + "abilities": ["Unnerve"], + "preferredTypes": ["Normal"] + } + ] + }, + "floetteeternal": { + "level": 81, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["hiddenpowerfire", "hiddenpowerground", "lightofruin", "moonblast", "psychic"], + "abilities": ["Flower Veil"] + } + ] + }, + "florges": { + "level": 84, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["aromatherapy", "moonblast", "synthesis", "toxic"], + "abilities": ["Flower Veil"] + }, + { + "role": "Staller", + "movepool": ["moonblast", "protect", "toxic", "wish"], + "abilities": ["Flower Veil"] + }, + { + "role": "Bulky Setup", + "movepool": ["calmmind", "hiddenpowerground", "moonblast", "synthesis"], + "abilities": ["Flower Veil"] + } + ] + }, + "gogoat": { + "level": 90, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["bulkup", "earthquake", "hornleech", "milkdrink", "toxic"], + "abilities": ["Sap Sipper"] + } + ] + }, + "pangoro": { + "level": 84, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["drainpunch", "gunkshot", "icepunch", "knockoff", "superpower"], + "abilities": ["Iron Fist"] + }, + { + "role": "Setup Sweeper", + "movepool": ["drainpunch", "gunkshot", "knockoff", "swordsdance"], + "abilities": ["Iron Fist"] + } + ] + }, + "furfrou": { + "level": 85, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["rest", "return", "thunderwave", "toxic", "uturn"], + "abilities": ["Fur Coat"] + }, + { + "role": "Staller", + "movepool": ["cottonguard", "rest", "return", "substitute", "toxic"], + "abilities": ["Fur Coat"] + } + ] + }, + "meowstic": { + "level": 86, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["healbell", "lightscreen", "psychic", "reflect", "signalbeam", "thunderwave", "toxic", "yawn"], + "abilities": ["Prankster"] + } + ] + }, + "meowsticf": { + "level": 90, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["calmmind", "darkpulse", "psychic", "psyshock", "signalbeam", "thunderbolt"], + "abilities": ["Competitive"], + "preferredTypes": ["Bug"] + } + ] + }, + "doublade": { + "level": 82, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["ironhead", "sacredsword", "shadowclaw", "shadowsneak", "swordsdance"], + "abilities": ["No Guard"] + } + ] + }, + "aegislash": { + "level": 78, + "sets": [ + { + "role": "Staller", + "movepool": ["ironhead", "kingsshield", "shadowball", "substitute", "toxic"], + "abilities": ["Stance Change"] + }, + { + "role": "Setup Sweeper", + "movepool": ["ironhead", "kingsshield", "sacredsword", "shadowclaw", "shadowsneak", "swordsdance"], + "abilities": ["Stance Change"], + "preferredTypes": ["Steel"] + } + ] + }, + "aromatisse": { + "level": 89, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["calmmind", "moonblast", "protect", "toxic", "wish"], + "abilities": ["Aroma Veil"] + } + ] + }, + "slurpuff": { + "level": 77, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["bellydrum", "drainpunch", "playrough", "return"], + "abilities": ["Unburden"] + } + ] + }, + "malamar": { + "level": 81, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["knockoff", "rest", "sleeptalk", "superpower"], + "abilities": ["Contrary"] + }, + { + "role": "Fast Attacker", + "movepool": ["knockoff", "psychocut", "rest", "superpower"], + "abilities": ["Contrary"] + } + ] + }, + "barbaracle": { + "level": 82, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["earthquake", "lowkick", "razorshell", "shellsmash", "stoneedge"], + "abilities": ["Tough Claws"] + } + ] + }, + "dragalge": { + "level": 87, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["dracometeor", "dragontail", "focusblast", "sludgewave", "toxicspikes"], + "abilities": ["Adaptability"] + }, + { + "role": "Wallbreaker", + "movepool": ["dracometeor", "dragonpulse", "focusblast", "sludgewave"], + "abilities": ["Adaptability"] + } + ] + }, + "clawitzer": { + "level": 85, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["aurasphere", "darkpulse", "icebeam", "scald", "uturn", "waterpulse"], + "abilities": ["Mega Launcher"] + }, + { + "role": "AV Pivot", + "movepool": ["aurasphere", "darkpulse", "icebeam", "scald", "uturn"], + "abilities": ["Mega Launcher"] + } + ] + }, + "heliolisk": { + "level": 83, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["darkpulse", "glare", "hypervoice", "surf", "thunderbolt", "voltswitch"], + "abilities": ["Dry Skin"], + "preferredTypes": ["Normal"] + }, + { + "role": "Setup Sweeper", + "movepool": ["hypervoice", "raindance", "surf", "thunder"], + "abilities": ["Dry Skin"] + } + ] + }, + "tyrantrum": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["dragondance", "earthquake", "headsmash", "outrage", "superpower"], + "abilities": ["Rock Head"], + "preferredTypes": ["Ground"] + } + ] + }, + "aurorus": { + "level": 86, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["ancientpower", "blizzard", "earthpower", "freezedry", "haze", "stealthrock", "thunderwave"], + "abilities": ["Snow Warning"], + "preferredTypes": ["Ground"] + }, + { + "role": "Bulky Support", + "movepool": ["ancientpower", "earthpower", "freezedry", "haze", "hypervoice", "stealthrock", "thunderwave"], + "abilities": ["Refrigerate"], + "preferredTypes": ["Ground"] + } + ] + }, + "sylveon": { + "level": 84, + "sets": [ + { + "role": "Bulky Setup", + "movepool": ["calmmind", "hypervoice", "protect", "wish"], + "abilities": ["Pixilate"] + } + ] + }, + "hawlucha": { + "level": 77, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["acrobatics", "highjumpkick", "skyattack", "substitute", "swordsdance"], + "abilities": ["Unburden"] + } + ] + }, + "dedenne": { + "level": 89, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["protect", "recycle", "thunderbolt", "toxic"], + "abilities": ["Cheek Pouch"] + }, + { + "role": "Staller", + "movepool": ["recycle", "substitute", "superfang", "thunderbolt", "toxic", "uturn"], + "abilities": ["Cheek Pouch"] + } + ] + }, + "carbink": { + "level": 91, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["lightscreen", "moonblast", "powergem", "reflect", "stealthrock", "toxic"], + "abilities": ["Sturdy"] + } + ] + }, + "goodra": { + "level": 85, + "sets": [ + { + "role": "AV Pivot", + "movepool": ["dracometeor", "dragontail", "earthquake", "fireblast", "powerwhip", "sludgebomb"], + "abilities": ["Sap Sipper"] + } + ] + }, + "klefki": { + "level": 79, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["dazzlinggleam", "foulplay", "spikes", "thunderwave"], + "abilities": ["Prankster"] + }, + { + "role": "Bulky Attacker", + "movepool": ["magnetrise", "playrough", "spikes", "thunderwave"], + "abilities": ["Prankster"] + } + ] + }, + "trevenant": { + "level": 91, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["drainpunch", "earthquake", "hornleech", "rockslide", "shadowclaw", "trickroom", "woodhammer"], + "abilities": ["Natural Cure"] + }, + { + "role": "Staller", + "movepool": ["earthquake", "hornleech", "protect", "toxic"], + "abilities": ["Harvest"] + } + ] + }, + "gourgeistsmall": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"], + "abilities": ["Frisk"] + } + ] + }, + "gourgeistlarge": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"], + "abilities": ["Frisk"] + } + ] + }, + "gourgeist": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"], + "abilities": ["Frisk"] + } + ] + }, + "gourgeistsuper": { + "level": 87, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"], + "abilities": ["Frisk"] + } + ] + }, + "avalugg": { + "level": 90, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["avalanche", "curse", "earthquake", "rapidspin", "recover"], + "abilities": ["Sturdy"] + } + ] + }, + "noivern": { + "level": 80, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["boomburst", "dracometeor", "flamethrower", "hurricane", "roost", "switcheroo", "uturn"], + "abilities": ["Infiltrator"] + } + ] + }, + "xerneas": { + "level": 64, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["focusblast", "geomancy", "moonblast", "psyshock"], + "abilities": ["Fairy Aura"] + } + ] + }, + "yveltal": { + "level": 69, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["knockoff", "oblivionwing", "roost", "suckerpunch", "taunt", "toxic", "uturn"], + "abilities": ["Dark Aura"] + } + ] + }, + "zygarde": { + "level": 77, + "sets": [ + { + "role": "Setup Sweeper", + "movepool": ["dragondance", "earthquake", "extremespeed", "glare", "outrage", "stoneedge", "substitute"], + "abilities": ["Aura Break"] + } + ] + }, + "diancie": { + "level": 81, + "sets": [ + { + "role": "Bulky Support", + "movepool": ["diamondstorm", "earthpower", "healbell", "moonblast", "stealthrock", "toxic"], + "abilities": ["Clear Body"] + } + ] + }, + "dianciemega": { + "level": 77, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["calmmind", "diamondstorm", "earthpower", "moonblast", "spikyshield"], + "abilities": ["Clear Body"], + "preferredTypes": ["Ground"] + } + ] + }, + "hoopa": { + "level": 84, + "sets": [ + { + "role": "Fast Attacker", + "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "shadowball", "trick"], + "abilities": ["Magician"] + } + ] + }, + "hoopaunbound": { + "level": 79, + "sets": [ + { + "role": "Wallbreaker", + "movepool": ["drainpunch", "gunkshot", "hyperspacefury", "trick", "zenheadbutt"], + "abilities": ["Magician"], + "preferredTypes": ["Psychic"] + }, + { + "role": "Bulky Attacker", + "movepool": ["drainpunch", "gunkshot", "hyperspacefury", "psychic", "trick"], + "abilities": ["Magician"], + "preferredTypes": ["Psychic"] + } + ] + }, + "volcanion": { + "level": 79, + "sets": [ + { + "role": "Bulky Attacker", + "movepool": ["earthpower", "fireblast", "sludgebomb", "steameruption", "superpower", "toxic"], + "abilities": ["Water Absorb"] + } + ] + } +} diff --git a/data/random-battles/gen6megasrevisited/teams.ts b/data/random-battles/gen6megasrevisited/teams.ts new file mode 100644 index 0000000000..e494fb7299 --- /dev/null +++ b/data/random-battles/gen6megasrevisited/teams.ts @@ -0,0 +1,7 @@ +import RandomGen6Teams from '../gen6/teams'; + +export class RandomMRTeams extends RandomGen6Teams { + override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./sets.json'); +} + +export default RandomMRTeams; diff --git a/data/random-battles/sixbysix/random-sets.json b/data/random-battles/sixbysix/random-sets.json deleted file mode 100644 index d51c73e78e..0000000000 --- a/data/random-battles/sixbysix/random-sets.json +++ /dev/null @@ -1,558 +0,0 @@ -{ - "kingdraancient": { - "level": 100, - "sets": [ - { - "role": "Fast Bulky Setup", - "movepool": ["Fire Blast", "Agility", "Energy Ball", "Hydro Pump"], - "abilities": ["Protosynthesis"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Giga Drain", "Fire Blast", "Flip Turn", "Synthesis"], - "abilities": ["Competitive"] - } - ] - }, - "kingdrabard": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Hydro Pump", "Agility", "Psychic Noise", "Alluring Voice"], - "abilities": ["Punk Rock"] - }, - { - "role": "Wallbreaker", - "movepool": ["Hydro Pump", "Flip Turn", "Psychic Noise", "Alluring Voice"], - "abilities": ["Punk Rock"] - } - ] - }, - "kingdrabrinepool": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Scald", "Protect", "Knock Off", "Mortal Spin"], - "abilities": ["Purifying Salt"] - }, - { - "role": "Wallbreaker", - "movepool": ["Hydro Pump", "Water Shuriken", "Sludge Wave", "Flip Turn"], - "abilities": ["Purifying Salt", "Storm Drain"] - } - ] - }, - "kingdraclassic": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Hydro Pump", "Draco Meteor", "Agility", "Ice Beam"], - "abilities": ["Berserk"] - }, - { - "role": "Wallbreaker", - "movepool": ["Hydro Pump", "Draco Meteor", "Flip Turn", "Ice Beam"], - "abilities": ["Berserk"] - } - ] - }, - "kingdradruid": { - "level": 100, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Tachyon Cutter", "Draco Meteor", "Flamethrower", "Ice Beam"], - "abilities": ["Berserk"] - }, - { - "role": "Bulky Setup", - "movepool": ["Tachyon Cutter", "Protect", "Flamethrower", "Calm Mind"], - "abilities": ["Berserk"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Doom Desire", "Parting Shot", "Draco Meteor", "Protect"], - "abilities": ["Berserk", "Heatproof"] - } - ] - }, - "kingdragourmet": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Facade", "Baneful Bunker", "Knock Off", "Toxic"], - "abilities": ["Poison Heal"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Facade", "Fake Out", "Knock Off", "Flip Turn"], - "abilities": ["Poison Heal"] - } - ] - }, - "nidoqueenclassic": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Barb Barrage", "Earthquake", "Spikes", "Slack Off"], - "abilities": ["Poison Point"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Poison Jab", "Earthquake", "Ice Punch", "Slack Off"], - "abilities": ["Sheer Force"] - } - ] - }, - "nidoqueenerudite": { - "level": 100, - "sets": [ - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Earth Power", "Psychic", "Slack Off"], - "abilities": ["Sheer Force"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Trick Room", "Earth Power", "Psychic", "Ice Beam"], - "abilities": ["Sheer Force"] - }, - { - "role": "Bulky Support", - "movepool": ["Future Sight", "Earth Power", "Roar", "Chilly Reception"], - "abilities": ["Regenerator"] - } - ] - }, - "nidoqueenjasper": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Salt Cure", "Earthquake", "Protect", "Glare"], - "abilities": ["Earth Eater"] - }, - { - "role": "Wallbreaker", - "movepool": ["Accelerock", "Earthquake", "Gunk Shot", "Stone Edge"], - "abilities": ["Earth Eater"] - } - ] - }, - "nidoqueenrosegold": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Slack Off", "Giga Drain", "Earth Power", "Toxic Spikes"], - "abilities": ["Rough Skin"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Spiky Shield", "Earth Power", "Sludge Bomb", "Leech Seed"], - "abilities": ["Rough Skin"] - } - ] - }, - "nidoqueenshaman": { - "level": 100, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Poltergeist", "Poison Jab", "Superpower", "Shadow Sneak"], - "abilities": ["Toxic Chain"] - }, - { - "role": "AV Pivot", - "movepool": ["Poltergeist", "Poison Jab", "Earthquake", "Shadow Sneak"], - "abilities": ["Regenerator"] - } - ] - }, - "nidoqueenvolcanic": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Protect", "Lava Plume", "Earth Power", "Wish"], - "abilities": ["Flame Body"] - }, - { - "role": "Wallbreaker", - "movepool": ["Thunderbolt", "Fire Blast", "Earth Power", "Ice Beam"], - "abilities": ["Sheer Force"] - }, - { - "role": "Bulky Attacker", - "movepool": ["Protect", "Fire Blast", "Earth Power", "Wish"], - "abilities": ["Sheer Force"] - } - ] - }, - "bisharpassassin": { - "level": 100, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Triple Axel", "Dynamic Punch", "Parting Shot", "Ice Shard"], - "abilities": ["No Guard"] - }, - { - "role": "Bulky Setup", - "movepool": ["Triple Axel", "Dynamic Punch", "Curse", "Ice Shard"], - "abilities": ["No Guard"] - } - ] - }, - "bisharpcenturion": { - "level": 100, - "sets": [ - { - "role": "Wallbreaker", - "movepool": ["Bullet Punch", "Superpower", "Switcheroo", "Iron Head"], - "abilities": ["Technician"] - }, - { - "role": "Wallbreaker", - "movepool": ["Bullet Punch", "Drain Punch", "Bulk Up", "Iron Head"], - "abilities": ["Technician"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Bullet Punch", "Drain Punch", "Swords Dance", "Iron Head"], - "abilities": ["Technician"] - } - ] - }, - "bisharpmantis": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Ceaseless Edge", "Leech Life", "First Impression", "Bitter Blade"], - "abilities": ["Orichalcum Pulse"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Sucker Punch", "Leech Life", "Swords Dance", "Bitter Blade"], - "abilities": ["Orichalcum Pulse"] - } - ] - }, - "bisharprevenant": { - "level": 100, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Recover", "Shadow Sneak", "Sacred Sword", "Poltergeist"], - "abilities": ["Magic Bounce"] - }, - { - "role": "Bulky Setup", - "movepool": ["Recover", "Shadow Sneak", "Swords Dance", "Behemoth Blade"], - "abilities": ["Magic Bounce"] - } - ] - }, - "bisharpronin": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Barb Barrage", "U-turn", "Sacred Sword", "Stealth Rock"], - "abilities": ["Technician"] - }, - { - "role": "Wallbreaker", - "movepool": ["Barb Barrage", "U-turn", "Sacred Sword", "Bulldoze"], - "abilities": ["Technician"] - } - ] - }, - "bisharpsavage": { - "level": 100, - "sets": [ - { - "role": "Bulky Support", - "movepool": ["Leech Seed", "Bullet Punch", "Power Whip", "Thunder Wave"], - "abilities": ["Technician"] - }, - { - "role": "Bulky Setup", - "movepool": ["Bulk Up", "Bullet Punch", "Power Whip", "Body Press"], - "abilities": ["Technician"] - } - ] - }, - "corviknightanalytical": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Psychic", "Thunderbolt", "U-turn", "Heat Wave"], - "abilities": ["Psychic Surge"] - }, - { - "role": "Fast Support", - "movepool": ["Reflect", "Light Screen", "U-turn", "Psychic"], - "abilities": ["Psychic Surge"] - }, - { - "role": "Fast Bulky Setup", - "movepool": ["Psychic", "Thunderbolt", "Calm Mind", "Heat Wave"], - "abilities": ["Psychic Surge"] - } - ] - }, - "corviknightfalcon": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Brave Bird", "Close Combat", "U-turn", "Knock Off"], - "abilities": ["Guts"] - }, - { - "role": "Fast Support", - "movepool": ["Reflect", "Light Screen", "U-turn", "Taunt"], - "abilities": ["Delta Stream"] - } - ] - }, - "corviknightgenie": { - "level": 100, - "sets": [ - { - "role": "Fast Bulky Setup", - "movepool": ["Earth Power", "Calm Mind", "Heat Wave", "Rest"], - "abilities": ["Prankster"] - }, - { - "role": "AV Pivot", - "movepool": ["Scorching Sands", "U-turn", "Heat Wave", "Thunderbolt"], - "abilities": ["Intimidate"] - }, - { - "role": "Fast Support", - "movepool": ["Reflect", "Light Screen", "U-turn", "Earth Power"], - "abilities": ["Prankster"] - } - ] - }, - "corviknightmartian": { - "level": 100, - "sets": [ - { - "role": "Bulky Attacker", - "movepool": ["Trick Room", "Teleport", "Thunderbolt", "Psychic"], - "abilities": ["Hadron Engine"] - }, - { - "role": "Bulky Support", - "movepool": ["Doom Desire", "Teleport", "Thunderbolt", "Psychic"], - "abilities": ["Hadron Engine"] - }, - { - "role": "Bulky Setup", - "movepool": ["Calm Mind", "Flash Cannon", "Thunderbolt", "Psychic Noise"], - "abilities": ["Hadron Engine"] - } - ] - }, - "corviknightthunderbird": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Thunder", "Hurricane", "U-turn", "Roost"], - "abilities": ["Drizzle"] - }, - { - "role": "Fast Support", - "movepool": ["Reflect", "Light Screen", "U-turn", "Hurricane"], - "abilities": ["Drizzle"] - } - ] - }, - "corviknightyeti": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Blizzard", "Bleakwind Storm", "Volt Switch", "Roost"], - "abilities": ["Snow Warning"] - }, - { - "role": "Fast Support", - "movepool": ["Reflect", "Light Screen", "U-turn", "Blizzard"], - "abilities": ["Snow Warning"] - } - ] - }, - "krookodileabyssal": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Dragon Dance", "Earthquake", "Knock Off", "Flare Blitz"], - "abilities": ["Multiscale"] - }, - { - "role": "Fast Attacker", - "movepool": ["Parting Shot", "Earthquake", "Knock Off", "Flare Blitz"], - "abilities": ["Multiscale"] - } - ] - }, - "krookodilecavedweller": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Parting Shot", "Earthquake", "Stone Edge", "Flare Blitz"], - "abilities": ["Magic Guard"] - }, - { - "role": "Wallbreaker", - "movepool": ["Explosion", "Earthquake", "Stone Edge", "Flare Blitz"], - "abilities": ["Magic Guard"] - } - ] - }, - "krookodilecliffside": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Parting Shot", "Dark Pulse", "Draco Meteor", "Flamethrower"], - "abilities": ["Intimidate"] - }, - { - "role": "Wallbreaker", - "movepool": ["Switcheroo", "Dark Pulse", "Draco Meteor", "Flamethrower"], - "abilities": ["Intimidate"] - } - ] - }, - "krookodileinfernal": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Parting Shot", "Magma Storm", "Fiery Wrath", "Eruption"], - "abilities": ["Magic Guard"] - }, - { - "role": "Fast Support", - "movepool": ["Parting Shot", "Fire Lash", "Knock Off", "Will-O-Wisp"], - "abilities": ["Magic Guard"] - } - ] - }, - "krookodilequantum": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Parting Shot", "Volt Tackle", "Head Smash", "Earthquake"], - "abilities": ["Rock Head"] - }, - { - "role": "Fast Support", - "movepool": ["Parting Shot", "Encore", "Head Smash", "Volt Tackle"], - "abilities": ["Prankster"] - } - ] - }, - "krookodilewetlander": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Synthesis", "Wave Crash", "Wood Hammer", "Knock Off"], - "abilities": ["Wind Rider", "Wonder Skin"] - }, - { - "role": "Wallbreaker", - "movepool": ["Parting Shot", "Wave Crash", "Wood Hammer", "Knock Off"], - "abilities": ["Wind Rider", "Wonder Skin"] - } - ] - }, - "ogerponankh": { - "level": 100, - "sets": [ - { - "role": "Setup Sweeper", - "movepool": ["Swords Dance", "Poltergeist", "Earthquake", "Stone Edge"], - "abilities": ["Good as Gold"] - }, - { - "role": "Wallbreaker", - "movepool": ["U-turn", "Shadow Ball", "Earth Power", "Dazzling Gleam"], - "abilities": ["Good as Gold"] - } - ] - }, - "ogerponeaster": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["U-turn", "Moonblast", "Hyper Voice", "Mystical Fire"], - "abilities": ["Pickpocket"] - }, - { - "role": "Setup Sweeper", - "movepool": ["Calm Mind", "Moonblast", "Soft-Boiled", "Mystical Fire"], - "abilities": ["Pickpocket"] - } - ] - }, - "ogerponeid": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Knock Off", "Recover", "Surf", "Shadow Ball"], - "abilities": ["Tangling Hair"] - }, - { - "role": "Fast Support", - "movepool": ["Hex", "Recover", "Surf", "Toxic"], - "abilities": ["Tangling Hair"] - } - ] - }, - "ogerponkitsune": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Knock Off", "U-turn", "Earth Power", "Power Whip"], - "abilities": ["Protean"] - } - ] - }, - "ogerponmuerta": { - "level": 100, - "sets": [ - { - "role": "Fast Attacker", - "movepool": ["Poltergeist", "Moonblast", "U-turn", "Will-O-Wisp"], - "abilities": ["Wandering Spirit"] - }, - { - "role": "Wallbreaker", - "movepool": ["Poltergeist", "Moonblast", "U-turn", "Shadow Sneak"], - "abilities": ["Wandering Spirit"] - } - ] - } -} - diff --git a/data/random-battles/sixbysix/teams.ts b/data/random-battles/sixbysix/teams.ts deleted file mode 100644 index e321ed1a71..0000000000 --- a/data/random-battles/sixbysix/teams.ts +++ /dev/null @@ -1,960 +0,0 @@ -import { RandomTeams, type MoveCounter } from "../gen9/teams"; - -// Moves that restore HP: -const RECOVERY_MOVES = [ - 'healorder', 'milkdrink', 'moonlight', 'morningsun', 'recover', 'roost', 'shoreup', 'slackoff', 'softboiled', 'strengthsap', 'synthesis', -]; -// Moves that boost Attack: -const PHYSICAL_SETUP = [ - 'bellydrum', 'bulkup', 'coil', 'curse', 'dragondance', 'honeclaws', 'howl', 'meditate', 'poweruppunch', 'swordsdance', 'tidyup', 'victorydance', - 'filletaway', -]; -// Moves which boost Special Attack: -const SPECIAL_SETUP = [ - 'calmmind', 'chargebeam', 'geomancy', 'nastyplot', 'quiverdance', 'tailglow', 'takeheart', 'torchsong', 'filletaway', -]; -// Some moves that only boost Speed: -const SPEED_SETUP = [ - 'agility', 'autotomize', 'flamecharge', 'rockpolish', 'trailblaze', -]; -// Conglomerate for ease of access -const SETUP = [ - 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'dragondance', - 'filletaway', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', 'quiverdance', - 'rockpolish', 'shellsmash', 'shiftgear', 'swordsdance', 'tailglow', 'takeheart', 'tidyup', 'trailblaze', 'trickroom', 'workup', 'victorydance', - 'feralresilience', 'feralspray', 'crystalfortification', -]; -const SPEED_CONTROL = [ - 'electroweb', 'glare', 'icywind', 'lowsweep', 'quash', 'stringshot', 'tailwind', 'thunderwave', 'trickroom', -]; -// Hazard-setting moves -const HAZARDS = [ - 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes', 'crystalshard', -]; -// Protect and its variants -const PROTECT_MOVES = [ - 'banefulbunker', 'burningbulwark', 'protect', 'silktrap', 'spikyshield', -]; -// Moves that switch the user out -const PIVOT_MOVES = [ - 'chillyreception', 'flipturn', 'partingshot', 'shedtail', 'teleport', 'uturn', 'voltswitch', -]; - -// Moves that should be paired together when possible -const MOVE_PAIRS = [ - ['lightscreen', 'reflect'], - ['sleeptalk', 'rest'], - ['protect', 'wish'], - ['spikyshield', 'wish'], - ['leechseed', 'protect'], - ['leechseed', 'substitute'], - ['moongeistbeam', 'moonlight'], - ['hex', 'willowisp'], - ['hex', 'toxic'], - ['hex', 'thunderwave'], - ['nightmare', 'willowisp'], - ['nightmare', 'toxic'], - ['nightmare', 'thunderwave'], -]; - -/** Pokemon who always want priority STAB, and are fine with it as its only STAB move of that type */ -const PRIORITY_POKEMON = [ - 'breloom', 'brutebonnet', 'cacturne', 'honchkrow', 'mimikyu', 'ragingbolt', 'scizor', -]; - -/** Pokemon who should never be in the lead slot */ -const NO_LEAD_POKEMON = [ - 'Zacian', 'Zamazenta', -]; -const DOUBLES_NO_LEAD_POKEMON = [ - 'Basculegion', 'Houndstone', 'Iron Bundle', 'Roaring Moon', 'Zacian', 'Zamazenta', -]; -export class Random6x6Teams extends RandomTeams { - override cullMovePool( - types: string[], - moves: Set, - abilities: string[], - counter: MoveCounter, - movePool: string[], - teamDetails: RandomTeamsTypes.TeamDetails, - species: Species, - isLead: boolean, - isDoubles: boolean, - teraType: string, - role: RandomTeamsTypes.Role, - ): void { - if (moves.size + movePool.length <= this.maxMoveCount) return; - // If we have two unfilled moves and only one unpaired move, cull the unpaired move. - if (moves.size === this.maxMoveCount - 2) { - const unpairedMoves = [...movePool]; - for (const pair of MOVE_PAIRS) { - if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { - this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0])); - this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1])); - } - } - if (unpairedMoves.length === 1) { - this.fastPop(movePool, movePool.indexOf(unpairedMoves[0])); - } - } - - // These moves are paired, and shouldn't appear if there is not room for them both. - if (moves.size === this.maxMoveCount - 1) { - for (const pair of MOVE_PAIRS) { - if (movePool.includes(pair[0]) && movePool.includes(pair[1])) { - this.fastPop(movePool, movePool.indexOf(pair[0])); - this.fastPop(movePool, movePool.indexOf(pair[1])); - } - } - } - - // Develop additional move lists - const statusMoves = this.cachedStatusMoves; - - // Team-based move culls - if (teamDetails.screens) { - if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil')); - if (movePool.length >= this.maxMoveCount + 2) { - if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect')); - if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen')); - } - } - if (teamDetails.stickyWeb) { - if (movePool.includes('stickyweb')) this.fastPop(movePool, movePool.indexOf('stickyweb')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.stealthRock) { - if (movePool.includes('stealthrock')) this.fastPop(movePool, movePool.indexOf('stealthrock')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.defog || teamDetails.rapidSpin) { - if (movePool.includes('defog')) this.fastPop(movePool, movePool.indexOf('defog')); - if (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.toxicSpikes) { - if (movePool.includes('toxicspikes')) this.fastPop(movePool, movePool.indexOf('toxicspikes')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.spikes && teamDetails.spikes >= 2) { - if (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - if (teamDetails.statusCure) { - if (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell')); - if (moves.size + movePool.length <= this.maxMoveCount) return; - } - - if (isDoubles) { - const doublesIncompatiblePairs = [ - // In order of decreasing generalizability - [SPEED_CONTROL, SPEED_CONTROL], - [HAZARDS, HAZARDS], - ['rockslide', 'stoneedge'], - [SETUP, ['fakeout', 'helpinghand']], - [PROTECT_MOVES, 'wideguard'], - [['fierydance', 'fireblast'], 'heatwave'], - ['dazzlinggleam', ['fleurcannon', 'moonblast']], - ['poisongas', ['toxicspikes', 'willowisp']], - [RECOVERY_MOVES, ['healpulse', 'lifedew']], - ['healpulse', 'lifedew'], - ['haze', 'icywind'], - [['hydropump', 'muddywater'], ['muddywater', 'scald']], - ['disable', 'encore'], - ['freezedry', 'icebeam'], - ['energyball', 'leafstorm'], - ['earthpower', 'sandsearstorm'], - ['coaching', ['helpinghand', 'howl']], - ]; - - for (const pair of doublesIncompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); - - if (role !== 'Offensive Protect') this.incompatibleMoves(moves, movePool, PROTECT_MOVES, ['flipturn', 'uturn']); - } - - // General incompatibilities - const incompatiblePairs = [ - // These moves don't mesh well with other aspects of the set - [statusMoves, ['healingwish', 'switcheroo', 'trick']], - [SETUP, PIVOT_MOVES], - [SETUP, HAZARDS], - [SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']], - [PHYSICAL_SETUP, PHYSICAL_SETUP], - [SPECIAL_SETUP, 'thunderwave'], - ['substitute', PIVOT_MOVES], - [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']], - ['curse', ['irondefense', 'rapidspin']], - ['dragondance', 'dracometeor'], - ['yawn', 'roar'], - ['trick', 'uturn'], - - // These attacks are redundant with each other - [['psychic', 'psychicnoise'], ['psyshock', 'psychicnoise']], - ['surf', ['hydropump', 'scald']], - ['liquidation', 'wavecrash'], - ['aquajet', 'flipturn'], - ['gigadrain', 'leafstorm'], - ['powerwhip', 'hornleech'], - ['airslash', 'hurricane'], - ['knockoff', 'foulplay'], - ['throatchop', ['crunch', 'lashout']], - ['doubleedge', ['bodyslam', 'headbutt']], - [['fireblast', 'magmastorm'], ['fierydance', 'flamethrower', 'lavaplume']], - ['thunderpunch', 'wildcharge'], - ['thunderbolt', 'discharge'], - ['gunkshot', ['direclaw', 'poisonjab', 'sludgebomb']], - ['aurasphere', 'focusblast'], - ['closecombat', 'drainpunch'], - [['dragonpulse', 'spacialrend'], 'dracometeor'], - ['heavyslam', 'flashcannon'], - ['alluringvoice', 'dazzlinggleam'], - ['defog', 'rapidspin'], - - // These status moves are redundant with each other - ['taunt', 'disable'], - [['thunderwave', 'toxic'], ['thunderwave', 'willowisp']], - [['thunderwave', 'toxic', 'willowisp'], 'toxicspikes'], - - // This space reserved for assorted hardcodes that otherwise make little sense out of context - // Landorus and Thundurus - ['nastyplot', ['rockslide', 'knockoff']], - // Persian - ['switcheroo', 'fakeout'], - // Amoonguss, though this can work well as a general rule later - ['toxic', 'clearsmog'], - // Chansey and Blissey - ['healbell', 'stealthrock'], - // Araquanid and Magnezone - ['mirrorcoat', ['hydropump', 'bodypress']], - ]; - - for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]); - - if (!types.includes('Ice')) this.incompatibleMoves(moves, movePool, 'icebeam', 'icywind'); - - if (!isDoubles) this.incompatibleMoves(moves, movePool, 'taunt', 'encore'); - - if (!types.includes('Dark') && teraType !== 'Dark') this.incompatibleMoves(moves, movePool, 'knockoff', 'suckerpunch'); - - if (!abilities.includes('Prankster')) this.incompatibleMoves(moves, movePool, 'thunderwave', 'yawn'); - - // This space reserved for assorted hardcodes that otherwise make little sense out of context: - // To force Close Combat on Barraskewda without locking it to Tera Fighting - if (species.id === 'barraskewda') { - this.incompatibleMoves(moves, movePool, ['psychicfangs', 'throatchop'], ['poisonjab', 'throatchop']); - } - // To force Toxic on Quagsire - if (species.id === 'quagsire') this.incompatibleMoves(moves, movePool, 'spikes', 'icebeam'); - // Taunt/Knock should be Cyclizar's flex moveslot - if (species.id === 'cyclizar') this.incompatibleMoves(moves, movePool, 'taunt', 'knockoff'); - // To force Stealth Rock on Camerupt - if (species.id === 'camerupt') this.incompatibleMoves(moves, movePool, 'roar', 'willowisp'); - // nothing else rolls these lol - if (species.id === 'coalossal') this.incompatibleMoves(moves, movePool, 'flamethrower', 'overheat'); - } - - override randomMoveset( - types: string[], - abilities: string[], - teamDetails: RandomTeamsTypes.TeamDetails, - species: Species, - isLead: boolean, - isDoubles: boolean, - movePool: string[], - teraType: string, - role: RandomTeamsTypes.Role, - ): Set { - const moves = new Set(); - let counter = this.queryMoves(moves, species, teraType, abilities); - this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role); - - // If there are only four moves, add all moves and return early - if (movePool.length <= this.maxMoveCount) { - for (const moveid of movePool) { - moves.add(moveid); - } - return moves; - } - - const runEnforcementChecker = (checkerName: string) => { - if (!this.moveEnforcementCheckers[checkerName]) return false; - return this.moveEnforcementCheckers[checkerName]( - movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles, teraType, role - ); - }; - - if (role === 'Tera Blast user') { - counter = this.addMove('terablast', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - // Add required move (e.g. Relic Song for Meloetta-P) - if (species.requiredMove) { - const move = this.dex.moves.get(species.requiredMove).id; - counter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Add other moves you really want to have, e.g. STAB, recovery, setup. - - // Enforce Facade if Guts is a possible ability - if (movePool.includes('facade') && abilities.includes('Guts')) { - counter = this.addMove('facade', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Enforce Night Shade, Revelation Dance, Revival Blessing, and Sticky Web - for (const moveid of ['nightshade', 'revelationdance', 'revivalblessing', 'stickyweb']) { - if (movePool.includes(moveid)) { - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Trick Room on Doubles Wallbreaker - if (movePool.includes('trickroom') && role === 'Doubles Wallbreaker') { - counter = this.addMove('trickroom', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Enforce hazard removal on Bulky Support if the team doesn't already have it - if (role === 'Bulky Support' && !teamDetails.defog && !teamDetails.rapidSpin) { - if (movePool.includes('rapidspin')) { - counter = this.addMove('rapidspin', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - if (movePool.includes('defog')) { - counter = this.addMove('defog', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Knock Off on pure Normal- and Fighting-types in singles - if (!isDoubles && types.length === 1 && (types.includes('Normal') || types.includes('Fighting'))) { - if (movePool.includes('knockoff')) { - counter = this.addMove('knockoff', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Flip Turn on pure Water-type Wallbreakers - if (types.length === 1 && types.includes('Water') && - role === 'Wallbreaker' && movePool.includes('flipturn')) { - counter = this.addMove('flipturn', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - - // Enforce Spore on Smeargle - if (species.id === 'smeargle') { - if (movePool.includes('spore')) { - counter = this.addMove('spore', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce moves in doubles - if (isDoubles) { - const doublesEnforcedMoves = ['auroraveil', 'mortalspin', 'spore']; - for (const moveid of doublesEnforcedMoves) { - if (movePool.includes(moveid)) { - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - // Enforce Fake Out on slow Pokemon - if (movePool.includes('fakeout') && species.baseStats.spe <= 50) { - counter = this.addMove('fakeout', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - // Enforce Tailwind on Prankster and Gale Wings users - if (movePool.includes('tailwind') && (abilities.includes('Prankster') || abilities.includes('Gale Wings'))) { - counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - // Enforce Thunder Wave on Prankster users as well - if (movePool.includes('thunderwave') && abilities.includes('Prankster')) { - counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce STAB priority - if ( - ['Bulky Attacker', 'Bulky Setup', 'Wallbreaker', 'Doubles Wallbreaker'].includes(role) || - PRIORITY_POKEMON.includes(species.id) - ) { - const priorityMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if ( - types.includes(moveType) && (move.priority > 0 || (moveid === 'grassyglide' && abilities.includes('Grassy Surge'))) && - (move.basePower || move.basePowerCallback) - ) { - priorityMoves.push(moveid); - } - } - if (priorityMoves.length) { - const moveid = this.sample(priorityMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce a single STAB for Moltres - if (species.id === 'moltres') { - const typeToEnforce = this.randomChance(1, 2) ? 'Fire' : 'Flying'; - - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && typeToEnforce === moveType) { - stabMoves.push(moveid); - } - } - while (runEnforcementChecker(typeToEnforce)) { - if (!stabMoves.length) break; - const moveid = this.sampleNoReplace(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce STAB - for (const type of types) { - // Moltres already has STAB, so ignore this block - if (species.id === 'moltres') break; - // prevents Meowscarada from being enforced stab moves - if (species.id === 'meowscarada') break; - // Check if a STAB move of that type should be required - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) { - stabMoves.push(moveid); - } - } - while (runEnforcementChecker(type)) { - if (!stabMoves.length) break; - const moveid = this.sampleNoReplace(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce Tera STAB - // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care) - if (!counter.get('stabtera') && !['Bulky Support', 'Doubles Support'].includes(role) && - !abilities.includes('Protean')) { - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && teraType === moveType) { - stabMoves.push(moveid); - } - } - if (stabMoves.length) { - const moveid = this.sample(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // If no STAB move was added, add a STAB move - // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care) - if (!counter.get('stab') && !abilities.includes('Protean')) { - const stabMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) { - stabMoves.push(moveid); - } - } - if (stabMoves.length) { - const moveid = this.sample(stabMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce recovery - if (['Bulky Support', 'Bulky Attacker', 'Bulky Setup'].includes(role)) { - const recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid)); - if (recoveryMoves.length) { - const moveid = this.sample(recoveryMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce setup - if (role.includes('Setup') || role === 'Tera Blast user') { - // First, try to add a non-Speed setup move - const nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && !SPEED_SETUP.includes(moveid)); - if (nonSpeedSetupMoves.length) { - const moveid = this.sample(nonSpeedSetupMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } else { - // No non-Speed setup moves, so add any (Speed) setup move - const setupMoves = movePool.filter(moveid => SETUP.includes(moveid)); - if (setupMoves.length) { - const moveid = this.sample(setupMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - - // Enforce redirecting moves and Fake Out on Doubles Support - if (role === 'Doubles Support') { - for (const moveid of ['fakeout', 'followme', 'ragepowder']) { - if (movePool.includes(moveid)) { - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - - // Enforce Protect - if (role.includes('Protect')) { - const protectMoves = movePool.filter(moveid => PROTECT_MOVES.includes(moveid)); - if (protectMoves.length) { - const moveid = this.sample(protectMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce a move not on the noSTAB list - if (!counter.damagingMoves.size) { - // Choose an attacking move - const attackingMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - if (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid); - } - if (attackingMoves.length) { - const moveid = this.sample(attackingMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - - // Enforce coverage move - if (!['AV Pivot', 'Fast Support', 'Bulky Support', 'Bulky Protect', 'Doubles Support'].includes(role)) { - if (counter.damagingMoves.size === 1) { - // Find the type of the current attacking move - const currentAttackType = counter.damagingMoves.values().next().value!.type; - // Choose an attacking move that is of different type to the current single attack - const coverageMoves = []; - for (const moveid of movePool) { - const move = this.dex.moves.get(moveid); - const moveType = this.getMoveType(move, species, abilities, teraType); - if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback)) { - if (currentAttackType !== moveType) coverageMoves.push(moveid); - } - } - if (coverageMoves.length) { - const moveid = this.sample(coverageMoves); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - - // Add (moves.size < this.maxMoveCount) as a condition if moves is getting larger than 4 moves. - // If you want moves to be favored but not required, add something like && this.randomChance(1, 2) to your condition. - - // Choose remaining moves randomly from movepool and add them to moves list: - while (moves.size < this.maxMoveCount && movePool.length) { - if (moves.size + movePool.length <= this.maxMoveCount) { - for (const moveid of movePool) { - moves.add(moveid); - } - break; - } - const moveid = this.sample(movePool); - counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - for (const pair of MOVE_PAIRS) { - if (moveid === pair[0] && movePool.includes(pair[1])) { - counter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - if (moveid === pair[1] && movePool.includes(pair[0])) { - counter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead, isDoubles, - movePool, teraType, role); - } - } - } - return moves; - } - - override getPriorityItem( - ability: string, - types: string[], - moves: Set, - counter: MoveCounter, - teamDetails: RandomTeamsTypes.TeamDetails, - species: Species, - isLead: boolean, - isDoubles: boolean, - teraType: string, - role: RandomTeamsTypes.Role, - ) { - if (!isDoubles) { - if (role === 'Fast Bulky Setup' && (ability === 'Quark Drive' || ability === 'Protosynthesis')) { - return 'Booster Energy'; - } - if (species.id === 'lokix') { - return (role === 'Fast Attacker') ? 'Silver Powder' : 'Life Orb'; - } - } - if (species.requiredItems) { - // Z-Crystals aren't available in Gen 9, so require Plates - if (species.baseSpecies === 'Arceus') { - return species.requiredItems[0]; - } - return this.sample(species.requiredItems); - } - if (role === 'AV Pivot') return 'Assault Vest'; - // other - if (moves.has('substitute')) return 'Leftovers'; - if (moves.has('protect') && ability !== 'Speed Boost') return 'Leftovers'; - if (counter.get('skilllink') && ability !== 'Skill Link' && species.id !== 'breloom') return 'Loaded Dice'; - if (moves.has('shellsmash') && ability !== 'Weak Armor') return 'White Herb'; - if ((ability === 'Guts' || moves.has('facade')) && !moves.has('sleeptalk')) { - return (types.includes('Fire') || ability === 'Toxic Boost' || ability === 'Poison Heal') ? 'Toxic Orb' : 'Flame Orb'; - } - if (['healingwish', 'switcheroo', 'trick'].some(m => moves.has(m))) { - if ( - species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && - role !== 'Wallbreaker' && role !== 'Doubles Wallbreaker' && !counter.get('priority') - ) { - return 'Choice Scarf'; - } else { - return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs'; - } - } - if ( - role === 'Wallbreaker' && (counter.get('Physical') > counter.get('Special')) && !counter.get('Status') - ) { - return 'Choice Band'; - } - if ( - role === 'Wallbreaker' && (counter.get('Physical') < counter.get('Special')) && !counter.get('Status') - ) { - return 'Choice Specs'; - } - if (ability === 'Poison Heal' || ability === 'Quick Feet') return 'Toxic Orb'; - if (moves.has('acrobatics') && ability !== 'Quark Drive' && ability !== 'Protosynthesis') return ''; - if (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay'; - if (ability === 'Gluttony') return `${this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki'])} Berry`; - if ( - ['Cheek Pouch', 'Cud Chew', 'Harvest', 'Ripen'].some(m => ability === m) || - moves.has('bellydrum') || moves.has('filletaway') - ) { - return 'Sitrus Berry'; - } - if (this.dex.getEffectiveness('Rock', species) >= 2) return 'Heavy-Duty Boots'; - if (species.nfe) return 'Eviolite'; - if (['Bulky Attacker', 'Bulky Support', 'Bulky Setup'].some(m => role === (m))) return 'Leftovers'; - if (role === 'Fast Support' || role === 'Fast Bulky Setup') { - return (counter.get('Physical') + counter.get('Special') >= 3) ? 'Life Orb' : 'Leftovers'; - } - } - - override randomSet( - s: string | Species, - teamDetails: RandomTeamsTypes.TeamDetails = {}, - isLead = false, - isDoubles = false - ): RandomTeamsTypes.RandomSet { - const species = this.dex.species.get(s); - const forme = this.getForme(species); - const sets = this.randomSets[species.id]["sets"]; - const possibleSets: RandomTeamsTypes.RandomSetData[] = []; - - // const ruleTable = this.dex.formats.getRuleTable(this.format); - - for (const set of sets) { - // Prevent Fast Bulky Setup on lead Paradox Pokemon, since it generates Booster Energy. - const abilities = set.abilities!; - if ( - isLead && (abilities.includes('Protosynthesis') || abilities.includes('Quark Drive')) && - set.role === 'Fast Bulky Setup' - ) continue; - // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented. - if (teamDetails.teraBlast && set.role === 'Tera Blast user') { - continue; - } - possibleSets.push(set); - } - const set = this.sampleIfArray(possibleSets); - const role = set.role; - const movePool: string[] = []; - for (const movename of set.movepool) { - movePool.push(this.dex.moves.get(movename).id); - } - const teraTypes = set.teraTypes!; - let teraType = this.sampleIfArray(teraTypes); - - let ability = ''; - let item = undefined; - - const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 }; - const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 }; - - const types = []; - types[0] = species.types[0]; - if (species.types[1]) types[1] = species.types[1]; - const abilities = set.abilities!; - - // Get moves - const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role); - const counter = this.queryMoves(moves, species, teraType, abilities); - - // Get ability - ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role); - - // Get items - // First, the priority items - item = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles, teraType, role); - if (item === undefined) { - if (isDoubles) { - item = this.getDoublesItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role); - } else { - item = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role); - } - } - - // Get level - const level = this.getLevel(species, isDoubles); - - // Prepare optimal HP - const srImmunity = ability === 'Magic Guard' || item === 'Heavy-Duty Boots'; - let srWeakness = srImmunity ? 0 : this.dex.getEffectiveness('Rock', species); - // Crash damage move users want an odd HP to survive two misses - if (['axekick', 'highjumpkick', 'jumpkick'].some(m => moves.has(m))) srWeakness = 2; - while (evs.hp > 1) { - const hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10); - if ((moves.has('substitute') && ['Sitrus Berry', 'Salac Berry'].includes(item))) { - // Two Substitutes should activate Sitrus Berry - if (hp % 4 === 0) break; - } else if ((moves.has('bellydrum') || moves.has('filletaway')) && (item === 'Sitrus Berry' || ability === 'Gluttony')) { - // Belly Drum should activate Sitrus Berry - if (hp % 2 === 0) break; - } else if (moves.has('substitute') && moves.has('endeavor')) { - // Luvdisc should be able to Substitute down to very low HP - if (hp % 4 > 0) break; - } else { - // Maximize number of Stealth Rock switch-ins - if (srWeakness <= 0 || ability === 'Regenerator' || ['Leftovers', 'Life Orb', 'Eviolite'].includes(item)) break; - if (item !== 'Sitrus Berry' && hp % (4 / srWeakness) > 0) break; - // Minimise number of Stealth Rock switch-ins to activate Sitrus Berry - if (item === 'Sitrus Berry' && hp % (4 / srWeakness) === 0) break; - } - evs.hp -= 4; - } - - // Minimize confusion damage - const noAttackStatMoves = [...moves].every(m => { - const move = this.dex.moves.get(m); - if (move.damageCallback || move.damage) return true; - if (move.id === 'shellsidearm') return false; - // Magearna and doubles Dragonite, though these can work well as a general rule - if (move.id === 'terablast' && ( - species.id === 'porygon2' || moves.has('shiftgear') || species.baseStats.atk > species.baseStats.spa) - ) return false; - return move.category !== 'Physical' || move.id === 'bodypress' || move.id === 'foulplay'; - }); - // prevents Illumise (who can turn into Volbeat with Physical moves) from having 0 Atk EVs - if (noAttackStatMoves && !moves.has('transform') && this.format.mod !== 'partnersincrime' && - species.id !== 'illumise') { - evs.atk = 0; - ivs.atk = 0; - } - - // Enforce Tera Type after all set generation is done to prevent infinite generation - if (this.forceTeraType) teraType = this.forceTeraType; - - // shuffle moves to add more randomness to camomons - const shuffledMoves = Array.from(moves); - this.prng.shuffle(shuffledMoves); - return { - name: species.baseSpecies, - species: forme, - gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')), - shiny: this.randomChance(1, 1024), - level, - moves: shuffledMoves, - ability, - evs, - ivs, - item, - teraType, - role, - }; - } - - override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./random-sets.json'); - - random6x6Team() { - this.enforceNoDirectCustomBanlistChanges(); - - const seed = this.prng.getSeed(); - const ruleTable = this.dex.formats.getRuleTable(this.format); - const pokemon: RandomTeamsTypes.RandomSet[] = []; - - // For Monotype - const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause'); - const isDoubles = this.format.gameType !== 'singles'; - const typePool = this.dex.types.names().filter(name => name !== "Stellar"); - const type = this.forceMonotype || this.sample(typePool); - - // PotD stuff - // const usePotD = global.Config && Config.potd && ruleTable.has('potd'); - // const potd = usePotD ? this.dex.species.get(Config.potd) : null; - - const baseFormes: { [k: string]: number } = {}; - - const typeCount: { [k: string]: number } = {}; - const typeComboCount: { [k: string]: number } = {}; - const typeWeaknesses: { [k: string]: number } = {}; - const typeDoubleWeaknesses: { [k: string]: number } = {}; - const teamDetails: RandomTeamsTypes.TeamDetails = {}; - - const pokemonList = Object.keys(this.randomSets); - const [pokemonPool, baseSpeciesPool] = this.getPokemonPool(type, pokemon, isMonotype, pokemonList); - - let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1; - while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) { - const baseSpecies = this.sampleNoReplace(baseSpeciesPool); - // const z = 0; - const species = this.dex.species.get(this.sample(pokemonPool[baseSpecies])); - if (!species.exists) continue; - - // Limit to one of each species (Species Clause) - if (baseFormes[species.baseSpecies]) continue; - - // Treat Ogerpon formes and Terapagos like the Tera Blast user role; reject if team has one already - if (['ogerpon', 'ogerponhearthflame', 'terapagos'].includes(species.id) && teamDetails.teraBlast) continue; - - const types = species.types; - const typeCombo = types.slice().sort().join(); - const weakToFreezeDry = ( - this.dex.getEffectiveness('Ice', species) > 0 || - (this.dex.getEffectiveness('Ice', species) > -2 && types.includes('Water')) - ); - // Dynamically scale limits for different team sizes. The default and minimum value is 1. - const limitFactor = Math.round(this.maxTeamSize / 6) || 1; - - // Limit three of any type combination in Monotype - if (!this.forceMonotype && isMonotype && (typeComboCount[typeCombo] >= 3 * limitFactor)) continue; - - // The Pokemon of the Day - // if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd; - - // testing code - // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Terapagos'); - - let set: RandomTeamsTypes.RandomSet; - - if (leadsRemaining) { - if ( - isDoubles && DOUBLES_NO_LEAD_POKEMON.includes(species.baseSpecies) || - !isDoubles && NO_LEAD_POKEMON.includes(species.baseSpecies) - ) { - if (pokemon.length + leadsRemaining === this.maxTeamSize) continue; - set = this.randomSet(species, teamDetails, false, isDoubles); - if (teamDetails.teraBlast) continue; - pokemon.push(set); - } else { - set = this.randomSet(species, teamDetails, true, isDoubles); - // if (teamDetails.teraBlast) continue; - pokemon.unshift(set); - leadsRemaining--; - } - } else { - set = this.randomSet(species, teamDetails, false, isDoubles); - // if (teamDetails.teraBlast) continue; - pokemon.push(set); - } - - // Don't bother tracking details for the last Pokemon - if (pokemon.length === this.maxTeamSize) break; - - // Now that our Pokemon has passed all checks, we can increment our counters - baseFormes[species.baseSpecies] = 1; - - // Increment type counters - for (const typeName of types) { - if (typeName in typeCount) { - typeCount[typeName]++; - } else { - typeCount[typeName] = 1; - } - } - if (typeCombo in typeComboCount) { - typeComboCount[typeCombo]++; - } else { - typeComboCount[typeCombo] = 1; - } - - // Increment weakness counter - for (const typeName of this.dex.types.names()) { - // it's weak to the type - if (this.dex.getEffectiveness(typeName, species) > 0) { - typeWeaknesses[typeName]++; - } - if (this.dex.getEffectiveness(typeName, species) > 1) { - typeDoubleWeaknesses[typeName]++; - } - } - // Count Dry Skin/Fluffy as Fire weaknesses - if (['Dry Skin', 'Fluffy'].includes(set.ability) && this.dex.getEffectiveness('Fire', species) === 0) { - typeWeaknesses['Fire']++; - } - if (weakToFreezeDry) typeWeaknesses['Freeze-Dry']++; - - // Increment level 100 counter - // if (set.level === 100) numMaxLevelPokemon++; - - // Track what the team has - if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1; - if (set.ability === 'Drought' || set.ability === 'Orichalcum Pulse' || set.moves.includes('sunnyday')) { - teamDetails.sun = 1; - } - if (set.ability === 'Sand Stream') teamDetails.sand = 1; - if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) { - teamDetails.snow = 1; - } - if (set.moves.includes('healbell')) teamDetails.statusCure = 1; - if (set.moves.includes('spikes') || set.moves.includes('ceaselessedge')) { - teamDetails.spikes = (teamDetails.spikes || 0) + 1; - } - if (set.moves.includes('toxicspikes') || set.ability === 'Toxic Debris') teamDetails.toxicSpikes = 1; - if (set.moves.includes('stealthrock') || set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1; - if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1; - if (set.moves.includes('defog')) teamDetails.defog = 1; - if (set.moves.includes('rapidspin') || set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1; - if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) { - teamDetails.screens = 1; - } - if (set.role === 'Tera Blast user' || species.baseSpecies === "Ogerpon" || species.baseSpecies === "Terapagos") { - teamDetails.teraBlast = 1; - } - } - if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built - throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`); - } - - return pokemon; - } -} - -export default Random6x6Teams; From eaff3cf2a8845c5e42e1cee8d9bf4e7cd09e4a4d Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Mar 2026 03:40:36 -0700 Subject: [PATCH 133/139] Reimplement ORAS Pure Hackmons ladder --- config/formats.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 6c5557f8e2..b68742ea93 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -878,10 +878,10 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], }, { - name: "[Gen 7] Pure Hackmons", + name: "[Gen 6] Pure Hackmons", desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`, - mod: 'gen7', - ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause'], + mod: 'gen6', + ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'], }, // Challengeable OMs @@ -2902,11 +2902,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], }, { - name: "[Gen 6] Pure Hackmons", + name: "[Gen 7] Pure Hackmons", desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`, - mod: 'gen6', + mod: 'gen7', searchShow: false, - ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'], + ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause'], }, // Temporary Tour Metas From 16675b07bcd99376208c2e021971f7e1c66313a4 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Mar 2026 10:26:15 -0700 Subject: [PATCH 134/139] Make 4v4 Doubles UU actually doubles --- config/formats.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/formats.ts b/config/formats.ts index b68742ea93..ddf28277bc 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -611,6 +611,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ { name: "[Gen 9] 4v4 Doubles UU", desc: "VGC rules, but only Pokémon that get less than 4.52% usage on the VGC ladder are legal, as well as a few other guidelines.", + mod: 'gen9', + gameType: 'doubles', ruleset: ['[Gen 9] VGC 2026 Reg F', 'Evasion Abilities Clause', 'Evasion Moves Clause', 'OHKO Clause'], banlist: [ 'Amoonguss', 'Annihilape', 'Arcanine-Hisui', 'Basculegion-M', 'Chi-Yu', 'Chien-Pao', 'Cresselia', 'Dondozo', 'Dragonite', 'Enamorus-Incarnate', 'Farigiraf', 'Flutter Mane', From c8ed448422a55863c5984c6fe821db726269ea1a Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Mar 2026 10:27:21 -0700 Subject: [PATCH 135/139] BH: Update bans --- config/formats.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index ddf28277bc..098e9901b6 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -717,12 +717,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Endless Battle Clause', 'Hackmons Forme Legality', 'Species Reveal Clause', 'Terastal Clause', ], banlist: [ - 'Calyrex-Shadow', 'Deoxys-Attack', 'Diancie-Mega', 'Gengar-Mega', 'Groudon-Primal', 'Kartana', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Rayquaza-Mega', - 'Regigigas', 'Shedinja', 'Slaking', 'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Hadron Engine', 'Huge Power', 'Illusion', 'Innards Out', 'Libero', - 'Liquid Ooze', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Orichalcum Pulse', 'Parental Bond', 'Poison Heal', 'Protean', 'Pure Power', 'Shadow Tag', - 'Stakeout', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Belly Drum', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw', - 'Electro Shot', 'Fillet Away', 'Imprison', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Photon Geyser', 'Power Trip', 'Quiver Dance', 'Rage Fist', - 'Revival Blessing', 'Shed Tail', 'Sleep Talk', 'Substitute', 'Shell Smash', 'Tail Glow', + 'Calyrex-Shadow', 'Deoxys-Attack', 'Gengar-Mega', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Rayquaza-Mega', 'Regigigas', 'Shedinja', 'Slaking', 'Arena Trap', + 'Contrary', 'Gorilla Tactics', 'Hadron Engine', 'Huge Power', 'Illusion', 'Innards Out', 'Libero', 'Liquid Ooze', 'Magnet Pull', 'Moody', 'Neutralizing Gas', + 'Orichalcum Pulse', 'Parental Bond', 'Poison Heal', 'Protean', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', + 'Razor Fang', 'Baton Pass', 'Belly Drum', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw', 'Electro Shot', 'Fillet Away', 'Imprison', 'Last Respects', + 'Lumina Crash', 'No Retreat', 'Photon Geyser', 'Power Trip', 'Quiver Dance', 'Rage Fist', 'Revival Blessing', 'Shed Tail', 'Sleep Talk', 'Substitute', + 'Shell Smash', 'Tail Glow', 'V-create', ], }, { From 3a3c6739f20e424e49f04f81972f8f43a34344aa Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Mar 2026 10:28:13 -0700 Subject: [PATCH 136/139] Implement March 2026 tier shifts --- config/formats.ts | 3 +-- data/formats-data.ts | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 098e9901b6..dba5b39829 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -340,8 +340,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['[Gen 9] LC'], banlist: [ 'Chinchou', 'Diglett-Alola', 'Drifloon', 'Elekid', 'Foongus', 'Glimmet', 'Gothita', 'Grookey', 'Growlithe-Hisui', 'Koffing', 'Mareanie', 'Mienfoo', 'Mudbray', - 'Pawniard', 'Salandit', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', 'Trapinch', 'Vullaby', 'Wingull', - 'Zorua-Hisui', + 'Pawniard', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', 'Trapinch', 'Vullaby', 'Wingull', 'Zorua-Hisui', // LC UUBL 'Deerling', 'Minccino', 'Light Clay', ], diff --git a/data/formats-data.ts b/data/formats-data.ts index 42664c5615..ccaea84c80 100644 --- a/data/formats-data.ts +++ b/data/formats-data.ts @@ -560,7 +560,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = tentacruel: { tier: "NU", doublesTier: "(DUU)", - natDexTier: "UU", + natDexTier: "RU", }, geodude: { tier: "LC", @@ -5322,7 +5322,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = quaquaval: { tier: "UUBL", doublesTier: "(DUU)", - natDexTier: "UU", + natDexTier: "RUBL", }, lechonk: { tier: "LC", From 746d3ddf6287eb6694e21df187a5e28e77e83e31 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Mar 2026 10:52:06 -0700 Subject: [PATCH 137/139] PokeAAA: Update bans --- config/formats.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index dba5b39829..484cdcacf8 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -539,9 +539,9 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard OMs', '!Obtainable Abilities', 'Ability Clause = 1', 'AAA Restricted Abilities', 'Terastal Clause', 'Sleep Moves Clause'], banlist: [ 'Annihilape', 'Arcanine-Hisui', 'Arceus', 'Archaludon', 'Azumarill', 'Basculegion', 'Basculin', 'Baxcalibur', 'Blaziken', 'Braviary-Hisui', 'Calyrex-Ice', 'Calyrex-Shadow', - 'Ceruledge', 'Chi-Yu', 'Chien-Pao', 'Clefable', 'Cloyster', 'Conkeldurr', 'Darkrai', 'Deoxys', 'Deoxys-Attack', 'Dialga', 'Enamorus-Base', 'Espathra', 'Eternatus', 'Excadrill', - 'Flutter Mane', 'Gholdengo', 'Giratina', 'Gouging Fire', 'Groudon', 'Hawlucha', 'Ho-Oh', 'Hoopa-Unbound', 'Iron Bundle', 'Iron Valiant', 'Kingambit', 'Keldeo', 'Kleavor', - 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Base', 'Lugia', 'Lunala', 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', + 'Ceruledge', 'Chi-Yu', 'Chien-Pao', 'Clefable', 'Cloyster', 'Conkeldurr', 'Darkrai', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Enamorus-Base', 'Espathra', 'Eternatus', + 'Excadrill', 'Flutter Mane', 'Gholdengo', 'Giratina', 'Gouging Fire', 'Groudon', 'Hawlucha', 'Ho-Oh', 'Hoopa-Unbound', 'Iron Bundle', 'Iron Valiant', 'Kingambit', 'Keldeo', + 'Kleavor', 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Ogerpon-Hearthflame', 'Palkia', 'Porygon-Z', 'Raging Bolt', 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Serperior', 'Shaymin-Sky', 'Smeargle', 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Volcarona', 'Walking Wake', 'Weavile', 'Zacian', 'Zacian-Crowned', 'Zapdos-Galar', 'Zekrom', 'Zoroark-Hisui', 'Arena Trap', 'Magnet Pull', 'Moody', 'Shadow Tag', 'Regenerator + Wimp Out', 'Regenerator + Emergency Exit', From e8bd7a59055c0f495b9f058113f69bedb0c3e4d7 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 1 Mar 2026 14:22:08 -0700 Subject: [PATCH 138/139] Linked and PokeAAA: Update bans --- config/formats.ts | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 484cdcacf8..acf5ce08c2 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -501,12 +501,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [ // searchShow: false, ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Clause', 'Terastal Clause'], banlist: [ - 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Normal', 'Dialga', 'Dialga-Origin', 'Eternatus', - 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', - 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin', 'Raichu-Alola', - 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Volcarona', - 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Chlorophyll', 'Moody', 'Sand Rush', 'Shadow Tag', 'Slush Rush', 'Speed Boost', 'Swift Swim', 'Unburden', - 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', + 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Normal', 'Dialga', 'Dialga-Origin', + 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', + 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', + 'Palkia-Origin', 'Raichu-Alola', 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', + 'Urshifu-Rapid-Strike', 'Volcarona', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Chlorophyll', 'Moody', 'Sand Rush', 'Shadow Tag', + 'Slush Rush', 'Speed Boost', 'Swift Swim', 'Unburden', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail', ], restricted: [ 'Baneful Bunker', 'Bounce', 'Burning Bulwark', 'Detect', 'Dig', 'Dive', 'Fly', 'Imprison', 'Phantom Force', 'Protect', @@ -539,16 +539,16 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard OMs', '!Obtainable Abilities', 'Ability Clause = 1', 'AAA Restricted Abilities', 'Terastal Clause', 'Sleep Moves Clause'], banlist: [ 'Annihilape', 'Arcanine-Hisui', 'Arceus', 'Archaludon', 'Azumarill', 'Basculegion', 'Basculin', 'Baxcalibur', 'Blaziken', 'Braviary-Hisui', 'Calyrex-Ice', 'Calyrex-Shadow', - 'Ceruledge', 'Chi-Yu', 'Chien-Pao', 'Clefable', 'Cloyster', 'Conkeldurr', 'Darkrai', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Enamorus-Base', 'Espathra', 'Eternatus', - 'Excadrill', 'Flutter Mane', 'Gholdengo', 'Giratina', 'Gouging Fire', 'Groudon', 'Hawlucha', 'Ho-Oh', 'Hoopa-Unbound', 'Iron Bundle', 'Iron Valiant', 'Kingambit', 'Keldeo', - 'Kleavor', 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', - 'Necrozma-Dusk-Mane', 'Noivern', 'Ogerpon-Hearthflame', 'Palkia', 'Porygon-Z', 'Raging Bolt', 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Serperior', 'Shaymin-Sky', 'Smeargle', - 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Volcarona', 'Walking Wake', 'Weavile', 'Zacian', - 'Zacian-Crowned', 'Zapdos-Galar', 'Zekrom', 'Zoroark-Hisui', 'Arena Trap', 'Magnet Pull', 'Moody', 'Shadow Tag', 'Regenerator + Wimp Out', 'Regenerator + Emergency Exit', - 'Regenerator > 2', - 'Drizzle + Swift Swim', 'Primordial Sea + Swift Swim', 'Drought + Chlorophyll', 'Desolate Land + Chlorophyll', 'Electric Surge + Surge Surfer', 'Hadron Engine + Surge Surfer', - 'Hadron Engine + Quark Drive', 'Electric Surge + Quark Drive', 'Drought + Protosynthesis', 'Sand Stream + Sand Rush', 'Sand Stream + Sand Veil', 'Snow Warning + Snow Cloak', - 'Snow Warning + Slush Rush', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Revival Blessing', 'Shed Tail', + 'Ceruledge', 'Chi-Yu', 'Chien-Pao', 'Clefable', 'Cloyster', 'Conkeldurr', 'Darkrai', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', 'Dondozo', 'Dragonite', + 'Enamorus-Incarnate', 'Espathra', 'Eternatus', 'Excadrill', 'Flutter Mane', 'Gholdengo', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Hawlucha', 'Ho-Oh', + 'Hoopa-Unbound', 'Iron Bundle', 'Iron Valiant', 'Kingambit', 'Keldeo', 'Kleavor', 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate', + 'Lugia', 'Lunala', 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Ogerpon-Hearthflame', 'Palkia', 'Palkia-Origin', + 'Porygon-Z', 'Raging Bolt', 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Serperior', 'Shaymin-Sky', 'Smeargle', 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna', 'Ursaluna-Bloodmoon', + 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Volcarona', 'Walking Wake', 'Weavile', 'Yanmega', 'Zacian', 'Zacian-Crowned', 'Zapdos-Galar', 'Zekrom', 'Zoroark-Hisui', + 'Arena Trap', 'Magnet Pull', 'Moody', 'Shadow Tag', 'Regenerator + Wimp Out', 'Regenerator + Emergency Exit', 'Regenerator > 2', 'Drizzle + Swift Swim', 'Primordial Sea + Swift Swim', + 'Drought + Chlorophyll', 'Desolate Land + Chlorophyll', 'Electric Surge + Surge Surfer', 'Hadron Engine + Surge Surfer', 'Hadron Engine + Quark Drive', 'Electric Surge + Quark Drive', + 'Drought + Protosynthesis', 'Sand Stream + Sand Rush', 'Sand Stream + Sand Veil', 'Snow Warning + Snow Cloak', 'Snow Warning + Slush Rush', 'King\'s Rock', 'Razor Fang', 'Baton Pass', + 'Last Respects', 'Revival Blessing', 'Shed Tail', 'Stored Power', ], restricted: [ 'Comatose', 'Contrary', 'Fur Coat', 'Good as Gold', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Magic Bounce', 'Neutralizing Gas', From c9f530f4126a450d5da4fe6678fc843f64362fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 1 Mar 2026 22:26:44 +0100 Subject: [PATCH 139/139] Legends Z-A OU: March tier shifts (#11788) --- data/mods/gen9legendsou/formats-data.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/mods/gen9legendsou/formats-data.ts b/data/mods/gen9legendsou/formats-data.ts index 77d8d85a8a..691d610cf2 100644 --- a/data/mods/gen9legendsou/formats-data.ts +++ b/data/mods/gen9legendsou/formats-data.ts @@ -366,7 +366,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, slowking: { - tier: "OU", + tier: "UU", }, slowkinggalar: { tier: "OU", @@ -600,7 +600,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "UU", }, absolmegaz: { - tier: "UU", + tier: "OU", }, snorunt: { tier: "LC", @@ -723,7 +723,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "LC", }, hippowdon: { - tier: "OU", + tier: "UU", }, snover: { tier: "LC", @@ -1295,7 +1295,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, volcanion: { - tier: "UU", + tier: "OU", }, crabrawler: { tier: "LC",