From cd95a13a78a0854823ed66ed673e4ff17c54812f Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 14 Dec 2025 09:54:22 -0700 Subject: [PATCH 01/74] Legends Z-A: Update abilities and ban Magearna-Mega --- data/mods/gen9legendsou/formats-data.ts | 4 ++-- data/mods/gen9legendsou/pokedex.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/mods/gen9legendsou/formats-data.ts b/data/mods/gen9legendsou/formats-data.ts index b8144b72da..98b02cf4c9 100644 --- a/data/mods/gen9legendsou/formats-data.ts +++ b/data/mods/gen9legendsou/formats-data.ts @@ -1337,10 +1337,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat tier: "OU", }, magearnamega: { - tier: "OU", + tier: "Uber", }, magearnaoriginalmega: { - tier: "OU", + tier: "Uber", }, marshadow: { tier: "Uber", diff --git a/data/mods/gen9legendsou/pokedex.ts b/data/mods/gen9legendsou/pokedex.ts index 2928b35079..9dafefdff9 100644 --- a/data/mods/gen9legendsou/pokedex.ts +++ b/data/mods/gen9legendsou/pokedex.ts @@ -5,7 +5,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, victreebelmega: { inherit: true, - abilities: { 0: "Toxic Debris" }, + abilities: { 0: "Triage" }, }, raichumegax: { inherit: true, @@ -70,7 +70,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, garchompmegaz: { inherit: true, - abilities: { 0: "Neuroforce" }, + abilities: { 0: "Rough Skin" }, }, lucariomegaz: { inherit: true, @@ -198,7 +198,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, glimmoramega: { inherit: true, - abilities: { 0: "Toxic Chain" }, + abilities: { 0: "Rocky Payload" }, }, tatsugiricurlymega: { inherit: true, From f245f28c83635eb83ad008130112bddffad24b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 14 Dec 2025 16:56:10 +0000 Subject: [PATCH 02/74] Ubers UU: Ban Arceus-Electric (#11621) https://www.smogon.com/forums/threads/sv-ubers-uu-metagame-discussion-arceus-electric-ban-post-736.3731761/post-10802137 --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 96b29bc69a..0cbb64c201 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -339,7 +339,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Regieleki', 'Ribombee', 'Skeledirge', 'Terapagos', 'Ting-Lu', 'Zacian-Crowned', // Ubers UUBL + Lunala, Arceus-Ghost, Arceus-Water - 'Arceus-Dragon', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', 'Zekrom', + 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian', 'Zekrom', ], }, { From 8e999f3c5108a83b936175712f149df0399d2dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 14 Dec 2025 16:56:24 +0000 Subject: [PATCH 03/74] National Dex UU: Ban Iron Moth (#11618) https://www.smogon.com/forums/threads/sv-national-dex-uu-stage-8-3-moth-to-a-flame.3774328/#post-10801535 --- 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 5772a25602..983b4785cd 100644 --- a/data/formats-data.ts +++ b/data/formats-data.ts @@ -5646,7 +5646,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable = ironmoth: { tier: "OU", doublesTier: "(DUU)", - natDexTier: "UU", + natDexTier: "UUBL", }, ironhands: { tier: "UUBL", From 3498499a7f24819f2483a406032e986d2b3d4596 Mon Sep 17 00:00:00 2001 From: Runo <105902454+Runoisch@users.noreply.github.com> Date: Sun, 14 Dec 2025 11:56:38 -0500 Subject: [PATCH 04/74] NatDex RU: Ban Slowbronite (#11616) --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 0cbb64c201..86bb41b9ce 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -2672,7 +2672,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ mod: 'gen9', searchShow: false, ruleset: ['[Gen 9] National Dex UU'], - banlist: ['ND UU', 'ND RUBL'], + banlist: ['ND UU', 'ND RUBL', 'Slowbronite'], }, { name: "[Gen 9] National Dex LC", From 9c6d0bf25dce64dfb665ee2253d9fa939e1debdd Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 14 Dec 2025 10:00:20 -0700 Subject: [PATCH 05/74] Fix Mega Meowstic-M's forme --- data/pokedex.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/pokedex.ts b/data/pokedex.ts index f89609e8e2..614779c226 100644 --- a/data/pokedex.ts +++ b/data/pokedex.ts @@ -12725,7 +12725,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = { num: 678, name: "Meowstic-M-Mega", baseSpecies: "Meowstic", - forme: "Mega", + forme: "M-Mega", types: ["Psychic"], gender: "M", baseStats: { hp: 74, atk: 48, def: 76, spa: 143, spd: 101, spe: 124 }, From 9df62c450ede516c25a16778e12411b0df2ad329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Sun, 14 Dec 2025 18:05:10 +0000 Subject: [PATCH 06/74] Fix Meowstic-M-Mega test (#11624) https://github.com/smogon/pokemon-showdown/commit/9c6d0bf25dce64dfb665ee2253d9fa939e1debdd --- test/sim/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/sim/data.js b/test/sim/data.js index 01b11fd7a1..95e3738668 100644 --- a/test/sim/data.js +++ b/test/sim/data.js @@ -113,7 +113,7 @@ describe('Dex data', () => { assert.equal(entry.evoItem, item.exists && item.name, `Misspelled/nonexistent evo item "${entry.evoItem}" of ${entry.name}`); } - const battleOnly = ['Mega', 'Mega-X', 'Mega-Y', 'Mega-Z', 'Primal'].includes(entry.forme) ? entry.baseSpecies : entry.battleOnly; + const battleOnly = entry.forme.includes('Mega') || entry.forme === 'Primal' ? entry.baseSpecies : entry.battleOnly; if (entry.requiredAbility) { assert(entry.battleOnly, `Forme ${entry.name} with requiredAbility must have battleOnly`); } From 0fc4e743bbbca9e3e6e68bc3bc2d03ee3da018d4 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 14 Dec 2025 12:28:07 -0700 Subject: [PATCH 07/74] Fix build --- test/sim/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/sim/data.js b/test/sim/data.js index 95e3738668..5988c1731f 100644 --- a/test/sim/data.js +++ b/test/sim/data.js @@ -113,7 +113,7 @@ describe('Dex data', () => { assert.equal(entry.evoItem, item.exists && item.name, `Misspelled/nonexistent evo item "${entry.evoItem}" of ${entry.name}`); } - const battleOnly = entry.forme.includes('Mega') || entry.forme === 'Primal' ? entry.baseSpecies : entry.battleOnly; + const battleOnly = (entry.forme || []).includes('Mega') || entry.forme === 'Primal' ? entry.baseSpecies : entry.battleOnly; if (entry.requiredAbility) { assert(entry.battleOnly, `Forme ${entry.name} with requiredAbility must have battleOnly`); } From 11458b1bd31d43fc1ab5cf8431a5b3ef3041ecd7 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 14 Dec 2025 21:11:56 -0700 Subject: [PATCH 08/74] Fix build --- data/pokedex.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/data/pokedex.ts b/data/pokedex.ts index 614779c226..15f545e973 100644 --- a/data/pokedex.ts +++ b/data/pokedex.ts @@ -12735,6 +12735,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = { color: "Blue", eggGroups: ["Field"], requiredItem: "Meowsticite", + battleOnly: "Meowstic", gen: 9, }, meowsticfmega: { From fa3b107c9536c957149a40922c5ebe7aaf931d55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bastos=20Dias?= <80102738+andrebastosdias@users.noreply.github.com> Date: Mon, 15 Dec 2025 04:12:41 +0000 Subject: [PATCH 09/74] Metronome Battle: Ban Tatsugiri-Mega (#11623) * Metronome Battle: Ban Tatsugiri-Mega * Refactor * Ban the Mega Stone * Fix test --- config/formats.ts | 2 +- test/sim/data.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 86bb41b9ce..83baf46c3f 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3435,7 +3435,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ 'Poison Heal', 'Power Construct', 'Pressure', 'Pure Power', 'Rain Dish', 'Rough Skin', 'Sand Spit', 'Sand Stream', 'Seed Sower', 'Stamina', 'Toxic Chain', 'Volt Absorb', 'Water Absorb', 'Wonder Guard', 'Harvest + Jaboca Berry', 'Harvest + Rowap Berry', 'Aguav Berry', 'Assault Vest', 'Berry', 'Berry Juice', 'Berserk Gene', 'Black Sludge', 'Enigma Berry', 'Figy Berry', 'Gold Berry', 'Iapapa Berry', 'Kangaskhanite', 'Leftovers', 'Mago Berry', 'Medichamite', - 'Steel Memory', 'Oran Berry', 'Rocky Helmet', 'Shell Bell', 'Sitrus Berry', 'Wiki Berry', + 'Steel Memory', 'Oran Berry', 'Rocky Helmet', 'Shell Bell', 'Sitrus Berry', 'Tatsugirinite', 'Wiki Berry', ], onValidateSet(set) { const species = this.dex.species.get(set.species); diff --git a/test/sim/data.js b/test/sim/data.js index 5988c1731f..3bed847416 100644 --- a/test/sim/data.js +++ b/test/sim/data.js @@ -113,7 +113,7 @@ describe('Dex data', () => { assert.equal(entry.evoItem, item.exists && item.name, `Misspelled/nonexistent evo item "${entry.evoItem}" of ${entry.name}`); } - const battleOnly = (entry.forme || []).includes('Mega') || entry.forme === 'Primal' ? entry.baseSpecies : entry.battleOnly; + const battleOnly = (entry.forme || '').includes('Mega') || entry.forme === 'Primal' ? entry.baseSpecies : entry.battleOnly; if (entry.requiredAbility) { assert(entry.battleOnly, `Forme ${entry.name} with requiredAbility must have battleOnly`); } From 5a02f593391235a39bd9ee6f955eccaedbdf8caf Mon Sep 17 00:00:00 2001 From: Mia <49593536+mia-pi-git@users.noreply.github.com> Date: Sun, 14 Dec 2025 23:21:19 -0600 Subject: [PATCH 10/74] Usersearch: Exempt guests from term matches on overview page --- server/chat-plugins/usersearch.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/chat-plugins/usersearch.tsx b/server/chat-plugins/usersearch.tsx index 0b1685cc42..541729bd49 100644 --- a/server/chat-plugins/usersearch.tsx +++ b/server/chat-plugins/usersearch.tsx @@ -220,7 +220,7 @@ export const pages: Chat.PageTable = { const sorted: { [k: string]: number } = {}; for (const curUser of Users.users.values()) { for (const term of nameList) { - if (curUser.id.includes(term)) { + if (curUser.id.includes(term) && !curUser.id.startsWith('guest')) { if (!(term in sorted)) sorted[term] = 0; sorted[term]++; } From 2c58b396cb6eb7e1df54468047ef26b9a6bdd626 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Mon, 15 Dec 2025 19:53:21 -0700 Subject: [PATCH 11/74] Mix and Mega: Release Z-A stones --- config/formats.ts | 3 +-- data/mods/mixandmega/scripts.ts | 17 +++++++++++------ server/chat-plugins/othermetas.ts | 10 ++++++++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 83baf46c3f..7e978ae7ce 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -649,8 +649,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ // 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.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1] || - oSpecies.types[0] !== pokemon.species.types[0]) { + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); } } diff --git a/data/mods/mixandmega/scripts.ts b/data/mods/mixandmega/scripts.ts index 33a6a9d994..dcaf1cdfdb 100644 --- a/data/mods/mixandmega/scripts.ts +++ b/data/mods/mixandmega/scripts.ts @@ -5,7 +5,7 @@ export const Scripts: ModdedBattleScriptsData = { const item = this.data.Items[i]; if (!item.megaStone && !item.onDrive && !(item.onPlate && !item.zMove) && !item.onMemory) continue; this.modData('Items', i).onTakeItem = false; - if (item.isNonstandard === "Past") this.modData('Items', i).isNonstandard = null; + 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; } */ @@ -405,7 +405,7 @@ export const Scripts: ModdedBattleScriptsData = { 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.length !== pokemon.species.types.length || oSpecies.types[1] !== pokemon.species.types[1]) { + if (oSpecies.types.join('/') !== pokemon.species.types.join('/')) { this.battle.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]'); } // } @@ -476,6 +476,7 @@ export const Scripts: ModdedBattleScriptsData = { requiredItem: string | undefined, type?: string, formeType?: string, + isMega?: boolean, } = { ability: formeChangeSpecies.abilities['0'], baseStats: {}, @@ -491,15 +492,19 @@ export const Scripts: ModdedBattleScriptsData = { let formeType: string | null = null; if (['Arceus', 'Silvally'].includes(baseSpecies.name)) { deltas.type = formeChangeSpecies.types[0]; - formeType = 'Arceus'; + formeType = 'Primary'; } else if (formeChangeSpecies.types.length > baseSpecies.types.length) { deltas.type = formeChangeSpecies.types[1]; } else if (formeChangeSpecies.types.length < baseSpecies.types.length) { deltas.type = this.battle.ruleTable.has('mixandmegaoldaggronite') ? 'mono' : baseSpecies.types[0]; } else if (formeChangeSpecies.types[1] !== baseSpecies.types[1]) { deltas.type = formeChangeSpecies.types[1]; + } else if (formeChangeSpecies.types[0] !== baseSpecies.types[0]) { + deltas.type = formeChangeSpecies.types[0]; + formeType = 'Primary'; + deltas.isMega = true; } - if (formeChangeSpecies.isMega) formeType = 'Mega'; + if (formeChangeSpecies.isMega && !formeType) formeType = 'Mega'; if (formeChangeSpecies.isPrimal) formeType = 'Primal'; if (formeChangeSpecies.name.endsWith('Crowned')) formeType = 'Crowned'; if (formeType) deltas.formeType = formeType; @@ -513,7 +518,7 @@ export const Scripts: ModdedBattleScriptsData = { if (!deltas) throw new TypeError("Must specify deltas!"); const species = this.dex.deepClone(this.dex.species.get(speciesOrForme)); species.abilities = { '0': deltas.ability }; - if (deltas.formeType === 'Arceus') { + if (deltas.formeType === 'Primary') { const secondType = species.types[1]; species.types = [deltas.type]; if (secondType && secondType !== deltas.type) species.types.push(secondType); @@ -532,7 +537,7 @@ export const Scripts: ModdedBattleScriptsData = { 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') species.isMega = true; + if (deltas.formeType === 'Mega' || deltas.isMega) species.isMega = true; if (deltas.formeType === 'Primal') species.isPrimal = true; return species; }, diff --git a/server/chat-plugins/othermetas.ts b/server/chat-plugins/othermetas.ts index 9a52bd6301..fd356b3cd5 100644 --- a/server/chat-plugins/othermetas.ts +++ b/server/chat-plugins/othermetas.ts @@ -13,6 +13,7 @@ interface StoneDeltas { weighthg: number; heightm: number; type?: string; + primaryTypeChange?: boolean; } type TierShiftTiers = 'UU' | 'RUBL' | 'RU' | 'NUBL' | 'NU' | 'PUBL' | 'PU' | 'ZUBL' | 'ZU' | 'NFE' | 'LC'; @@ -153,10 +154,13 @@ export const commands: Chat.ChatCommands = { deltas.type = dex.gen === 8 ? 'mono' : baseSpecies.types[0]; } else if (megaSpecies.types[1] !== baseSpecies.types[1]) { deltas.type = megaSpecies.types[1]; + } else if (megaSpecies.types[0] !== baseSpecies.types[0]) { + deltas.type = megaSpecies.types[0]; + deltas.primaryTypeChange = true; } const mixedSpecies = Utils.deepClone(species); mixedSpecies.abilities = Utils.deepClone(megaSpecies.abilities); - if (['Arceus', 'Silvally'].includes(baseSpecies.name)) { + if (['Arceus', 'Silvally'].includes(baseSpecies.name) || deltas.primaryTypeChange) { const secondType = mixedSpecies.types[1]; mixedSpecies.types = [deltas.type]; if (secondType && secondType !== deltas.type) mixedSpecies.types.push(secondType); @@ -230,7 +234,7 @@ export const commands: Chat.ChatCommands = { const stones = []; if (!stone) { const formeIdRegex = new RegExp( - `(?:mega[xy]?|primal|origin|crowned|epilogue|cornerstone|wellspring|hearthflame|douse|shock|chill|burn|${dex.types.all().map(x => x.id).filter(x => x !== 'normal').join('|')})$` + `(?:mega[xyz]?|primal|origin|crowned|epilogue|cornerstone|wellspring|hearthflame|douse|shock|chill|burn|${dex.types.all().map(x => x.id).filter(x => x !== 'normal').join('|')})$` ); const species = dex.species.get(targetid.replace(formeIdRegex, '')); if (!species.exists) throw new Chat.ErrorMessage(`Error: Mega Stone not found.`); @@ -301,6 +305,8 @@ export const commands: Chat.ChatCommands = { deltas.type = dex.gen === 8 ? 'mono' : megaSpecies.types[0]; } else if (megaSpecies.types[1] !== baseSpecies.types[1]) { deltas.type = megaSpecies.types[1]; + } else if (megaSpecies.types[0] !== baseSpecies.types[0]) { + deltas.type = megaSpecies.types[0]; } const details = { Gen: aStone.gen, From 2ed92845c95af2c3e28f4ac2e69790bb140878aa Mon Sep 17 00:00:00 2001 From: HiZo <96159984+HisuianZoroark@users.noreply.github.com> Date: Tue, 16 Dec 2025 01:41:04 -0500 Subject: [PATCH 12/74] Fix bugs with Zygardite (#11628) * Fix bugs with Zygardite * Update data/mods/mixandmega/scripts.ts * Update data/items.ts * fix error * Apply suggestions from code review --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- data/items.ts | 2 +- data/mods/mixandmega/scripts.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/data/items.ts b/data/items.ts index ed923059f4..1ffb717568 100644 --- a/data/items.ts +++ b/data/items.ts @@ -8010,7 +8010,7 @@ export const Items: import('../sim/dex-items').ItemDataTable = { megaEvolves: "Zygarde-Complete", itemUser: ["Zygarde-Complete"], onTakeItem(item, source) { - if (item.megaEvolves === source.baseSpecies.baseSpecies) return false; + if (source.baseSpecies.baseSpecies === 'Zygarde') return false; return true; }, num: 2584, diff --git a/data/mods/mixandmega/scripts.ts b/data/mods/mixandmega/scripts.ts index dcaf1cdfdb..24056551d9 100644 --- a/data/mods/mixandmega/scripts.ts +++ b/data/mods/mixandmega/scripts.ts @@ -466,7 +466,11 @@ export const Scripts: ModdedBattleScriptsData = { return species; }, getFormeChangeDeltas(formeChangeSpecies, pokemon) { - const baseSpecies = this.dex.species.get(formeChangeSpecies.baseSpecies); + // 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.battleOnly as string); + if (formeChangeSpecies.name === 'Zygarde-Mega') { + baseSpecies = this.dex.species.get('Zygarde-Complete'); + } const deltas: { ability: string, baseStats: SparseStatsTable, From 43cedf40253fda36a76219d268f3b508260ac6da Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Tue, 16 Dec 2025 07:46:33 -0700 Subject: [PATCH 13/74] Mix and Mega: Fix non-Mega Stone items --- data/mods/mixandmega/scripts.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/mods/mixandmega/scripts.ts b/data/mods/mixandmega/scripts.ts index 24056551d9..78d85cce0b 100644 --- a/data/mods/mixandmega/scripts.ts +++ b/data/mods/mixandmega/scripts.ts @@ -467,7 +467,8 @@ export const Scripts: ModdedBattleScriptsData = { }, 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.battleOnly as string); + 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'); } From 5b88ce0556f20cda76bc36763caa4e23445f2567 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Wed, 17 Dec 2025 12:04:06 -0700 Subject: [PATCH 14/74] Z-A OU: Update Zeraora-Mega ability and item legality --- data/mods/gen9legendsou/pokedex.ts | 2 +- data/mods/gen9legendsou/scripts.ts | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/data/mods/gen9legendsou/pokedex.ts b/data/mods/gen9legendsou/pokedex.ts index 9dafefdff9..701d79b372 100644 --- a/data/mods/gen9legendsou/pokedex.ts +++ b/data/mods/gen9legendsou/pokedex.ts @@ -186,7 +186,7 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable }, zeraoramega: { inherit: true, - abilities: { 0: "Iron Fist" }, + abilities: { 0: "Volt Absorb" }, }, falinksmega: { inherit: true, diff --git a/data/mods/gen9legendsou/scripts.ts b/data/mods/gen9legendsou/scripts.ts index 0aa01a2635..a96c90b39f 100644 --- a/data/mods/gen9legendsou/scripts.ts +++ b/data/mods/gen9legendsou/scripts.ts @@ -10,7 +10,8 @@ export const Scripts: ModdedBattleScriptsData = { 'softsand', 'spelltag', 'twistedspoon', 'weaknesspolicy', 'whiteherb', 'wiseglasses', 'bottlecap', 'goldbottlecap', 'dawnstone', 'duskstone', 'firestone', 'galaricacuff', 'galaricawreath', 'icestone', 'leafstone', 'moonstone', 'sachet', 'shinystone', 'sunstone', 'thunderstone', 'waterstone', 'whippeddream', 'bignugget', 'redorb', 'blueorb', 'leek', 'thickclub', 'upgrade', - 'dubiousdisc', 'prismscale', 'maliciousarmor', 'auspiciousarmor', + 'dubiousdisc', 'prismscale', 'maliciousarmor', 'auspiciousarmor', 'poweranklet', 'powerband', 'powerbelt', 'powerbracer', + 'powerlens', 'powerweight', 'bignugget', 'bottlecap', 'goldbottlecap', 'prismscale', 'sachet', 'whippeddream', ]; const legalBerries = [ 'aspearberry', 'babiriberry', 'chartiberry', 'cheriberry', 'chestoberry', 'chilanberry', 'chopleberry', 'cobaberry', 'colburberry', @@ -19,12 +20,19 @@ export const Scripts: ModdedBattleScriptsData = { 'sitrusberry', 'tamatoberry', 'tangaberry', 'wacanberry', 'yacheberry', ]; const votedLegalitems = [ - 'heavydutyboots', 'choiceband', 'choicescarf', 'choicespecs', + 'heavydutyboots', 'choiceband', 'choicescarf', 'choicespecs', 'airballoon', 'loadeddice', 'mentalherb', 'powerherb', 'mirrorherb', + 'aguavberry', 'apicotberry', 'custapberry', 'enigmaberry', 'figyberry', 'ganlonberry', 'iapapaberry', 'jabocaberry', 'keeberry', + 'lansatberry', 'leppaberry', 'liechiberry', 'magoberry', 'marangaberry', 'micleberry', 'petayaberry', 'rowapberry', 'salacberry', + 'starfberry', 'wikiberry', 'abilityshield', 'blunderpolicy', 'blacksludge', 'lightclay', 'brightpowder', 'adrenalineorb', 'absorbbulb', + 'clearamulet', 'covertcloak', 'damprock', 'heatrock', 'icyrock', 'smoothrock', 'electricseed', 'mistyseed', 'psychicseed', 'grassyseed', + 'flameorb', 'toxicorb', 'gripclaw', 'laggingtail', 'metronome', 'protectivepads', 'punchingglove', 'razorclaw', 'razorfang', 'roomservice', + 'safetygoggles', 'shellbell', 'shedshell', 'stickybarb', 'terrainextender', 'throatspray', 'utilityumbrella', 'zoomlens', 'bindingband', + 'destinyknot', 'floatstone', 'ironball', 'machobrace', 'ringtarget', ]; for (const i in this.data.Items) { if (this.data.Items[i].isNonstandard === 'CAP' || this.data.Items[i].isNonstandard === 'Custom') continue; if ([...legalItems, ...votedLegalitems, ...legalBerries].includes(i) || - this.data.Items[i].megaStone || this.data.Items[i].onDrive) { + this.data.Items[i].megaStone || this.data.Items[i].onDrive || this.data.Items[i].onPlate) { this.modData('Items', i).isNonstandard = null; } else { this.modData('Items', i).isNonstandard = 'Past'; From 66a6eec955fc2ede4c57eed87535cbdccce6d1b2 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:15:14 -0700 Subject: [PATCH 15/74] Z-A OU: Update bans --- config/formats.ts | 2 +- data/mods/gen9legendsou/scripts.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 7e978ae7ce..1fc1fe3306 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3018,7 +3018,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], mod: 'gen9legendsou', ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Min Source Gen = 3', 'Terastal Clause'], - banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Baton Pass', 'Last Respects', 'Shed Tail'], + banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Bright Powder', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], }, // Randomized Format Spotlight diff --git a/data/mods/gen9legendsou/scripts.ts b/data/mods/gen9legendsou/scripts.ts index a96c90b39f..0230b66858 100644 --- a/data/mods/gen9legendsou/scripts.ts +++ b/data/mods/gen9legendsou/scripts.ts @@ -27,12 +27,13 @@ export const Scripts: ModdedBattleScriptsData = { 'clearamulet', 'covertcloak', 'damprock', 'heatrock', 'icyrock', 'smoothrock', 'electricseed', 'mistyseed', 'psychicseed', 'grassyseed', 'flameorb', 'toxicorb', 'gripclaw', 'laggingtail', 'metronome', 'protectivepads', 'punchingglove', 'razorclaw', 'razorfang', 'roomservice', 'safetygoggles', 'shellbell', 'shedshell', 'stickybarb', 'terrainextender', 'throatspray', 'utilityumbrella', 'zoomlens', 'bindingband', - 'destinyknot', 'floatstone', 'ironball', 'machobrace', 'ringtarget', + 'destinyknot', 'floatstone', 'ironball', 'machobrace', 'ringtarget', 'redcard', 'ejectpack', 'ejectbutton', ]; for (const i in this.data.Items) { if (this.data.Items[i].isNonstandard === 'CAP' || this.data.Items[i].isNonstandard === 'Custom') continue; if ([...legalItems, ...votedLegalitems, ...legalBerries].includes(i) || - this.data.Items[i].megaStone || this.data.Items[i].onDrive || this.data.Items[i].onPlate) { + this.data.Items[i].megaStone || this.data.Items[i].onDrive || + (this.data.Items[i].onPlate && !this.data.Items[i].zMove)) { this.modData('Items', i).isNonstandard = null; } else { this.modData('Items', i).isNonstandard = 'Past'; From 29627552e8af28cd3711216d6cdeecd5f44bb950 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:16:01 -0700 Subject: [PATCH 16/74] Fix build --- config/formats.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/formats.ts b/config/formats.ts index 1fc1fe3306..5e824f06c4 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3018,7 +3018,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], mod: 'gen9legendsou', ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Min Source Gen = 3', 'Terastal Clause'], - banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'Bright Powder', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], }, // Randomized Format Spotlight From d99280a578321a013ff86037c4accbeb5909440c Mon Sep 17 00:00:00 2001 From: Runo <105902454+Runoisch@users.noreply.github.com> Date: Fri, 19 Dec 2025 15:41:45 -0500 Subject: [PATCH 17/74] Z-A OU: Ban Light Clay + Implement Missing Items (#11634) * Z-A OU: Add Soul Dew * Update scripts.ts * Update formats.ts * Update config/formats.ts * Update data/mods/gen9legendsou/scripts.ts --------- Co-authored-by: Kris Johnson <11083252+KrisXV@users.noreply.github.com> --- config/formats.ts | 2 +- data/mods/gen9legendsou/scripts.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 5e824f06c4..96ca0e768e 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -3018,7 +3018,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ], mod: 'gen9legendsou', ruleset: ['Standard', 'Sleep Moves Clause', '!Sleep Clause Mod', 'Min Source Gen = 3', 'Terastal Clause'], - banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'], + 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 diff --git a/data/mods/gen9legendsou/scripts.ts b/data/mods/gen9legendsou/scripts.ts index 0230b66858..a71a40b244 100644 --- a/data/mods/gen9legendsou/scripts.ts +++ b/data/mods/gen9legendsou/scripts.ts @@ -27,7 +27,8 @@ export const Scripts: ModdedBattleScriptsData = { 'clearamulet', 'covertcloak', 'damprock', 'heatrock', 'icyrock', 'smoothrock', 'electricseed', 'mistyseed', 'psychicseed', 'grassyseed', 'flameorb', 'toxicorb', 'gripclaw', 'laggingtail', 'metronome', 'protectivepads', 'punchingglove', 'razorclaw', 'razorfang', 'roomservice', 'safetygoggles', 'shellbell', 'shedshell', 'stickybarb', 'terrainextender', 'throatspray', 'utilityumbrella', 'zoomlens', 'bindingband', - 'destinyknot', 'floatstone', 'ironball', 'machobrace', 'ringtarget', 'redcard', 'ejectpack', 'ejectbutton', + 'destinyknot', 'floatstone', 'ironball', 'machobrace', 'ringtarget', 'redcard', 'ejectpack', 'ejectbutton', 'souldew', 'cellbattery', + 'luminousmoss', 'oddincense', 'roseincense', 'seaincense', 'waveincense', 'snowball', ]; for (const i in this.data.Items) { if (this.data.Items[i].isNonstandard === 'CAP' || this.data.Items[i].isNonstandard === 'Custom') continue; From 03f76488f42f1d3cb507df28ca90e882fce33648 Mon Sep 17 00:00:00 2001 From: InkyDarkBird <102001461+InkyDarkBird@users.noreply.github.com> Date: Fri, 19 Dec 2025 23:21:23 -0500 Subject: [PATCH 18/74] Mix and Mega and Convergence: Update bans (#11637) * Mix and Mega and Convergence: Update bans fix fix SV Convergence: Update bans SV Convergence: Update bans * Mix and Mega Bans --- config/formats.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/config/formats.ts b/config/formats.ts index 96ca0e768e..168cf16471 100644 --- a/config/formats.ts +++ b/config/formats.ts @@ -512,15 +512,15 @@ export const Formats: import('../sim/dex-formats').FormatList = [ // searchShow: false, ruleset: ['Standard OMs', 'Ability Clause = 1', 'Sleep Moves Clause', 'Convergence Legality', 'Terastal Clause', '!Obtainable Abilities'], banlist: [ - 'Arceus', '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', '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', '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', 'Imposter', 'Moody', 'Pure Power', 'Shadow Tag', 'Speed Boost', 'Unburden', 'Heat Rock', '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', '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', ], }, { @@ -601,7 +601,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [ ruleset: ['Standard OMs', 'Evasion Items Clause', 'Evasion Abilities Clause', 'Sleep Moves Clause', 'Terastal Clause'], banlist: [ 'Calyrex-Shadow', 'Koraidon', 'Kyogre', 'Miraidon', 'Moody', 'Shadow Tag', 'Beedrillite', 'Blazikenite', 'Gengarite', - 'Kangaskhanite', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Red Orb', 'Baton Pass', 'Shed Tail', + 'Kangaskhanite', 'Lucarionite Z', 'Malamarite', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Red Orb', 'Baton Pass', + 'Shed Tail', ], restricted: [ 'Arceus', 'Basculegion-M', 'Calyrex-Ice', 'Ceruledge', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Eternatus', 'Flutter Mane', From 7d2de8779e71cd57004fba4beda6a2af01133990 Mon Sep 17 00:00:00 2001 From: Aurastic <33085835+ISenseAura@users.noreply.github.com> Date: Sat, 20 Dec 2025 10:09:55 +0530 Subject: [PATCH 19/74] Thing of the Day: Add auto-start support (#11633) --- server/chat-plugins/thing-of-the-day.ts | 71 +++++++++++++++++++++++++ server/rooms.ts | 2 + 2 files changed, 73 insertions(+) diff --git a/server/chat-plugins/thing-of-the-day.ts b/server/chat-plugins/thing-of-the-day.ts index 2b32154176..755b260270 100644 --- a/server/chat-plugins/thing-of-the-day.ts +++ b/server/chat-plugins/thing-of-the-day.ts @@ -2,6 +2,8 @@ import { FS, Utils } from '../../lib'; import { YouTube } from './youtube'; const MINUTE = 60 * 1000; +const DAY = 24 * 60 * MINUTE; +const WEEK = DAY * 7; const PRENOM_BUMP_TIME = 2 * 60 * MINUTE; const PRENOMS_FILE = 'config/chat-plugins/otd-prenoms.json'; @@ -63,6 +65,7 @@ class OtdHandler { removedNominations: Map; voting: boolean; timer: NodeJS.Timeout | null; + autoStartTimer: NodeJS.Timeout | null; keys: string[]; keyLabels: string[]; timeLabel: string; @@ -81,6 +84,7 @@ class OtdHandler { this.voting = false; this.timer = null; + this.autoStartTimer = null; this.keys = settings.keys; this.keyLabels = settings.keyLabels; @@ -105,6 +109,7 @@ class OtdHandler { needsSave = true; } } + if (room.settings.autoStartOtd) handler.toggleAutoStartTimer(true); if (needsSave) handler.save(); return handler; } @@ -142,6 +147,22 @@ class OtdHandler { } } + toggleAutoStartTimer(on: boolean) { + if (on && !this.autoStartTimer) { + this.autoStartTimer = setInterval(() => { + if (this.voting) { + // in case the 20 min auto-end timer didnt end the nomm process due to 0 nomms + this.rollWinner(); + } + this.startVote(); + this.room.modlog({ action: `${this.id.toUpperCase()} START` }); + }, this.timeLabel === 'week' ? WEEK : DAY); + } else if (!on && this.autoStartTimer) { + clearInterval(this.autoStartTimer); + this.autoStartTimer = null; + } + } + startVote() { this.voting = true; this.timer = setTimeout(() => this.rollWinner(), 20 * MINUTE); @@ -740,6 +761,35 @@ export const otdCommands: Chat.ChatCommands = { `Requires: % @ # ~`, ], + toggleautostart(target, room, user) { + const otd = selectHandler(this.message); + room = this.requireRoom(otd.room.roomid); + + this.checkCan('declare', null, room); + let logMessage = ''; + const handler = selectHandler(this.message); + + if (this.meansYes(target)) { + if (room.settings.autoStartOtd) { + throw new Chat.ErrorMessage(`This -OTD is already set to automatically start.`); + } + room.settings.autoStartOtd = true; + handler.toggleAutoStartTimer(true); + + logMessage = 'start automatically'; + } else { + if (!room.settings.autoStartOtd) { + throw new Chat.ErrorMessage(`This -OTD is not set to automatically start.`); + } + room.settings.autoStartOtd = false; + logMessage = 'not start automatically'; + handler.toggleAutoStartTimer(false); + } + this.privateModAction(`${user.name} set the ${otd.name} nomination to ${logMessage}`); + this.modlog(`OTD TOGGLEAUTOSTART`, null, logMessage); + room.saveSettings(); + }, + toggleupdate(target, room, user) { const otd = selectHandler(this.message); room = this.requireRoom(otd.room.roomid); @@ -908,6 +958,7 @@ const otdHelp = [ `- /-otd set property: value[, property: value] - Set the winner, quote, song, link or image for the current Thing of the Day. Requires: % @ # ~`, `- /-otd winners - Displays a list of previous things of the day.`, `- /-otd toggleupdate [on|off] - Changes the Thing of the Day to display on nomination ([on] to update, [off] to turn off updates). Requires: # ~`, + `- /-otd toggleautostart [on|off] - Enables or disables automatic start for Thing of the Day ([on] enables autostart, [off] disables it). Requires: # ~`, ]; for (const otd in otdData) { @@ -929,6 +980,15 @@ for (const [k, v] of otds) { commands[`${k}help`] = otdHelp; } +const getKeyByRoomId = (id: string): string | undefined => { + for (const [key, handler] of otds.entries()) { + if (handler.room.roomid === id) { + return key; + } + } + return undefined; +}; + export const handlers: Chat.Handlers = { onRenameRoom(oldID, newID, room) { for (const otd in otdData) { @@ -950,3 +1010,14 @@ export const punishmentfilter: Chat.PunishmentFilter = (user, punishment) => { handler.removeNomination(user); } }; + +export const roomSettings: Chat.SettingsHandler[] = [ + (room, user) => ({ + label: `Autostart -OTD`, + permission: "editroom", + options: getKeyByRoomId(room.roomid) ? [ + ['off', !room.settings.autoStartOtd || `${getKeyByRoomId(room.roomid)} toggleautostart off`], + ['on', room.settings.autoStartOtd || `${getKeyByRoomId(room.roomid)} toggleautostart on`], + ] : [['disabled', true]], + }), +]; diff --git a/server/rooms.ts b/server/rooms.ts index 4e0563d148..8433eed21a 100644 --- a/server/rooms.ts +++ b/server/rooms.ts @@ -125,6 +125,8 @@ export interface RoomSettings { minorActivityQueue?: MinorActivityData[]; repeats?: RepeatedPhrase[]; topics?: string[]; + // auto start thing of the day + autoStartOtd?: boolean; autoModchat?: { rank: GroupSymbol, time: number, From 16c2c7e90bbfd5e04907c2daf0777367e9f80401 Mon Sep 17 00:00:00 2001 From: Kris Johnson <11083252+KrisXV@users.noreply.github.com> Date: Sun, 21 Dec 2025 11:34:08 -0700 Subject: [PATCH 20/74] Legends Z-A OU: Ban Genesect --- 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 98b02cf4c9..eb6172656e 100644 --- a/data/mods/gen9legendsou/formats-data.ts +++ b/data/mods/gen9legendsou/formats-data.ts @@ -979,7 +979,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat meloettapirouette: { }, genesect: { - tier: "OU", + tier: "Uber", }, genesectdouse: { }, 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 21/74] 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 22/74] 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 23/74] 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 24/74] 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 25/74] 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 26/74] 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 27/74] 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 28/74] 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 29/74] 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 30/74] 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 31/74] 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 32/74] 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 33/74] 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 34/74] 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 35/74] 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 36/74] 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 37/74] 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 38/74] 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 39/74] 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 40/74] 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 41/74] 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 42/74] 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 43/74] 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 44/74] 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 45/74] 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 46/74] 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 47/74] 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 48/74] 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 49/74] 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 50/74] 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 51/74] 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 52/74] 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 53/74] 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 54/74] 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 55/74] =?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 56/74] 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 57/74] 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 58/74] 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 59/74] 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 60/74] 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 61/74] 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 62/74] 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 63/74] 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 64/74] 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 65/74] 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 66/74] 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 67/74] 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 68/74] 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 69/74] 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 70/74] 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 71/74] 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 72/74] 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 73/74] 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 74/74] 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))) {