diff --git a/LICENSE b/LICENSE
index f1bc80d370..118e1fe24a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2011-2024 Guangcong Luo and other contributors http://pokemonshowdown.com/
+Copyright (c) 2011-2026 Guangcong Luo and other contributors http://pokemonshowdown.com/
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff --git a/config/config-example.js b/config/config-example.js
index 58059876c2..8289fe3b6c 100644
--- a/config/config-example.js
+++ b/config/config-example.js
@@ -25,6 +25,15 @@ exports.bindaddress = '0.0.0.0';
*/
exports.wsdeflate = null;
+/**
+ * lazysockets - disables eager initialization of network services
+ * Turn this on if you'd prefer to manually connect Showdown to the network,
+ * or you intend to run it offline.
+ *
+ * @type {boolean}
+ */
+exports.lazysockets = false;
+
/*
// example:
exports.wsdeflate = {
diff --git a/config/formats.ts b/config/formats.ts
index 168cf16471..acf5ce08c2 100644
--- a/config/formats.ts
+++ b/config/formats.ts
@@ -139,7 +139,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'],
@@ -147,6 +146,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'],
@@ -233,29 +233,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",
@@ -303,7 +286,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Meloetta', 'Mew', 'Mewtwo', 'Mimikyu', 'Miraidon', 'Necrozma',
'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Cornerstone', 'Ogerpon-Hearthflame', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Regidrago', 'Reshiram',
'Scream Tail', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Terapagos', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Moody',
- 'Focus Band', 'Focus Sash', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Perish Song',
+ 'Custap Berry', 'Focus Band', 'Focus Sash', 'King\'s Rock', 'Razor Fang', 'Quick Claw', 'Perish Song',
],
},
{
@@ -327,21 +310,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
mod: 'gen9',
ruleset: ['Standard AG'],
},
- {
- name: "[Gen 9] Ubers UU",
- mod: 'gen9',
- searchShow: false,
- ruleset: ['[Gen 9] Ubers'],
- banlist: [
- // Ubers OU
- 'Arceus-Normal', 'Arceus-Fairy', 'Arceus-Ghost', 'Arceus-Ground', 'Arceus-Water', 'Calyrex-Ice', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto',
- 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina', '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',
- // 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',
- ],
- },
{
name: "[Gen 9] ZU",
mod: 'gen9',
@@ -371,11 +339,10 @@ 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',
- 'Trapinch', 'Vullaby', 'Wingull', 'Zorua-Hisui',
+ 'Chinchou', 'Diglett-Alola', 'Drifloon', 'Elekid', 'Foongus', 'Glimmet', 'Gothita', 'Grookey', 'Growlithe-Hisui', 'Koffing', 'Mareanie', 'Mienfoo', 'Mudbray',
+ 'Pawniard', 'Sandshrew-Alola', 'Shellder', 'Shellos', 'Snover', 'Stunky', 'Timburr', 'Tinkatink', 'Toedscool', 'Trapinch', 'Vullaby', 'Wingull', 'Zorua-Hisui',
// LC UUBL
- 'Deerling', 'Minccino',
+ 'Deerling', 'Minccino', 'Light Clay',
],
},
{
@@ -390,6 +357,21 @@ export const Formats: import('../sim/dex-formats').FormatList = [
'Sneasel-Hisui', 'Ursaring', 'Vigoroth', 'Vulpix-Base', 'Arena Trap', 'Magnet Pull', 'Moody', 'Shadow Tag', 'Baton Pass',
],
},
+ {
+ name: "[Gen 9] Ubers UU",
+ mod: 'gen9',
+ searchShow: false,
+ ruleset: ['[Gen 9] Ubers'],
+ banlist: [
+ // Ubers OU
+ 'Arceus-Normal', 'Arceus-Fairy', 'Arceus-Ghost', 'Arceus-Ground', 'Arceus-Water', 'Calyrex-Ice', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Speed', 'Ditto',
+ 'Dondozo', 'Eternatus', 'Flutter Mane', 'Giratina-Origin', 'Glimmora', 'Gliscor', 'Grimmsnarl', 'Groudon', 'Hatterene', 'Ho-Oh', 'Kingambit', 'Koraidon',
+ 'Kyogre', 'Kyurem-Black', 'Landorus-Therian', 'Lunala', 'Necrozma-Dusk-Mane', 'Rayquaza', 'Ribombee', 'Skeledirge', 'Terapagos', 'Ting-Lu', 'Zacian-Crowned',
+ // Ubers UUBL + Lunala, Arceus-Ghost, Arceus-Water
+ 'Arceus-Dragon', 'Arceus-Electric', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Steel', 'Giratina', 'Necrozma-Dawn-Wings', 'Shaymin-Sky', 'Spectrier', 'Zacian',
+ 'Zekrom',
+ ],
+ },
// Draft League
///////////////////////////////////////////////////////////////////
@@ -498,43 +480,208 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['Standard Draft'],
},
- // OM of the Month
+ // Ladder Spotlight
///////////////////////////////////////////////////////////////////
{
- section: "OM of the Month",
+ section: "Ladder Spotlight",
column: 2,
},
{
- name: "[Gen 9] Convergence",
- desc: `Allows all Pokémon that have identical types to share moves and abilities.`,
+ 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'],
+ },
+ {
+ name: "[Gen 9] Linked",
+ desc: `The first two moves in a Pokémon's moveset are used simultaneously.`,
+ mod: 'linked',
+ // searchShow: false,
+ ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Clause', 'Terastal Clause'],
+ banlist: [
+ 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Chien-Pao', 'Deoxys-Attack', 'Deoxys-Normal', 'Dialga', 'Dialga-Origin',
+ 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White',
+ 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia',
+ 'Palkia-Origin', 'Raichu-Alola', 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna-Bloodmoon', 'Urshifu-Single-Strike',
+ 'Urshifu-Rapid-Strike', 'Volcarona', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Chlorophyll', 'Moody', 'Sand Rush', 'Shadow Tag',
+ 'Slush Rush', 'Speed Boost', 'Swift Swim', 'Unburden', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail',
+ ],
+ restricted: [
+ 'Baneful Bunker', 'Bounce', 'Burning Bulwark', 'Detect', 'Dig', 'Dive', 'Fly', 'Imprison', 'Phantom Force', 'Protect',
+ 'Ruination', 'Shadow Force', 'Silk Trap', 'Spiky Shield', 'Super Fang', 'Taunt', 'Trick Room',
+ ],
+ onValidateSet(set) {
+ const problems = [];
+ for (const [i, moveid] of set.moves.entries()) {
+ const move = this.dex.moves.get(moveid);
+ if ([0, 1].includes(i) && this.ruleTable.isRestricted(`move:${move.id}`)) {
+ problems.push(`${set.name || set.species}'s move ${move.name} cannot be linked.`);
+ }
+ }
+ return problems;
+ },
+ },
+ {
+ name: "[Gen 9] 350 Cup",
+ desc: `Pokemon with a BST of 350 or lower have their stats doubled.`,
mod: 'gen9',
// searchShow: false,
- ruleset: ['Standard OMs', 'Ability Clause = 1', 'Sleep Moves Clause', 'Convergence Legality', 'Terastal Clause', '!Obtainable Abilities'],
+ ruleset: ['Standard OMs', 'Sleep Moves Clause', '350 Cup Mod', 'Evasion Clause'],
+ banlist: ['Calyrex-Shadow', 'Flittle', 'Gastly', 'Miraidon', 'Pikachu', 'Rufflet', 'Arena Trap', 'Moody', 'Shadow Tag', 'Eviolite', 'Baton Pass'],
+ },
+ {
+ name: "[Gen 9] Pokebilities AAA",
+ desc: `Pokémon have all of their released abilities simultaneously, as well as one ability they cannot normally use.`,
+ mod: 'pokebilities',
+ // searchShow: false,
+ ruleset: ['Standard OMs', '!Obtainable Abilities', 'Ability Clause = 1', 'AAA Restricted Abilities', 'Terastal Clause', 'Sleep Moves Clause'],
banlist: [
- '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',
+ 'Annihilape', 'Arcanine-Hisui', 'Arceus', 'Archaludon', 'Azumarill', 'Basculegion', 'Basculin', 'Baxcalibur', 'Blaziken', 'Braviary-Hisui', 'Calyrex-Ice', 'Calyrex-Shadow',
+ 'Ceruledge', 'Chi-Yu', 'Chien-Pao', 'Clefable', 'Cloyster', 'Conkeldurr', 'Darkrai', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', 'Dondozo', 'Dragonite',
+ 'Enamorus-Incarnate', 'Espathra', 'Eternatus', 'Excadrill', 'Flutter Mane', 'Gholdengo', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Hawlucha', 'Ho-Oh',
+ 'Hoopa-Unbound', 'Iron Bundle', 'Iron Valiant', 'Kingambit', 'Keldeo', 'Kleavor', 'Koraidon', 'Kyogre', 'Kyurem', 'Kyurem-Black', 'Kyurem-White', 'Landorus-Incarnate',
+ 'Lugia', 'Lunala', 'Magearna', 'Manaphy', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Noivern', 'Ogerpon-Hearthflame', 'Palkia', 'Palkia-Origin',
+ 'Porygon-Z', 'Raging Bolt', 'Rayquaza', 'Reshiram', 'Roaring Moon', 'Serperior', 'Shaymin-Sky', 'Smeargle', 'Sneasler', 'Solgaleo', 'Spectrier', 'Ursaluna', 'Ursaluna-Bloodmoon',
+ 'Urshifu-Single-Strike', 'Urshifu-Rapid-Strike', 'Volcarona', 'Walking Wake', 'Weavile', 'Yanmega', 'Zacian', 'Zacian-Crowned', 'Zapdos-Galar', 'Zekrom', 'Zoroark-Hisui',
+ 'Arena Trap', 'Magnet Pull', 'Moody', 'Shadow Tag', 'Regenerator + Wimp Out', 'Regenerator + Emergency Exit', 'Regenerator > 2', 'Drizzle + Swift Swim', 'Primordial Sea + Swift Swim',
+ 'Drought + Chlorophyll', 'Desolate Land + Chlorophyll', 'Electric Surge + Surge Surfer', 'Hadron Engine + Surge Surfer', 'Hadron Engine + Quark Drive', 'Electric Surge + Quark Drive',
+ 'Drought + Protosynthesis', 'Sand Stream + Sand Rush', 'Sand Stream + Sand Veil', 'Snow Warning + Snow Cloak', 'Snow Warning + Slush Rush', 'King\'s Rock', 'Razor Fang', 'Baton Pass',
+ 'Last Respects', 'Revival Blessing', 'Shed Tail', 'Stored Power',
+ ],
+ restricted: [
+ 'Comatose', 'Contrary', 'Fur Coat', 'Good as Gold', 'Gorilla Tactics', 'Huge Power', 'Ice Scales', 'Illusion', 'Imposter', 'Innards Out', 'Magic Bounce', 'Neutralizing Gas',
+ 'Orichalcum Pulse', 'Parental Bond', 'Poison Heal', 'Pure Power', 'Simple', 'Speed Boost', 'Stakeout', 'Toxic Debris', 'Triage', 'Unburden', 'Water Bubble', 'Wonder Guard',
+ ],
+ onValidateSet(set) {
+ const species = this.dex.species.get(set.species);
+ const unSeenAbilities = Object.keys(species.abilities)
+ .filter(key => key !== 'S' && (key !== 'H' || !species.unreleasedHidden))
+ .map(key => species.abilities[key as "0" | "1" | "H" | "S"])
+ .filter(ability => ability !== set.ability);
+ if (unSeenAbilities.length && this.toID(set.ability) !== this.toID(species.abilities['S'])) {
+ for (const abilityName of unSeenAbilities) {
+ const banReason = this.ruleTable.check('ability:' + this.toID(abilityName));
+ if (banReason) {
+ return [`${set.name}'s ability ${abilityName} is ${banReason}.`];
+ }
+ }
+ }
+ },
+ onBegin() {
+ for (const pokemon of this.getAllPokemon()) {
+ if (pokemon.ability === this.toID(pokemon.species.abilities['S'])) {
+ continue;
+ }
+ pokemon.m.innates = Object.keys(pokemon.species.abilities)
+ .filter(key => key !== 'S' && (key !== 'H' || !pokemon.species.unreleasedHidden))
+ .map(key => this.toID(pokemon.species.abilities[key as "0" | "1" | "H" | "S"]))
+ .filter(ability => ability !== pokemon.ability);
+ }
+ },
+ onBeforeSwitchIn(pokemon) {
+ if (pokemon.m.innates) {
+ for (const innate of pokemon.m.innates) {
+ if (pokemon.hasAbility(innate)) continue;
+ const effect = 'ability:' + this.toID(innate);
+ pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon });
+ }
+ }
+ },
+ onSwitchOut(pokemon) {
+ for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
+ pokemon.removeVolatile(innate);
+ }
+ },
+ onFaint(pokemon) {
+ for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
+ const innateEffect = this.dex.conditions.get(innate) as Effect;
+ this.singleEvent('End', innateEffect, null, pokemon);
+ }
+ },
+ onAfterMega(pokemon) {
+ for (const innate of Object.keys(pokemon.volatiles).filter(i => i.startsWith('ability:'))) {
+ pokemon.removeVolatile(innate);
+ }
+ pokemon.m.innates = undefined;
+ },
+ },
+ {
+ name: "[Gen 9] 4v4 Doubles UU",
+ desc: "VGC rules, but only Pokémon that get less than 4.52% usage on the VGC ladder are legal, as well as a few other guidelines.",
+ mod: 'gen9',
+ gameType: 'doubles',
+ ruleset: ['[Gen 9] VGC 2026 Reg F', 'Evasion Abilities Clause', 'Evasion Moves Clause', 'OHKO Clause'],
+ banlist: [
+ 'Amoonguss', 'Annihilape', 'Arcanine-Hisui', 'Basculegion-M', 'Chi-Yu', 'Chien-Pao', 'Cresselia', 'Dondozo', 'Dragonite', 'Enamorus-Incarnate', 'Farigiraf', 'Flutter Mane',
+ 'Gholdengo', 'Gouging Fire', 'Incineroar', 'Indeedee-F', 'Iron Crown', 'Landorus-Incarnate', 'Landorus-Therian', 'Ogerpon-Cornerstone', 'Ogerpon-Hearthflame', 'Ogerpon-Wellspring',
+ 'Porygon2', 'Raging Bolt', 'Regidrago', 'Rillaboom', 'Roaring Moon', 'Sneasler', 'Ting-Lu', 'Torkoal', 'Tornadus-Incarnate', 'Ursaluna-Base', 'Urshifu-Single-Strike',
+ 'Urshifu-Rapid-Strike', 'Whimsicott', 'Commander', 'Bright Powder', 'King\'s Rock', 'Razor Fang',
],
},
{
- name: "[Gen 9] VoltTurn Mayhem",
- desc: `Every move that targets a foe causes the user to switch out after use.`,
+ name: "[Gen 9] National Dex RU",
mod: 'gen9',
- 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',
- ],
+ // searchShow: false,
+ ruleset: ['[Gen 9] National Dex UU'],
+ banlist: ['ND UU', 'ND RUBL', 'Slowbronite'],
+ },
+ {
+ name: "[Gen 6] Megas Revisited Random Battle",
+ desc: `A Gen 6 metagame where every Mega Evolution was reevaluated and redesigned.`,
+ mod: 'gen6megasrevisited',
+ team: 'random',
+ bestOfDefault: true,
+ ruleset: ['Obtainable', 'Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod', 'Illusion Level Mod', 'Mega Data Mod'],
+ onBegin() {
+ this.add(`raw|
Need help with all of the new Megas and abilities?
Then make sure to check out the spreadsheet or use /dt! `);
+ this.add('-message', `Welcome to Megas Revisited!`);
+ this.add('-message', `This is a Generation 6 OU-based Pet Mod where every existing Mega Evolution has been redesigned.`);
+ this.add('-message', `You can find our thread and metagame resources here:`);
+ this.add('-message', `https://www.smogon.com/forums/threads/3713949/`);
+ },
+ },
+ {
+ name: "[Gen 9] ChatBats",
+ desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`,
+ mod: 'chatbats',
+ team: 'randomChatBats',
+ ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Data Preview', 'Cancel Mod'],
+ onSwitchIn(pokemon) {
+ this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
+ },
+ // Dachsbun causes Koraidon to generate on enemy team. Implemented here.
+ onBegin() {
+ this.add(`raw|Need help with all of the new moves, abilities, and wacky sets?
Then make sure to check out the ChatBats Compendium or use /dt! `);
+ this.add(`raw|Welcome to ChatBats!`);
+ this.add(`raw|ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`);
+ this.add(`raw|If you want to help create new sets, we will host events periodically in the Pet Mods room!`);
+ this.add(`raw|Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`);
+ },
+ },
+ {
+ name: "[Gen 4] Ubers",
+ mod: 'gen4',
+ // searchShow: false,
+ ruleset: ['Standard'],
+ banlist: ['AG'],
+ },
+ {
+ name: "[Gen 6] NU",
+ mod: 'gen6',
+ // searchShow: false,
+ ruleset: ['[Gen 6] RU'],
+ banlist: ['RU', 'NUBL'],
+ },
+ {
+ name: "[Gen 4] VGC 2009",
+ mod: 'gen4pt',
+ gameType: 'doubles',
+ bestOfDefault: true,
+ // searchShow: false,
+ ruleset: ['Flat Rules', '! Adjust Level Down', 'Max Level = 50'],
+ banlist: ['Tyranitar', 'Rotom', 'Judgment', 'Soul Dew'],
},
// Other Metagames
@@ -569,12 +716,12 @@ export const Formats: import('../sim/dex-formats').FormatList = [
'Endless Battle Clause', 'Hackmons Forme Legality', 'Species Reveal Clause', 'Terastal Clause',
],
banlist: [
- 'Calyrex-Shadow', 'Deoxys-Attack', 'Diancie-Mega', 'Gengar-Mega', 'Groudon-Primal', 'Kartana', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Rayquaza-Mega',
- 'Regigigas', 'Shedinja', 'Slaking', 'Arena Trap', 'Contrary', 'Gorilla Tactics', 'Hadron Engine', 'Huge Power', 'Illusion', 'Innards Out', 'Libero',
- 'Liquid Ooze', 'Magnet Pull', 'Moody', 'Neutralizing Gas', 'Orichalcum Pulse', 'Parental Bond', 'Poison Heal', 'Protean', 'Pure Power', 'Shadow Tag',
- 'Stakeout', 'Water Bubble', 'Wonder Guard', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Belly Drum', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw',
- 'Electro Shot', 'Fillet Away', 'Imprison', 'Last Respects', 'Lumina Crash', 'No Retreat', 'Photon Geyser', 'Power Trip', 'Quiver Dance', 'Rage Fist',
- 'Revival Blessing', 'Shed Tail', 'Sleep Talk', 'Substitute', 'Shell Smash', 'Tail Glow',
+ 'Calyrex-Shadow', 'Deoxys-Attack', 'Gengar-Mega', 'Mewtwo-Mega-X', 'Mewtwo-Mega-Y', 'Rayquaza-Mega', 'Regigigas', 'Shedinja', 'Slaking', 'Arena Trap',
+ 'Contrary', 'Gorilla Tactics', 'Hadron Engine', 'Huge Power', 'Illusion', 'Innards Out', 'Libero', 'Liquid Ooze', 'Magnet Pull', 'Moody', 'Neutralizing Gas',
+ 'Orichalcum Pulse', 'Parental Bond', 'Poison Heal', 'Protean', 'Pure Power', 'Shadow Tag', 'Stakeout', 'Water Bubble', 'Wonder Guard', 'King\'s Rock',
+ 'Razor Fang', 'Baton Pass', 'Belly Drum', 'Ceaseless Edge', 'Clangorous Soul', 'Dire Claw', 'Electro Shot', 'Fillet Away', 'Imprison', 'Last Respects',
+ 'Lumina Crash', 'No Retreat', 'Photon Geyser', 'Power Trip', 'Quiver Dance', 'Rage Fist', 'Revival Blessing', 'Shed Tail', 'Sleep Talk', 'Substitute',
+ 'Shell Smash', 'Tail Glow', 'V-create',
],
},
{
@@ -732,10 +879,10 @@ export const Formats: import('../sim/dex-formats').FormatList = [
],
},
{
- name: "[Gen 7] Pure Hackmons",
+ name: "[Gen 6] Pure Hackmons",
desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
- mod: 'gen7',
- ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause'],
+ mod: 'gen6',
+ ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'],
},
// Challengeable OMs
@@ -794,14 +941,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
},
},
},
- {
- name: "[Gen 9] 350 Cup",
- desc: `Pokemon with a BST of 350 or lower have their stats doubled.`,
- mod: 'gen9',
- searchShow: false,
- ruleset: ['Standard OMs', 'Sleep Moves Clause', '350 Cup Mod', 'Evasion Clause'],
- banlist: ['Calyrex-Shadow', 'Flittle', 'Gastly', 'Miraidon', 'Pikachu', 'Rufflet', 'Arena Trap', 'Moody', 'Shadow Tag', 'Eviolite', 'Baton Pass'],
- },
{
name: "[Gen 9] Alphabet Cup",
desc: `Allows Pokémon to use any move that shares the same first letter as their name or a previous evolution's name.`,
@@ -855,6 +994,234 @@ export const Formats: import('../sim/dex-formats').FormatList = [
side.sideConditions[sideCondition.id].duration = 0;
},
},
+ {
+ name: "[Gen 9] Bio Mech Mons",
+ desc: `Items, abilities, and moves a Pokémon has access to can be put in any item/move/ability slot.`,
+ mod: 'biomechmons',
+ searchShow: false,
+ ruleset: ['Standard OMs', 'Sleep Moves Clause'],
+ banlist: [
+ 'Annihilape', 'Arceus', 'Archaludon', 'Baxcalibur', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chien-Pao', 'Chi-Yu', 'Deoxys-Normal', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin',
+ 'Espathra', 'Eternatus', 'Flutter Mane', 'Giratina', 'Giratina-Origin', 'Gouging Fire', 'Groudon', 'Ho-Oh', 'Iron Bundle', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White',
+ 'Landorus-Incarnate', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Ogerpon-Hearthflame', 'Palafin', 'Palkia', 'Palkia-Origin',
+ 'Rayquaza', 'Regieleki', 'Regigigas', 'Reshiram', 'Roaring Moon', 'Slaking', 'Shaymin-Sky', 'Sneasler', 'Solgaleo', 'Spectrier', 'Terapagos', 'Ursaluna-Bloodmoon', 'Urshifu',
+ 'Urshifu-Rapid-Strike', 'Volcarona', 'Zacian', 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Sand Veil', 'Shadow Tag', 'Snow Cloak', 'Bright Powder',
+ 'Choice Band', 'Choice Specs', 'King\'s Rock', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail',
+ ],
+ validateSet(set, teamHas) {
+ const dex = this.dex;
+ let species = dex.species.get(set.species);
+ let requiredItems: string[] = [];
+ let requiredMove = '';
+ let requiredAbility = '';
+ if (species.requiredItems) requiredItems = species.requiredItems;
+ if (species.requiredMove) requiredMove = species.requiredMove;
+ if (species.requiredAbility) requiredAbility = species.requiredAbility;
+ if (species.battleOnly) species = dex.species.get(species.battleOnly as string);
+
+ const effectFunctions = [dex.abilities, dex.items, dex.moves];
+ if (
+ !effectFunctions.some(f => f.get(set.ability).exists) &&
+ !(set.item && effectFunctions.some(f => f.get(set.item).exists)) &&
+ !set.moves.every(move => effectFunctions.some(f => f.get(move).exists))
+ ) {
+ return this.validateSet(set, teamHas);
+ }
+ const allThings = [set.ability, set.item, ...set.moves].filter(e => e.length);
+ for (const thing of allThings) {
+ if (this.toID(thing) === 'trace' || this.toID(thing) === 'neutralizinggas') {
+ return [`${thing} is currently bugged and is banned.`];
+ }
+ if (!dex.moves.get(thing).exists && !dex.abilities.get(thing).exists && !dex.items.get(thing).exists) {
+ return [`${thing} does not exist.`];
+ }
+ }
+ if (
+ allThings.some(y => effectFunctions.some(x => x.get(y).isNonstandard &&
+ !this.ruleTable.has(`+pokemontag:${this.toID(x.get(y).isNonstandard)}`)))
+ ) {
+ return this.validateSet(set, teamHas);
+ }
+ const moves = allThings.map(e => this.dex.moves.get(e)).filter(thing => thing.id !== 'metronome' && thing.exists);
+ for (const m of moves) {
+ if (this.ruleTable.isBanned(`move:${m.id}`)) return [`${set.species}'s move ${m.name} is banned.`];
+ }
+
+ const abilities = allThings.map(e => this.dex.abilities.get(e)).filter(thing => thing.exists);
+ for (const a of abilities) {
+ if (this.ruleTable.isBanned(`ability:${a.id}`)) return [`${set.species}'s ability ${a.name} is banned.`];
+ }
+
+ const items = allThings.map(e => this.dex.items.get(e)).filter(thing => thing.exists);
+ for (const i of items) {
+ if (this.ruleTable.isBanned(`item:${i.id}`)) return [`${set.species}'s item ${i.name} is banned.`];
+ }
+
+ const setHas: { [k: string]: true } = {};
+ for (const thing of [...moves, ...items, ...abilities]) {
+ if (setHas[thing.id]) return [`${set.species} has multiple copies of ${thing.name}.`];
+ setHas[thing.id] = true;
+ }
+ const normalAbility = set.ability;
+ if (!abilities.length) {
+ set.ability = 'noability';
+ } else {
+ set.ability = abilities[0].id;
+ }
+ if (abilities.some(abil => !Object.values(species.abilities).map(this.toID).includes(abil.id)) &&
+ this.ruleTable.has('obtainableabilities')
+ ) {
+ if (set.ability !== 'noability') return [`${set.species} has illegal abilities.`];
+ }
+ if (requiredAbility && !abilities.map(a => a.id).includes(this.toID(requiredAbility))) {
+ return [`${set.species} requires ${requiredAbility} on its set.`];
+ }
+ if (!moves.length) {
+ return [`${set.species} requires at least one move.`];
+ }
+ if (set.moves.length > this.ruleTable.maxMoveCount) {
+ return [`${set.name} has ${set.moves.length} moves, which is more than the limit of ${this.ruleTable.maxMoveCount}.`];
+ }
+ const normalMoves = set.moves;
+ set.moves = [moves[0].id];
+ if (moves.some(move => this.checkCanLearn(move, species)) && this.ruleTable.has('obtainablemoves')) {
+ return [`${set.species} has illegal moves.`];
+ }
+ if (requiredMove && !moves.map(m => m.id).includes(this.toID(requiredMove))) {
+ return [`${set.species} requires ${requiredMove} on its set.`];
+ }
+ if (!items.length && requiredItems.length) {
+ return [`${set.species} requires ${requiredItems.join(', ')} on its set.`];
+ }
+ const normalItem = set.item;
+ if (items.length) {
+ set.item = (items.find(i => i.forcedForme || i.itemUser) || items[0]).id;
+ } else {
+ set.item = '';
+ }
+ if (!this.ruleTable.has('+ability:noability')) {
+ this.ruleTable.set('+ability:noability', '');
+ }
+ for (const curMove of moves) {
+ set.moves = [curMove.id];
+ if (requiredMove && moves.map(m => m.id).includes(curMove.id) &&
+ curMove.id !== this.toID(requiredMove)) {
+ set.moves.push(requiredMove);
+ }
+ let problems = this.validateSet(set, teamHas);
+ if (problems) problems = problems.filter(p => !p.endsWith('needs to have an ability.'));
+ if (problems?.length) return problems;
+ }
+ set.ability = normalAbility;
+ set.item = normalItem;
+ set.moves = normalMoves;
+ return null;
+ },
+ onBeforeSwitchIn(pokemon) {
+ let ngas = false;
+ for (const poke of this.getAllActive()) {
+ if (this.toID(poke.ability) === ('neutralizinggas' as ID)) {
+ ngas = true;
+ break;
+ }
+ }
+ if (pokemon.hasItem('abilityshield') ||
+ pokemon.m.scrambled.items.some((e: { thing: string }) => this.toID(e.thing) === 'abilityshield')) {
+ ngas = false;
+ }
+ for (const ability of pokemon.m.scrambled.abilities) {
+ if (this.field.getPseudoWeather('magicroom') && ability.inSlot === 'Item') continue;
+ const effect = 'ability:' + this.toID(ability.thing);
+ pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon });
+ pokemon.volatiles[effect].inSlot = ability.inSlot;
+ }
+ for (const item of pokemon.m.scrambled.items) {
+ if (ngas && item.inSlot === 'Ability') continue;
+ const effect = 'item:' + this.toID(item.thing);
+ pokemon.volatiles[effect] = this.initEffectState({ id: effect, target: pokemon });
+ pokemon.volatiles[effect].inSlot = item.inSlot;
+ }
+ if (ngas) {
+ if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability') >= 0) {
+ const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Ability');
+ const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id);
+ if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1);
+ }
+ }
+ if (this.field.getPseudoWeather('magicroom')) {
+ if ((pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item') >= 0) {
+ const isMove = (pokemon.m.scrambled.moves as { inSlot: string }[]).findIndex(e => e.inSlot === 'Item');
+ const indexOfMove = pokemon.moveSlots.findIndex(m => this.toID(pokemon.m.scrambled.moves[isMove].thing) === m.id);
+ if (indexOfMove >= 0) pokemon.moveSlots.splice(indexOfMove, 1);
+ }
+ }
+ },
+ onBegin() {
+ for (const pokemon of this.getAllPokemon()) {
+ // for everything not in the correct slot
+ pokemon.m.scrambled = {
+ abilities: [] as object[],
+ items: [] as object[],
+ moves: [] as object[],
+ };
+
+ if (this.dex.items.get(pokemon.set.ability).exists) {
+ pokemon.m.scrambled.items.push({ thing: this.dex.items.get(pokemon.set.ability).name, inSlot: 'Ability' });
+ } else if (this.dex.moves.get(pokemon.set.ability).exists) {
+ pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.ability).name, inSlot: 'Ability' });
+ }
+
+ if (this.dex.abilities.get(pokemon.set.item).exists) {
+ pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(pokemon.set.item).name, inSlot: 'Item' });
+ } else if (this.dex.moves.get(pokemon.set.item).exists && this.dex.moves.get(pokemon.set.item).id !== 'metronome') {
+ pokemon.m.scrambled.moves.push({ thing: this.dex.moves.get(pokemon.set.item).name, inSlot: 'Item' });
+ }
+
+ for (const move of pokemon.set.moves) {
+ if (this.dex.moves.get(move).id === 'metronome') continue;
+ if (this.dex.abilities.get(move).exists) {
+ pokemon.m.scrambled.abilities.push({ thing: this.dex.abilities.get(move).name, inSlot: 'Move' });
+ } else if (this.dex.items.get(move).exists) {
+ pokemon.m.scrambled.items.push({ thing: this.dex.items.get(move).name, inSlot: 'Move' });
+ }
+ }
+
+ const newMoveSlots = [];
+ for (const moveSlot of pokemon.baseMoveSlots) {
+ if (moveSlot.id === 'metronome') {
+ const TeamValidator: typeof import('../sim/team-validator').TeamValidator =
+ require('../sim/team-validator').TeamValidator;
+ const cantMetronome = TeamValidator.get(this.format).checkCanLearn(this.dex.moves.get('metronome'), pokemon.species);
+ if (!cantMetronome) {
+ newMoveSlots.push(moveSlot);
+ } else {
+ pokemon.m.scrambled.items.push({ thing: this.dex.items.get('metronome').name, inSlot: 'Move' });
+ }
+ continue;
+ }
+ if (!this.dex.moves.get(moveSlot.id).exists) continue;
+ newMoveSlots.push(moveSlot);
+ }
+
+ (pokemon as any).baseMoveSlots = newMoveSlots;
+
+ for (const scrambledMove of pokemon.m.scrambled.moves) {
+ const move = this.dex.moves.get(scrambledMove.thing);
+ const newMove = {
+ move: move.name,
+ id: move.id,
+ pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ target: move.target,
+ disabled: false,
+ used: false,
+ };
+ pokemon.baseMoveSlots.push(newMove);
+ }
+ pokemon.moveSlots = pokemon.baseMoveSlots.slice();
+ }
+ },
+ },
{
name: "[Gen 9] Camomons",
desc: `Pokémon have their types set to match their first two moves.`,
@@ -884,6 +1251,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.`,
@@ -1027,6 +1412,21 @@ export const Formats: import('../sim/dex-formats').FormatList = [
],
// Implemented the mechanics as a Rule because I'm too lazy to make battles read base format for `onResidual` at the moment
},
+ {
+ name: "[Gen 9] Flipped",
+ desc: `All Pokémon have their base stats flipped. For example, Sylveon's HP and Speed stats, Attack and Special Defense stats, and Defense and Special Attack stats swap.`,
+ mod: 'gen9',
+ searchShow: false,
+ ruleset: ['Standard OMs', 'Sleep Moves Clause', 'Evasion Abilities Clause', 'Evasion Items Clause', 'Flipped Mod'],
+ banlist: [
+ 'Annihilape', 'Araquanid', 'Arceus', 'Azumarill', 'Blissey', 'Calyrex-Ice', 'Calyrex-Shadow', 'Cloyster', 'Cyclizar', 'Deoxys-Attack', 'Deoxys-Normal',
+ 'Deoxys-Speed', 'Dialga', 'Dialga-Origin', 'Espathra', 'Eternatus', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Hoopa-Unbound', 'Koraidon', 'Kyogre',
+ 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon', 'Mienshao', 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia',
+ 'Palkia-Origin', 'Rayquaza', 'Regieleki', 'Reshiram', 'Shaymin-Sky', 'Snorlax', 'Solgaleo', 'Sylveon', 'Terapagos', 'Torkoal', 'Tornadus-Therian', 'Zacian',
+ 'Zacian-Crowned', 'Zamazenta-Crowned', 'Zekrom', 'Arena Trap', 'Moody', 'Shadow Tag', 'Damp Rock', 'King\'s Rock', 'Light Clay', 'Razor Fang', 'Baton Pass',
+ 'Last Respects', 'Shed Tail',
+ ],
+ },
{
name: "[Gen 9] Foresighters",
desc: `Moves in the first moveslot will be delayed by two turns.`,
@@ -1139,7 +1539,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
set.item = '';
const problems = this.validateSet(set, teamHas) || [];
set.item = item;
- if (this.checkCanLearn(move, species, this.allSources(species), set)) {
+ if (this.ruleTable.has('obtainablemoves') && this.checkCanLearn(move, species, this.allSources(species), set)) {
problems.push(`${species.name} can't learn ${move.name}.`);
}
if (set.moves.map(this.toID).includes(move.id)) {
@@ -1572,9 +1972,10 @@ export const Formats: import('../sim/dex-formats').FormatList = [
banlist: [
'Annihilape', 'Arceus', 'Calyrex-Ice', 'Calyrex-Shadow', 'Chi-Yu', 'Cresselia', 'Darkrai', 'Deoxys-Attack', 'Dialga', 'Dialga-Origin', 'Eternatus', 'Flutter Mane',
'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Koraidon', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia', 'Lunala', 'Magearna', 'Mewtwo', 'Miraidon',
- 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Reshiram', 'Smeargle', 'Solgaleo', 'Terapagos', 'Urshifu', 'Urshifu-Rapid-Strike',
- 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Contrary', 'Dancer', 'Huge Power', 'Moody', 'Pure Power', 'Serene Grace', 'Shadow Tag',
- 'Stench', 'Bright Powder', 'King\'s Rock', 'Razor Fang', 'Ally Switch', 'Dragon Cheer', 'Last Respects', 'Revival Blessing', 'Swagger',
+ 'Necrozma-Dawn-Wings', 'Necrozma-Dusk-Mane', 'Oricorio', 'Oricorio-Pa\'u', 'Oricorio-Pom-Pom', 'Oricorio-Sensu', 'Palkia', 'Palkia-Origin', 'Rayquaza', 'Reshiram',
+ 'Smeargle', 'Solgaleo', 'Terapagos', 'Urshifu', 'Urshifu-Rapid-Strike', 'Zacian', 'Zacian-Crowned', 'Zamazenta', 'Zamazenta-Crowned', 'Zekrom', 'Contrary', 'Huge Power',
+ 'Moody', 'Pure Power', 'Serene Grace', 'Shadow Tag', 'Stench', 'Bright Powder', 'King\'s Rock', 'Razor Fang', 'Ally Switch', 'Dragon Cheer', 'Last Respects',
+ 'Revival Blessing', 'Swagger',
],
onBegin() {
for (const pokemon of this.getAllPokemon()) {
@@ -2488,11 +2889,25 @@ export const Formats: import('../sim/dex-formats').FormatList = [
},
},
{
- name: "[Gen 6] Pure Hackmons",
- desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
- mod: 'gen6',
+ 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: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause', 'EV limit = 510'],
+ 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 7] Pure Hackmons",
+ desc: `Anything that can be hacked in-game and is usable in local battles is allowed.`,
+ mod: 'gen7',
+ searchShow: false,
+ ruleset: ['-Nonexistent', 'Team Preview', 'HP Percentage Mod', 'Cancel Mod', 'Endless Battle Clause'],
},
// Temporary Tour Metas
@@ -2502,91 +2917,240 @@ 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',
+ 'Absolite Z', 'Beedrillite', 'Blazikenite', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Lucarionite Z', 'Mawilite', 'Medichamite', 'Pidgeotite', 'Zygardite',
+ 'Baton Pass', 'Sticky Web',
],
+ 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 ((this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`) ||
+ this.ruleTable.isRestricted(`ability:${ability.id}`)) &&
+ !(((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies) ||
+ (item.id === 'ultranecroziumz' && species.name.startsWith('Necrozma-'))))) {
+ return [`${species.name} is not allowed to hold ${item.name}.`];
+ }
+ if (itemTable.has(item.id)) {
+ 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', 'Gengarite', 'Baton Pass', 'Electrify'],
+ restricted: [
+ 'Beedrillite', 'Kangaskhanite', 'Mawilite', 'Medichamite', 'Arceus', 'Darkrai', 'Deoxys-Attack', 'Deoxys-Normal', 'Deoxys-Speed',
+ 'Dialga', 'Dragonite', 'Entei', 'Genesect', 'Giratina', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-Black', 'Kyurem-White', 'Lugia',
+ 'Manaphy', 'Mewtwo', 'Palkia', 'Rayquaza', 'Regigigas', 'Reshiram', 'Shaymin-Sky', 'Slaking', 'Xerneas', 'Yveltal', 'Zekrom',
],
- },
- {
- 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 ((this.ruleTable.isRestrictedSpecies(species) || this.ruleTable.isRestricted(`item:${item.id}`)) &&
+ !((item.megaStone || item.isPrimalOrb) && item.itemUser?.includes(species.baseSpecies))) {
+ return [`${species.name} is not allowed to hold ${item.name}.`];
+ }
+ if (itemTable.has(item.id)) {
+ 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
@@ -2624,24 +3188,24 @@ export const Formats: import('../sim/dex-formats').FormatList = [
searchShow: false,
ruleset: [
'Standard NatDex',
- '!Species Clause', 'Forme Clause', 'Terastal Clause', 'DryPass Clause', 'Mega Rayquaza Clause',
+ '!Species Clause', 'Forme Clause', '!Sleep Clause Mod', 'Sleep Moves Clause', 'Terastal Clause', 'DryPass Clause', 'Mega Rayquaza Clause',
],
banlist: [
'ND Uber', 'ND AG', 'ND OU', 'ND UUBL', 'ND UU', 'ND RUBL', 'ND RU', 'ND NFE', 'ND LC',
- 'Battle Bond', 'Moody', 'Power Construct', 'Shadow Tag', 'Tangled Feet', 'Berserk Gene', 'King\'s Rock', 'Quick Claw', 'Razor Fang',
- 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin',
+ 'Battle Bond', 'Moody', 'Power Construct', 'Shadow Tag', 'Tangled Feet', 'Berserk Gene', 'Booster Energy', 'King\'s Rock', 'Quick Claw',
+ 'Razor Fang', 'Last Respects', 'Shed Tail', 'Baton Pass + Contrary', 'Baton Pass + Rapid Spin', 'Baton Pass + Well-Baked Body',
],
unbanlist: [
- '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',
+ 'Aerodactyl-Base', 'Arctozolt', 'Armaldo', 'Armarouge', 'Bronzong', 'Centiskorch', 'Cherrim-Base', 'Cyclizar', 'Dhelmise', 'Dondozo',
+ 'Drakloak', 'Empoleon', 'Glaceon', 'Golduck', 'Gyarados-Base', 'Jellicent', 'Jumpluff', 'Kecleon', 'Kilowattrel', 'Kingdra', 'Lunatone',
+ 'Musharna', 'Noivern', 'Palossand', 'Pincurchin', 'Reuniclus', 'Revavroom', 'Sandslash-Alola', 'Snorlax', 'Solrock', 'Stonjourner',
+ 'Tyranitar-Base', 'Vaporeon', 'Virizion', 'Wigglytuff', 'Ultranecrozium Z', 'Solganium Z', 'Lunalium Z', 'Mewnium Z', 'Marshadium Z', 'Yawn',
],
// Stupid hardcode
onValidateSet(set, format, setHas, teamHas) {
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}`))) {
@@ -2668,11 +3232,18 @@ export const Formats: import('../sim/dex-formats').FormatList = [
banlist: ['ND OU', 'ND UUBL', 'Drizzle', 'Drought', 'Light Clay'],
},
{
- name: "[Gen 9] National Dex RU",
+ name: "[Gen 9] National Dex Ubers UU",
mod: 'gen9',
searchShow: false,
- ruleset: ['[Gen 9] National Dex UU'],
- banlist: ['ND UU', 'ND RUBL', 'Slowbronite'],
+ ruleset: ['[Gen 9] National Dex Ubers'],
+ banlist: [
+ 'Alomomola', 'Arceus-Normal', 'Arceus-Dark', 'Arceus-Ground', 'Calyrex-Ice', 'Chansey', 'Deoxys-Attack', 'Ditto', 'Dondozo', 'Eternatus', 'Giratina-Origin', 'Groudon-Primal',
+ 'Hatterene', 'Ho-Oh', 'Kingambit', 'Kyogre-Primal', 'Lunala', 'Marshadow', 'Mewtwo-Mega-Y', 'Necrozma-Dusk-Mane', 'Necrozma-Ultra', 'Salamence-Mega', 'Smeargle', 'Yveltal',
+ 'Zacian-Crowned', 'Zygarde-50%',
+ // UUBL
+ 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon',
+ 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects',
+ ],
},
{
name: "[Gen 9] National Dex LC",
@@ -2719,24 +3290,10 @@ 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'],
},
- {
- name: "[Gen 9] National Dex Ubers UU",
- mod: 'gen9',
- 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',
- 'Zacian-Crowned', 'Zygarde-50%',
- // UUBL
- 'Arceus-Dragon', 'Arceus-Fairy', 'Arceus-Fire', 'Arceus-Flying', 'Arceus-Ghost', 'Arceus-Water', 'Blaziken-Mega', 'Chi-Yu', 'Chien-Pao', 'Dracovish', 'Flutter Mane', 'Groudon',
- 'Kyogre', 'Kyurem-Black', 'Rayquaza', 'Shaymin-Sky', 'Zacian', 'Zekrom', 'Power Construct', 'Light Clay', 'Ultranecrozium Z', 'Last Respects',
- ],
- },
{
name: "[Gen 9] National Dex 1v1",
mod: 'gen9',
@@ -2866,7 +3423,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: [
@@ -2904,110 +3461,18 @@ 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',
- 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',
- ],
- 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.)`);
- },
- onSwitchInPriority: 100,
- onSwitchIn(pokemon) {
- if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !==
- this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') &&
- !pokemon.terastallized) {
- this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
- }
- },
- },
- {
- name: "[Gen 9] 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 6] Megas Revisited", // Roomtours
+ desc: `A Gen 6 metagame where every Mega Evolution was reevaluated and redesigned.`,
+ mod: 'gen6megasrevisited',
searchShow: false,
- ruleset: ['Standard NatDex', 'Data Preview', 'Mega Data Mod', 'Status Mod', 'Terastal Clause', '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',
- ],
- 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',
- ],
+ ruleset: ['Standard', 'Swagger Clause', 'Mega Data Mod'],
+ banlist: ['Uber', 'Arena Trap', 'Shadow Tag', 'Soul Dew', 'Baton Pass', 'Blaziken + Speed Boost'],
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.)`);
- },
- onSwitchInPriority: 100,
- onSwitchIn(pokemon) {
- if ((pokemon.illusion || pokemon).getTypes(true, true).join('/') !==
- this.dex.forGen(9).species.get((pokemon.illusion || pokemon).species.name).types.join('/') &&
- !pokemon.terastallized) {
- this.add('-start', pokemon, 'typechange', (pokemon.illusion || pokemon).getTypes(true).join('/'), '[silent]');
- }
- },
- },
- {
- name: "[Gen 9] ChatBats",
- desc: `A Random Battles Solomod made by the Pet Mods chatroom on Showdown.`,
- mod: 'chatbats',
- team: 'randomChatBats',
- ruleset: ['Obtainable', 'Species Clause', 'HP Percentage Mod', 'Sleep Clause Mod', 'Data Preview', 'Cancel Mod'],
- onSwitchIn(pokemon) {
- this.add('-start', pokemon, 'typechange', pokemon.species.types.join('/'), '[silent]');
- },
- // Dachsbun causes Koraidon to generate on enemy team. Implemented here.
- onBegin() {
- this.add(`raw|Need help with all of the new moves, abilities, and wacky sets?
Then make sure to check out the ChatBats Compendium or use /dt! `);
- this.add(`raw|Welcome to ChatBats!`);
- this.add(`raw|ChatBats is a Random Battles format created by the Pet Mods room here on Showdown!`);
- this.add(`raw|If you want to help create new sets, we will host events periodically in the Pet Mods room!`);
- this.add(`raw|Anyone who is there can help create a new set for a random mon, changing moves, abilities, stats, and even custom formes.`);
+ this.add(`raw|Need help with all of the new Megas and abilities?
Then make sure to check out the spreadsheet or use /dt! `);
+ this.add('-message', `Welcome to Megas Revisited!`);
+ this.add('-message', `This is a Generation 6 OU-based Pet Mod where every existing Mega Evolution has been redesigned.`);
+ this.add('-message', `You can find our thread and metagame resources here:`);
+ this.add('-message', `https://www.smogon.com/forums/threads/3713949/`);
},
},
{
@@ -3022,25 +3487,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
banlist: ['Uber', 'Arena Trap', 'Moody', 'Power Construct', 'Shadow Tag', 'King\'s Rock', 'Light Clay', 'Quick Claw', 'Razor Fang', 'Baton Pass', 'Last Respects', 'Shed Tail'],
},
- // Randomized Format Spotlight
- ///////////////////////////////////////////////////////////////////
-
- {
- section: "Randomized Format Spotlight",
- column: 3,
- },
- {
- name: "[Gen 9] 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,
- 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!
`);
- },
- },
-
// Randomized Metas
///////////////////////////////////////////////////////////////////
@@ -3055,50 +3501,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
team: 'random',
bestOfDefault: true,
},
- {
- name: "[Gen 9] Monkey's Paw Random Battle",
- desc: `Every Pokemon can wish for something with the Monkey's Paw once.`,
- mod: 'monkeyspaw',
- team: 'random',
- ruleset: ['[Gen 9] Random Battle'],
- onBegin() {
- for (const side of this.sides) {
- // @ts-expect-error I hate references with all of my life force
- side.wishes = { luck: 1, knowledge: 1, power: 1, life: 1 };
- // @ts-expect-error
- side.wishesRemaining = 4;
- }
- let buf = `What does which wish do?
`;
- buf += `What does which wish do?
`;
- buf += `• Mega Evolution: Wish for life – Revive one fainted Pokemon
`;
- buf += `• Mega Evolution X: Wish for power – Gain a +2 boost in the current Pokemon's dominant attack and defense stat
`;
- buf += `• Mega Evolution Y: Wish for luck – Give the current Pokemon innate Serene Grace + Focus Energy for the rest of the game
`;
- buf += `• Terastallize: Wish for knowledge – Scout the active Pokemon for one of their moves
`;
- buf += ` `;
- this.add('message', `You've found a Monkey's Paw. You have 4 wishes.`);
- this.add(`raw|${buf}`);
- },
- onSwitchIn(pokemon) {
- if (pokemon.m.revivedByMonkeysPaw) {
- pokemon.addVolatile('slowstart', null, this.dex.conditions.get('monkeypaw'));
- }
- if (pokemon.m.monkeyPawLuck) {
- pokemon.addVolatile('focusenergy');
- pokemon.addVolatile('confusion', null, this.dex.conditions.get('monkeypaw'));
- }
- },
- onModifyMovePriority: -2,
- onModifyMove(move, pokemon) {
- if (!pokemon.m.monkeyPawLuck) return;
- if (move.secondaries) {
- this.debug('doubling secondary chance');
- for (const secondary of move.secondaries) {
- if (secondary.chance) secondary.chance *= 2;
- }
- }
- if (move.self?.chance) move.self.chance *= 2;
- },
- },
{
name: "[Gen 9] Super Staff Bros Ultimate",
desc: "The fifth iteration of Super Staff Bros is here! Battle with a random team of pokemon created by the sim staff.",
@@ -3215,6 +3617,15 @@ export const Formats: import('../sim/dex-formats').FormatList = [
this.add(`raw|Battle Factory Tier: ${this.teamGenerator.factoryTier}
`);
},
},
+ {
+ name: "[Gen 9] 1v1 Factory",
+ desc: `Randomized teams of Pokémon for a generated Smogon tier with sets that are competitively viable.`,
+ threads: [`• 1v1 Factory Set Discussion`],
+ mod: 'gen9',
+ team: 'random1v1Factory',
+ bestOfDefault: true,
+ ruleset: ['[Gen 9] 1v1'],
+ },
{
name: "[Gen 9] BSS Factory",
desc: `Randomized 3v3 Singles featuring Pokémon and movesets popular in Battle Stadium Singles.`,
@@ -3450,8 +3861,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)`,
];
@@ -3687,44 +4098,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
},
},
- // RoA Spotlight
- ///////////////////////////////////////////////////////////////////
-
- {
- section: "RoA Spotlight",
- column: 4,
- },
- {
- name: "[Gen 1] Ubers",
- mod: 'gen1',
- // searchShow: false,
- ruleset: ['Standard'],
- },
- {
- 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 6] VGC 2014",
- mod: 'gen6xy',
- gameType: 'doubles',
- // searchShow: false,
- bestOfDefault: true,
- ruleset: ['Flat Rules', 'Kalos Pokedex', 'Min Source Gen = 6'],
- },
-
// Past Gens OU
///////////////////////////////////////////////////////////////////
@@ -3759,7 +4132,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'],
},
{
@@ -4278,13 +4651,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['[Gen 6] UU'],
banlist: ['UU', 'RUBL'],
},
- {
- name: "[Gen 6] NU",
- mod: 'gen6',
- searchShow: false,
- ruleset: ['[Gen 6] RU'],
- banlist: ['RU', 'NUBL'],
- },
{
name: "[Gen 6] PU",
mod: 'gen6',
@@ -4397,6 +4763,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',
@@ -4476,6 +4850,15 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['[Gen 5] NU', 'Sleep Moves Clause'],
banlist: ['NU', 'PUBL', 'Damp Rock'],
},
+ {
+ name: "[Gen 5] Monotype",
+ desc: `All the Pokémon on a team must share a type.`,
+ mod: 'gen5',
+ searchShow: false,
+ ruleset: ['[Gen 5] OU', 'Same Type Clause', '!Gems Clause'],
+ banlist: ['Latios'],
+ unbanlist: ['Cloyster'],
+ },
{
name: "[Gen 5] LC",
mod: 'gen5',
@@ -4486,15 +4869,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
'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.`,
- mod: 'gen5',
- searchShow: false,
- ruleset: ['[Gen 5] OU', 'Same Type Clause', '!Gems Clause'],
- banlist: ['Latios'],
- unbanlist: ['Cloyster'],
- },
{
name: "[Gen 5] 1v1",
desc: `Bring three Pokémon to Team Preview and choose one to battle.`,
@@ -4624,18 +4998,11 @@ export const Formats: import('../sim/dex-formats').FormatList = [
section: "DPP Singles",
column: 4,
},
- {
- name: "[Gen 4] Ubers",
- mod: 'gen4',
- searchShow: false,
- ruleset: ['Standard'],
- banlist: ['AG'],
- },
{
name: "[Gen 4] UU",
mod: 'gen4',
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'],
},
@@ -4661,7 +5028,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
name: "[Gen 4] Anything Goes",
mod: 'gen4',
searchShow: false,
- ruleset: ['Obtainable', 'Arceus EV Limit', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'],
+ ruleset: ['Obtainable', 'Endless Battle Clause', 'HP Percentage Mod', 'Cancel Mod'],
},
{
name: "[Gen 4] 1v1",
@@ -4776,15 +5143,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
}
},
},
- {
- name: "[Gen 4] VGC 2009",
- mod: 'gen4pt',
- gameType: 'doubles',
- searchShow: false,
- bestOfDefault: true,
- ruleset: ['Flat Rules', '! Adjust Level Down', 'Max Level = 50'],
- banlist: ['Tyranitar', 'Rotom', 'Judgment', 'Soul Dew'],
- },
{
name: "[Gen 4] Doubles Custom Game",
mod: 'gen4',
@@ -4810,13 +5168,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['Standard', 'Deoxys Camouflage Clause', 'One Baton Pass Clause'],
banlist: ['Wobbuffet + Leftovers', 'Wynaut + Leftovers', 'Baton Pass'],
},
- {
- name: "[Gen 3] RU",
- mod: 'gen3',
- searchShow: false,
- ruleset: ['Standard'],
- banlist: ['Uber', 'OU', 'UUBL', 'UU', 'RUBL', 'Glalie', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'],
- },
{
name: "[Gen 3] UU",
mod: 'gen3',
@@ -4824,6 +5175,13 @@ export const Formats: import('../sim/dex-formats').FormatList = [
ruleset: ['Standard'],
banlist: ['Uber', 'OU', 'UUBL', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'],
},
+ {
+ name: "[Gen 3] RU",
+ mod: 'gen3',
+ searchShow: false,
+ ruleset: ['Standard'],
+ banlist: ['Uber', 'OU', 'UUBL', 'UU', 'RUBL', 'Glalie', 'Smeargle + Ingrain', 'Arena Trap', 'Baton Pass', 'Swagger'],
+ },
{
name: "[Gen 3] NU",
mod: 'gen3',
@@ -4843,7 +5201,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",
@@ -4885,6 +5243,30 @@ 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'],
+ },
+ {
+ 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',
@@ -4928,7 +5310,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
mod: 'gen2',
searchShow: false,
ruleset: ['[Gen 2] NU'],
- banlist: ['NU', 'PUBL', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web'],
+ banlist: ['NU', 'PUBL', 'Baton Pass'],
unbanlist: ['Swagger'],
},
{
@@ -4951,7 +5333,8 @@ export const Formats: import('../sim/dex-formats').FormatList = [
mod: 'gen2',
searchShow: false,
ruleset: ['[Gen 2] PU'],
- banlist: ['PU', 'ZUBL'],
+ banlist: ['PU', 'ZUBL', 'Baton Pass + Mean Look', 'Baton Pass + Spider Web'],
+ unbanlist: ['Baton Pass'],
},
{
name: "[Gen 2] NC 2000",
@@ -4979,6 +5362,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',
@@ -5011,7 +5400,7 @@ export const Formats: import('../sim/dex-formats').FormatList = [
name: "[Gen 1] LC",
mod: 'gen1',
searchShow: false,
- ruleset: ['Little Cup', 'Standard', '!Max Level', 'Adjust Level = 5'],
+ ruleset: ['Little Cup', 'Standard', '!Max Level', 'Adjust Level = 5', 'Sleep Moves Clause', 'Accuracy Moves Clause'],
banlist: ['Dragon Rage', 'Fire Spin', 'Sonic Boom', 'Wrap'],
},
{
@@ -5024,6 +5413,17 @@ export const Formats: import('../sim/dex-formats').FormatList = [
],
banlist: ['Mew', 'Mewtwo', 'Bind', 'Clamp', 'Explosion', 'Fire Spin', 'Self-Destruct', 'Wrap'],
},
+ {
+ name: "[Gen 1] NC 1997",
+ mod: 'gen1jpn',
+ bestOfDefault: true,
+ searchShow: false,
+ ruleset: [
+ 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
+ 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'Cancel Mod', 'NC 1997 Move Legality',
+ ],
+ banlist: ['Uber'],
+ },
{
name: "[Gen 1] Japanese OU",
desc: `Generation 1 with Japanese battle mechanics.`,
@@ -5049,17 +5449,6 @@ export const Formats: import('../sim/dex-formats').FormatList = [
searchShow: false,
ruleset: ['[Gen 1] OU', 'Allow Tradeback'],
},
- {
- name: "[Gen 1] NC 1997",
- mod: 'gen1jpn',
- bestOfDefault: true,
- searchShow: false,
- ruleset: [
- 'Picked Team Size = 3', 'Min Level = 50', 'Max Level = 55', 'Max Total Level = 155',
- 'Obtainable', 'Team Preview', 'Stadium Sleep Clause', 'Species Clause', 'Nickname Clause', 'Cancel Mod', 'NC 1997 Move Legality',
- ],
- banlist: ['Uber'],
- },
{
name: "[Gen 1] Custom Game",
mod: 'gen1',
diff --git a/data/abilities.ts b/data/abilities.ts
index d262638f9c..52726f2592 100644
--- a/data/abilities.ts
+++ b/data/abilities.ts
@@ -2050,7 +2050,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
}
},
onEnd(pokemon) {
- if (pokemon.illusion) {
+ if (pokemon.illusion && !pokemon.beingCalledBack) {
this.debug('illusion cleared');
pokemon.illusion = null;
const details = pokemon.getUpdatedDetails();
@@ -2366,10 +2366,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
return;
}
if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) {
- const oldAbility = source.setAbility('lingeringaroma', target);
- if (oldAbility) {
- this.add('-activate', target, 'ability: Lingering Aroma', this.dex.abilities.get(oldAbility).name, `[of] ${source}`);
- }
+ source.setAbility('lingeringaroma', target);
}
},
flags: {},
@@ -2747,10 +2744,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
return;
}
if (this.checkMoveMakesContact(move, source, target, !source.isAlly(target))) {
- const oldAbility = source.setAbility('mummy', target);
- if (oldAbility) {
- this.add('-activate', target, 'ability: Mummy', this.dex.abilities.get(oldAbility).name, `[of] ${source}`);
- }
+ source.setAbility('mummy', target);
}
},
flags: {},
@@ -4288,6 +4282,10 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
return this.chainModify(0.5);
}
},
+ onEnd(pokemon) {
+ if (pokemon.beingCalledBack) return;
+ this.add('-end', pokemon, 'Slow Start', '[silent]');
+ },
flags: {},
name: "Slow Start",
rating: -1,
@@ -5299,20 +5297,7 @@ export const Abilities: import('../sim/dex-abilities').AbilityDataTable = {
},
wanderingspirit: {
onDamagingHit(damage, target, source, move) {
- if (source.getAbility().flags['failskillswap'] || target.volatiles['dynamax']) return;
-
- if (this.checkMoveMakesContact(move, source, target)) {
- const targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, source.ability);
- if (!targetCanBeSet) return targetCanBeSet;
- const sourceAbility = source.setAbility('wanderingspirit', target);
- if (!sourceAbility) return;
- if (target.isAlly(source)) {
- this.add('-activate', target, 'Skill Swap', '', '', `[of] ${source}`);
- } else {
- this.add('-activate', target, 'ability: Wandering Spirit', this.dex.abilities.get(sourceAbility).name, 'Wandering Spirit', `[of] ${source}`);
- }
- target.setAbility(sourceAbility);
- }
+ if (this.checkMoveMakesContact(move, source, target)) this.skillSwap(source, target);
},
flags: {},
name: "Wandering Spirit",
diff --git a/data/aliases.ts b/data/aliases.ts
index 23325f6096..d5bd11694f 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] Linked",
+ lcotm: "[Gen 9] 350 Cup",
+ ommotm: "[Gen 9] Pokebilities AAA",
+ ommspotlight: "[Gen 9] Pokebilities AAA",
// mega evos --- 1st ordered alphabetically by species, 2nd by alias
megasnow: "Abomasnow-Mega",
diff --git a/data/conditions.ts b/data/conditions.ts
index 44406ca01a..cf749e1f66 100644
--- a/data/conditions.ts
+++ b/data/conditions.ts
@@ -879,6 +879,65 @@ export const Conditions: import('../sim/dex-conditions').ConditionDataTable = {
return [type];
},
},
+ zacian: {
+ name: 'Zacian',
+ onBattleStart(pokemon) {
+ if (pokemon.item !== 'rustedsword') return;
+ const rawSpecies = this.dex.species.get('Zacian-Crowned');
+ const species = pokemon.setSpecies(rawSpecies);
+ if (!species) return;
+ pokemon.baseSpecies = rawSpecies;
+ pokemon.details = pokemon.getUpdatedDetails();
+ pokemon.setAbility(species.abilities['0'], null, null, true);
+ pokemon.baseAbility = pokemon.ability;
+
+ const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead');
+ if (ironHeadIndex >= 0) {
+ const move = this.dex.moves.get('behemothblade');
+ pokemon.baseMoveSlots[ironHeadIndex] = {
+ move: move.name,
+ id: move.id,
+ pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ target: move.target,
+ disabled: false,
+ disabledSource: '',
+ used: false,
+ };
+ pokemon.moveSlots = pokemon.baseMoveSlots.slice();
+ }
+ },
+ },
+ zamazenta: {
+ name: 'Zamazenta',
+ onBattleStart(pokemon) {
+ if (pokemon.item !== 'rustedshield') return;
+ const rawSpecies = this.dex.species.get('Zamazenta-Crowned');
+ const species = pokemon.setSpecies(rawSpecies);
+ if (!species) return;
+ pokemon.baseSpecies = rawSpecies;
+ pokemon.details = pokemon.getUpdatedDetails();
+ pokemon.setAbility(species.abilities['0'], null, null, true);
+ pokemon.baseAbility = pokemon.ability;
+
+ const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead');
+ if (ironHeadIndex >= 0) {
+ const move = this.dex.moves.get('behemothbash');
+ pokemon.baseMoveSlots[ironHeadIndex] = {
+ move: move.name,
+ id: move.id,
+ pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ target: move.target,
+ disabled: false,
+ disabledSource: '',
+ used: false,
+ };
+ pokemon.moveSlots = pokemon.baseMoveSlots.slice();
+ }
+ },
+ },
+
rolloutstorage: {
name: 'rolloutstorage',
duration: 2,
diff --git a/data/formats-data.ts b/data/formats-data.ts
index 983b4785cd..ccaea84c80 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",
},
@@ -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: "RUBL",
},
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",
},
@@ -2096,7 +2096,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
sharpedomega: {
isNonstandard: "Past",
tier: "Illegal",
- natDexTier: "RU",
+ natDexTier: "RUBL",
},
wailmer: {
isNonstandard: "Past",
@@ -2390,7 +2390,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
salamence: {
tier: "RUBL",
doublesTier: "(DUU)",
- natDexTier: "UU",
+ natDexTier: "RUBL",
},
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",
@@ -5207,7 +5209,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
zamazentacrowned: {
tier: "Uber",
doublesTier: "DUber",
- natDexTier: "Uber",
+ natDexTier: "OU",
},
eternatus: {
tier: "Uber",
@@ -5281,7 +5283,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
},
enamorus: {
tier: "OU",
- doublesTier: "(DUU)",
+ doublesTier: "DUU",
natDexTier: "RUBL",
},
enamorustherian: {
@@ -5320,7 +5322,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
quaquaval: {
tier: "UUBL",
doublesTier: "(DUU)",
- natDexTier: "UU",
+ natDexTier: "RUBL",
},
lechonk: {
tier: "LC",
@@ -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",
},
@@ -5771,7 +5773,7 @@ export const FormatsData: import('../sim/dex-species').SpeciesFormatsDataTable =
okidogi: {
tier: "UUBL",
doublesTier: "(DUU)",
- natDexTier: "RUBL",
+ natDexTier: "UUBL",
},
munkidori: {
tier: "NU",
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/learnsets.ts b/data/learnsets.ts
index f93d6231f6..f5f778f2d6 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"},
],
@@ -49730,12 +49734,85 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
},
gastrodoneast: {
learnset: {
- earthpower: ["9S3", "9S2", "8S1", "8S0"],
- icebeam: ["9S2", "8S1", "8S0"],
- icywind: ["9S3"],
- protect: ["9S3", "9S2", "8S1", "8S0"],
- surf: ["8S0"],
- yawn: ["9S3", "9S2", "8S1"],
+ amnesia: ["9M", "8M"],
+ ancientpower: ["9L20", "8L20", "4T"],
+ attract: ["8M", "7M", "6M", "5M", "4M"],
+ blizzard: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ block: ["7T", "6T", "5T", "4T"],
+ bodyslam: ["9M", "9L25", "8M", "8L25", "7L29", "6L29", "5L29", "4L29"],
+ brine: ["8M", "4M"],
+ bulldoze: ["9M", "8M", "7M", "6M", "5M"],
+ captivate: ["4M"],
+ chillingwater: ["9M"],
+ confide: ["7M", "6M"],
+ curse: ["9M"],
+ dig: ["9M", "8M", "6M", "5M", "4M"],
+ dive: ["8M", "6M", "5M", "4T"],
+ doubleteam: ["7M", "6M", "5M", "4M"],
+ earthpower: ["9M", "9L39", "9S2", "9S3", "8M", "8L39", "8S0", "8S1", "7T", "6T", "5T", "4T"],
+ earthquake: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ endure: ["9M", "8M", "4M"],
+ facade: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ flash: ["6M", "5M", "4M"],
+ frustration: ["7M", "6M", "5M", "4M"],
+ gigaimpact: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ hail: ["8M", "7M", "6M", "5M", "4M"],
+ harden: ["9L1", "8L1", "7L1", "6L1", "5L1", "4L1"],
+ headbutt: ["4T"],
+ helpinghand: ["9M"],
+ hiddenpower: ["7M", "7L16", "6M", "6L16", "5M", "5L16", "4M", "4L16"],
+ hydropump: ["9M", "8M"],
+ hyperbeam: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ icebeam: ["9M", "9S2", "8M", "8S0", "8S1", "7M", "6M", "5M", "4M"],
+ icywind: ["9M", "9S3", "8M", "7T", "6T", "5T", "4T"],
+ infestation: ["7M", "6M"],
+ liquidation: ["9M"],
+ memento: ["9L53", "8L53"],
+ mudbomb: ["7L11", "6L11", "5L11", "4L11"],
+ muddywater: ["9M", "9L33", "8M", "8L33", "7L41", "6L41", "5L41", "4L41"],
+ mudshot: ["9M", "8M"],
+ mudslap: ["9M", "9L1", "8L1", "7L1", "6L1", "5L1", "4T", "4L1"],
+ mudsport: ["7L1", "6L1", "5L1", "4L1"],
+ naturalgift: ["4M"],
+ painsplit: ["9M", "7T", "6T", "5T", "4T"],
+ protect: ["9M", "9S2", "9S3", "8M", "8S0", "8S1", "7M", "6M", "5M", "4M"],
+ raindance: ["9M", "9L46", "8M", "8L46", "7M", "7L22", "6M", "6L22", "5M", "5L22", "4M", "4L22"],
+ recover: ["9L1", "8L1", "7L54", "6L54", "5L54", "4L54"],
+ rest: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ return: ["7M", "6M", "5M", "4M"],
+ rockblast: ["9M"],
+ rockslide: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ rocksmash: ["6M", "5M", "4M"],
+ rocktomb: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ round: ["8M", "7M", "6M", "5M"],
+ sandstorm: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ sandtomb: ["9M", "8M"],
+ scald: ["8M", "7M", "6M", "5M"],
+ secretpower: ["6M", "4M"],
+ skittersmack: ["9M", "8T"],
+ sleeptalk: ["9M", "8M", "7M", "6M", "5T", "4M"],
+ sludgebomb: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ sludgewave: ["9M", "8M", "7M", "6M", "5M"],
+ snore: ["8M", "7T", "6T", "5T", "4T"],
+ snowscape: ["9M"],
+ spikes: ["9M"],
+ stealthrock: ["9M"],
+ stompingtantrum: ["9M", "8M", "7T"],
+ stoneedge: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ strength: ["6M", "5M", "4M"],
+ stringshot: ["4T"],
+ substitute: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ surf: ["9M", "8M", "8S0", "7M", "6M", "5M", "4M"],
+ swagger: ["7M", "6M", "5M", "4M"],
+ takedown: ["9M"],
+ terablast: ["9M"],
+ toxic: ["7M", "6M", "5M", "4M"],
+ waterfall: ["9M", "8M", "7M", "6M", "5M", "4M"],
+ watergun: ["9L1", "8L1"],
+ waterpulse: ["9M", "9L15", "8L15", "7T", "7L1", "6T", "6L1", "5L1", "4M", "4L1"],
+ weatherball: ["9M", "8M"],
+ whirlpool: ["9M", "8M", "4M"],
+ yawn: ["9S2", "9S3", "8S1"],
},
eventData: [
{generation: 8, level: 50, gender: "F", nature: "Quiet", abilities: ["stormdrain"], ivs: {hp: 31, atk: 2, def: 31, spa: 31, spd: 31, spe: 0}, moves: ["protect", "surf", "icebeam", "earthpower"], pokeball: "cherishball"},
@@ -53582,7 +53659,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
{generation: 6, level: 1, moves: ["tailglow", "bubble", "watersport", "heartswap"], pokeball: "cherishball"},
{generation: 6, level: 100, moves: ["tailglow", "bubble", "watersport"], pokeball: "cherishball"},
{generation: 7, level: 15, moves: ["tailglow", "waterpulse", "aquaring", "heartswap"], pokeball: "cherishball"},
- {generation: 8, moves: ['tailglow', 'watergun'], pokeball: 'pokeball', source: "gen8bdsp"},
+ {generation: 8, level: 1, moves: ['tailglow', 'watergun'], pokeball: 'pokeball', source: "gen8bdsp"},
{generation: 8, level: 50, moves: ["waterpulse", "zenheadbutt", "moonblast", "bubble"], source: "gen8legends"},
{generation: 9, level: 50, shiny: true, nature: "Calm", ivs: {hp: 31, atk: 20, def: 31, spa: 20, spd: 31, spe: 20}, moves: ["bubblebeam", "acidarmor", "whirlpool", "waterpulse"], pokeball: "cherishball"},
],
@@ -72938,10 +73015,79 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
},
pumpkaboosuper: {
learnset: {
- astonish: ["6S0"],
- scaryface: ["6S0"],
- shadowsneak: ["6S0"],
- trickortreat: ["6S0"],
+ allyswitch: ["8M", "7T"],
+ astonish: ["8L1", "7L1", "6L1", "6S0"],
+ attract: ["8M", "7M", "6M"],
+ bestow: ["7E", "6E"],
+ bulletseed: ["8M", "8L20", "7L26", "6L26"],
+ chargebeam: ["7M", "6M"],
+ confide: ["7M", "6M"],
+ confuseray: ["8L8", "7L1", "6L1"],
+ curse: ["8E", "7E"],
+ darkpulse: ["8M", "7M", "6M"],
+ destinybond: ["8E", "7E", "6E"],
+ disable: ["8E", "7E", "6E"],
+ doubleteam: ["7M", "6M"],
+ dreameater: ["7M", "6M"],
+ endure: ["8M"],
+ energyball: ["8M", "7M", "6M"],
+ explosion: ["7M", "6M"],
+ facade: ["8M", "7M", "6M"],
+ fireblast: ["8M", "7M", "6M"],
+ flamecharge: ["7M", "6M"],
+ flamethrower: ["8M", "7M", "6M"],
+ flash: ["6M"],
+ foulplay: ["8M", "7T", "6T"],
+ frustration: ["7M", "6M"],
+ gigadrain: ["8M", "7T", "6T"],
+ grassknot: ["8M", "7M", "6M"],
+ grassyglide: ["8T"],
+ gyroball: ["8M", "7M", "6M"],
+ hex: ["8M"],
+ hiddenpower: ["7M", "6M"],
+ imprison: ["8M"],
+ incinerate: ["6M"],
+ leechseed: ["8L16", "7L20", "6L20"],
+ lightscreen: ["8M", "7M", "6M"],
+ magiccoat: ["7T", "6T"],
+ mysticalfire: ["8M"],
+ naturepower: ["7M", "6M"],
+ painsplit: ["8L44", "7T", "7L42", "6T", "6L42"],
+ poltergeist: ["8T"],
+ protect: ["8M", "7M", "6M"],
+ psychic: ["8M", "7M", "6M"],
+ razorleaf: ["8L12", "7L16", "6L16"],
+ rest: ["8M", "7M", "6M"],
+ return: ["7M", "6M"],
+ rockslide: ["8M", "7M", "6M"],
+ rocksmash: ["6M"],
+ roleplay: ["7T", "6T"],
+ round: ["8M", "7M", "6M"],
+ safeguard: ["8M", "7M", "6M"],
+ scaryface: ["8M", "8L24", "7L4", "6L4", "6S0"],
+ secretpower: ["6M"],
+ seedbomb: ["8M", "8L32", "7T", "7L48", "6T", "6L48"],
+ shadowball: ["8M", "8L36", "7M", "7L36", "6M", "6L36"],
+ shadowsneak: ["8L4", "7L30", "6L30", "6S0"],
+ skillswap: ["8M", "7T", "6T"],
+ skittersmack: ["8T"],
+ sleeptalk: ["8M", "7M", "6M"],
+ sludgebomb: ["8M", "7M", "6M"],
+ snore: ["8M"],
+ solarbeam: ["8M", "7M", "6M"],
+ spite: ["7T", "6T"],
+ substitute: ["8M", "7M", "6M"],
+ sunnyday: ["8M", "7M", "6M"],
+ swagger: ["7M", "6M"],
+ synthesis: ["7T", "6T"],
+ telekinesis: ["7T"],
+ thief: ["8M", "7M", "6M"],
+ toxic: ["7M", "6M"],
+ trick: ["8M", "8L40", "7T", "7L1", "6T", "6L1"],
+ trickortreat: ["8L1", "7L23", "6L6", "6S0"],
+ trickroom: ["8M", "7M", "6M"],
+ willowisp: ["8M", "7M", "6M"],
+ worryseed: ["8L28", "7T", "7L11", "6T", "6L11"],
},
eventData: [
{generation: 6, level: 50, moves: ["trickortreat", "astonish", "scaryface", "shadowsneak"], pokeball: "cherishball"},
@@ -73028,6 +73174,87 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
worryseed: ["8L28", "7T", "7L11", "6T", "6L11"],
},
},
+ gourgeistsuper: {
+ learnset: {
+ allyswitch: ["8M", "7T"],
+ astonish: ["8L1", "7L1", "6L1"],
+ attract: ["8M", "7M", "6M"],
+ brutalswing: ["8M"],
+ bulletseed: ["8M", "8L20", "7L26", "6L26"],
+ chargebeam: ["7M", "6M"],
+ confide: ["7M", "6M"],
+ confuseray: ["8L1", "7L1", "6L1"],
+ darkpulse: ["8M", "7M", "6M"],
+ doubleteam: ["7M", "6M"],
+ dreameater: ["7M", "6M"],
+ endure: ["8M"],
+ energyball: ["8M", "7M", "6M"],
+ explosion: ["8L1", "7M", "7L1", "6M", "6L1"],
+ facade: ["8M", "7M", "6M"],
+ fireblast: ["8M", "7M", "6M"],
+ flamecharge: ["7M", "6M"],
+ flamethrower: ["8M", "7M", "6M"],
+ flash: ["6M"],
+ focusblast: ["8M", "7M", "6M"],
+ foulplay: ["8M", "7T", "6T"],
+ frustration: ["7M", "6M"],
+ gigadrain: ["8M", "7T", "6T"],
+ gigaimpact: ["8M", "7M", "6M"],
+ grassknot: ["8M", "7M", "6M"],
+ grassyglide: ["8T"],
+ gyroball: ["8M", "7M", "6M"],
+ hex: ["8M"],
+ hiddenpower: ["7M", "6M"],
+ hyperbeam: ["8M", "7M", "6M"],
+ imprison: ["8M"],
+ incinerate: ["6M"],
+ leechseed: ["8L16", "7L20", "6L20"],
+ lightscreen: ["8M", "7M", "6M"],
+ magiccoat: ["7T", "6T"],
+ moonblast: ["8L1"],
+ mysticalfire: ["8M"],
+ nastyplot: ["8M"],
+ naturepower: ["7M", "6M"],
+ painsplit: ["8L44", "7T", "7L42", "6T", "6L42"],
+ phantomforce: ["8M", "8L48", "7L1", "6L1"],
+ poltergeist: ["8T"],
+ powerwhip: ["8M"],
+ protect: ["8M", "7M", "6M"],
+ psychic: ["8M", "7M", "6M"],
+ razorleaf: ["8L12", "7L16", "6L16"],
+ rest: ["8M", "7M", "6M"],
+ return: ["7M", "6M"],
+ rockslide: ["8M", "7M", "6M"],
+ rocksmash: ["6M"],
+ roleplay: ["7T", "6T"],
+ round: ["8M", "7M", "6M"],
+ safeguard: ["8M", "7M", "6M"],
+ scaryface: ["8M", "8L24", "7L1", "6L4"],
+ secretpower: ["6M"],
+ seedbomb: ["8M", "8L32", "7T", "7L48", "6T", "6L48"],
+ shadowball: ["8M", "8L36", "7M", "7L36", "6M", "6L36"],
+ shadowsneak: ["8L1", "7L30", "6L30"],
+ skillswap: ["8M", "7T", "6T"],
+ skittersmack: ["8T"],
+ sleeptalk: ["8M", "7M", "6M"],
+ sludgebomb: ["8M", "7M", "6M"],
+ snore: ["8M"],
+ solarbeam: ["8M", "7M", "6M"],
+ spite: ["7T", "6T"],
+ substitute: ["8M", "7M", "6M"],
+ sunnyday: ["8M", "7M", "6M"],
+ swagger: ["7M", "6M"],
+ synthesis: ["7T", "6T"],
+ telekinesis: ["7T"],
+ thief: ["8M", "7M", "6M"],
+ toxic: ["7M", "6M"],
+ trick: ["8M", "8L40", "7T", "7L1", "6T", "6L1"],
+ trickortreat: ["8L1", "7L23", "6L6"],
+ trickroom: ["8M", "7M", "6M"],
+ willowisp: ["8M", "7M", "6M"],
+ worryseed: ["8L28", "7T", "7L11", "6T", "6L11"],
+ },
+ },
bergmite: {
learnset: {
afteryou: ["7T", "6T"],
@@ -84106,49 +84333,53 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
},
sinisteaantique: {
learnset: {
- allyswitch: ["9E"],
- aromatherapy: ["8S0"],
- aromaticmist: ["9L6"],
- astonish: ["9L1"],
- batonpass: ["9M"],
+ allyswitch: ["9E", "8M"],
+ aromatherapy: ["8L30", "8S0"],
+ aromaticmist: ["9L6", "8L6"],
+ astonish: ["9L1", "8L1"],
+ batonpass: ["9M", "8M"],
calmmind: ["9M"],
celebrate: ["8S0"],
confuseray: ["9M"],
curse: ["9M"],
- darkpulse: ["9M"],
- endure: ["9M"],
- facade: ["9M"],
- foulplay: ["9M"],
- gigadrain: ["9M", "9L36"],
- hex: ["9M"],
- imprison: ["9M"],
+ darkpulse: ["9M", "8M"],
+ endure: ["9M", "8M"],
+ facade: ["9M", "8M"],
+ foulplay: ["9M", "8M"],
+ gigadrain: ["9M", "9L36", "8M", "8L36"],
+ hex: ["9M", "8M"],
+ imprison: ["9M", "8M"],
magicalleaf: ["9M"],
- megadrain: ["9L12"],
- memento: ["9L54", "8S0"],
- metronome: ["9M", "8S0"],
- nastyplot: ["9M", "9L42"],
+ megadrain: ["9L12", "8L12"],
+ memento: ["9L54", "8L54", "8S0"],
+ metronome: ["9M", "8M", "8S0"],
+ nastyplot: ["9M", "9L42", "8M", "8L42"],
nightshade: ["9M"],
- phantomforce: ["9M"],
- poltergeist: ["9M"],
- protect: ["9M"],
+ payback: ["8M"],
+ phantomforce: ["9M", "8M"],
+ poltergeist: ["9M", "8T"],
+ protect: ["9M", "8M", "8L18"],
psybeam: ["9M"],
- psychic: ["9M"],
- psyshock: ["9M"],
- rest: ["9M"],
- shadowball: ["9M", "9L48"],
- shellsmash: ["9L60"],
+ psychic: ["9M", "8M"],
+ psyshock: ["9M", "8M"],
+ rest: ["9M", "8M"],
+ round: ["8M"],
+ shadowball: ["9M", "9L48", "8M", "8L48"],
+ shellsmash: ["9L60", "8L60"],
skillswap: ["9M"],
- sleeptalk: ["9M"],
+ sleeptalk: ["9M", "8M"],
+ snore: ["8M"],
spite: ["9M"],
- storedpower: ["9M"],
- substitute: ["9M"],
- suckerpunch: ["9L24"],
+ storedpower: ["9M", "8M"],
+ substitute: ["9M", "8M"],
+ suckerpunch: ["9L24", "8L24"],
sweetscent: ["9L30"],
terablast: ["9M"],
- trick: ["9M"],
+ trick: ["9M", "8M"],
trickroom: ["9M"],
- willowisp: ["9M"],
- withdraw: ["9L1"],
+ willowisp: ["9M", "8M"],
+ withdraw: ["9L1", "8L1"],
+ wonderroom: ["8M"],
},
eventData: [
{generation: 8, level: 50, isHidden: true, moves: ["memento", "metronome", "aromatherapy", "celebrate"], pokeball: "cherishball"},
@@ -84212,6 +84443,64 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
wonderroom: ["8M"],
},
},
+ polteageistantique: {
+ learnset: {
+ allyswitch: ["8M"],
+ aromatherapy: ["8L30"],
+ aromaticmist: ["9L1", "8L1"],
+ astonish: ["9L1", "8L1"],
+ batonpass: ["9M", "8M"],
+ calmmind: ["9M"],
+ confuseray: ["9M"],
+ curse: ["9M", "9L66", "8L66"],
+ darkpulse: ["9M", "8M"],
+ endure: ["9M", "8M"],
+ facade: ["9M", "8M"],
+ foulplay: ["9M", "8M"],
+ gigadrain: ["9M", "9L36", "8M", "8L36"],
+ gigaimpact: ["9M", "8M"],
+ hex: ["9M", "8M"],
+ hyperbeam: ["9M", "8M"],
+ imprison: ["9M", "8M"],
+ lightscreen: ["9M", "8M"],
+ magicalleaf: ["9M"],
+ megadrain: ["9L1", "8L1"],
+ memento: ["9L54", "8L54"],
+ metronome: ["9M", "8M"],
+ nastyplot: ["9M", "9L42", "8M", "8L42"],
+ nightshade: ["9M"],
+ painsplit: ["9M"],
+ payback: ["8M"],
+ phantomforce: ["9M", "8M"],
+ poltergeist: ["9M", "8T"],
+ protect: ["9M", "9L18", "8M", "8L18"],
+ psybeam: ["9M"],
+ psychic: ["9M", "8M"],
+ psyshock: ["9M", "8M"],
+ reflect: ["9M", "8M"],
+ rest: ["9M", "8M"],
+ round: ["8M"],
+ selfdestruct: ["8M"],
+ shadowball: ["9M", "9L48", "8M", "8L48"],
+ shellsmash: ["9L60", "8L60"],
+ skillswap: ["9M"],
+ sleeptalk: ["9M", "8M"],
+ snore: ["8M"],
+ spite: ["9M"],
+ storedpower: ["9M", "8M"],
+ strengthsap: ["9L1", "8L1"],
+ substitute: ["9M", "8M"],
+ suckerpunch: ["9L24", "8L24"],
+ sweetscent: ["9L30"],
+ teatime: ["9L0", "8L0"],
+ terablast: ["9M"],
+ trick: ["9M", "8M"],
+ trickroom: ["9M"],
+ willowisp: ["9M", "8M"],
+ withdraw: ["9L1", "8L1"],
+ wonderroom: ["8M"],
+ },
+ },
hatenna: {
learnset: {
afteryou: ["9E", "8E"],
@@ -89284,7 +89573,7 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
waterpulse: ["9M"],
},
eventData: [
- {generation: 9, moves: ["bodyslam", "amnesia", "icespinner", "doubleedge"]},
+ {generation: 9, level: 50, moves: ["bodyslam", "amnesia", "icespinner", "doubleedge"]},
],
},
frigibax: {
@@ -89471,10 +89760,43 @@ export const Learnsets: import('../sim/dex-species').LearnsetDataTable = {
},
tatsugiristretchy: {
learnset: {
+ batonpass: ["9M", "9E"],
celebrate: ["9S0"],
- dracometeor: ["9S0"],
- helpinghand: ["9S0"],
- muddywater: ["9S0"],
+ chillingwater: ["9M"],
+ counter: ["9E"],
+ dracometeor: ["9M", "9S0"],
+ dragoncheer: ["9M"],
+ dragondance: ["9M"],
+ dragonpulse: ["9M", "9L52"],
+ endure: ["9M"],
+ facade: ["9M"],
+ gigaimpact: ["9M"],
+ harden: ["9L6"],
+ helpinghand: ["9M", "9L12", "9S0"],
+ hydropump: ["9M"],
+ hyperbeam: ["9M"],
+ icywind: ["9M"],
+ lunge: ["9M"],
+ memento: ["9L34"],
+ mirrorcoat: ["9L47"],
+ muddywater: ["9M", "9L39", "9S0"],
+ nastyplot: ["9M", "9L43"],
+ outrage: ["9M"],
+ protect: ["9M"],
+ raindance: ["9M"],
+ rapidspin: ["9E"],
+ rest: ["9M"],
+ sleeptalk: ["9M"],
+ soak: ["9L23"],
+ splash: ["9L1"],
+ substitute: ["9M"],
+ surf: ["9M"],
+ takedown: ["9M"],
+ taunt: ["9M", "9L28"],
+ terablast: ["9M"],
+ watergun: ["9L1"],
+ waterpulse: ["9M", "9L17"],
+ whirlpool: ["9M"],
},
eventData: [
{generation: 9, level: 50, moves: ["dracometeor", "muddywater", "helpinghand", "celebrate"], pokeball: "cherishball"},
diff --git a/data/mods/biomechmons/abilities.ts b/data/mods/biomechmons/abilities.ts
new file mode 100644
index 0000000000..62b6ffd416
--- /dev/null
+++ b/data/mods/biomechmons/abilities.ts
@@ -0,0 +1,206 @@
+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(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);
+ 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}`);
+ }
+ },
+ },
+ 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/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..8d1af87e5e
--- /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 =>
+ this.toID(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 =>
+ this.toID(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..1ab2c93520
--- /dev/null
+++ b/data/mods/biomechmons/moves.ts
@@ -0,0 +1,419 @@
+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 (this.toID(source.item) === 'sketch') {
+ source.setItem(move.name);
+ this.add('-activate', source, 'move: Sketch', move.name);
+ return;
+ } else if (this.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,
+ 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();
+ 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..199d54b805
--- /dev/null
+++ b/data/mods/biomechmons/scripts.ts
@@ -0,0 +1,584 @@
+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;
+ 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) {
+ 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.move), this.item,
+ ].map(this.battle.toID));
+
+ let isBMMAbil = false;
+ let isOldBMMAbil = false;
+ if (!this.hp) return false;
+ 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 (ability.name.length && !this.battle.dex.abilities.get(ability).exists) isBMMAbil = true;
+ if (!sourceEffect && this.battle.effect) sourceEffect = this.battle.effect;
+ let oldAbility;
+ if (this.battle.dex.abilities.get(this.ability).exists) {
+ 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);
+ } else {
+ if (!this.battle.runEvent('TakeItem', this, source, null, abil as Item)) return false;
+ }
+ oldAbility = {
+ id: this.ability,
+ name: abil.name || this.ability,
+ flags: {},
+ effectType: "Ability",
+ toString() {
+ return abil.name || this.id;
+ },
+ } as Ability;
+ isOldBMMAbil = true;
+ }
+
+ if (allThings.has(ability.id)) return false;
+
+ 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.transformed) 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 (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) {
+ 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) {
+ 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.move), this.item,
+ ].map(this.battle.toID));
+
+ let isBMMItem = false;
+ let isOldBMMItem = false;
+ if (!this.hp || !this.isActive) return false;
+ if (typeof item === 'string') {
+ if (!item.length || 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);
+ } else {
+ if ((newData as Ability).flags['failskillswap']) return false;
+ }
+ item = {
+ id: newData.id || itemString,
+ name: newData.name || itemString,
+ effectType: "Item",
+ toString() {
+ return newData.name || itemString;
+ },
+ } as Item;
+ }
+ }
+ if (item.name.length && !this.battle.dex.items.get(item).exists) isBMMItem = true;
+ if (allThings.has(item.id)) return false;
+ const effectid = this.battle.effect ? this.battle.effect.id : '';
+ if (RESTORATIVE_BERRIES.has('leppaberry' as ID)) {
+ 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) {
+ 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);
+ if (itemIndex >= 0) this.m.scrambled.items.splice(itemIndex, 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) {
+ 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);
+ if (itemIndex >= 0) this.m.scrambled.items.splice(itemIndex, 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;
+ },
+ },
+};
diff --git a/data/mods/chatbats/abilities.ts b/data/mods/chatbats/abilities.ts
index 5735325348..e2039820ce 100644
--- a/data/mods/chatbats/abilities.ts
+++ b/data/mods/chatbats/abilities.ts
@@ -953,4 +953,41 @@ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTa
},
shortDesc: "This Pokemon can poison a Pokemon regardless of its typing and hit them with Poison moves.",
},
+ jellobody: {
+ onTryHit(pokemon, target, move) {
+ if (move.selfSwitch) {
+ this.add('-immune', pokemon, '[from] ability: Jello Body');
+ this.heal(target.baseMaxhp / 2);
+ return null;
+ }
+ },
+ onModifyMove(move, source, target) {
+ move.drain = [1, 2];
+ },
+ flags: { breakable: 1 },
+ name: "Jello Body",
+ rating: 5,
+ num: -122,
+ shortDesc: "Immune to pivot moves, heals 50% HP when hit by one. All moves drain 50%.",
+ },
+ nibblenibble: {
+ onPrepareHit(source, target, move) {
+ if (move.category === 'Status' || move.multihit || move.flags['noparentalbond'] || move.flags['charge'] ||
+ move.flags['futuremove'] || move.spreadHit || move.isZ || move.isMax || !move.flags['bite']) return;
+ move.multihit = 2;
+ move.multihitType = 'parentalbond';
+ },
+ // Damage modifier implemented in BattleActions#modifyDamage()
+ onSourceModifySecondaries(secondaries, target, source, move) {
+ if (move.multihitType === 'parentalbond' && move.id === 'secretpower' && move.hit < 2) {
+ // hack to prevent accidentally suppressing King's Rock/Razor Fang
+ return secondaries.filter(effect => effect.volatileStatus === 'flinch');
+ }
+ },
+ flags: {},
+ name: "Nibble Nibble",
+ rating: 5,
+ num: -123,
+ shortDesc: "Parental Bond but for Bite moves.",
+ },
};
diff --git a/data/mods/chatbats/items.ts b/data/mods/chatbats/items.ts
index d665b92d55..a88b72957d 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,
@@ -127,14 +123,28 @@ export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
},
onDamagePriority: -40,
onDamage(damage, target, source, effect) {
- const chance = Math.max(Math.floor(target.hp / target.maxhp), 10);
+ const chance = Math.max(Math.floor(100 - (target.maxhp - target.hp)), 10);
if (this.randomChance(chance, 100) && damage >= target.hp && effect && effect.effectType === 'Move') {
this.add("-activate", target, "item: Focus Band");
return target.hp - 1;
+ } else {
+ return damage;
}
},
num: 230,
gen: 2,
desc: "Chance to survive attack equal to percentage of remaining HP, minimum 10%.",
},
+ raticite: {
+ name: "Raticite",
+ spritenum: 1,
+ megaStone: { "Raticate": "Raticate-Mega" },
+ itemUser: ["Raticate"],
+ onTakeItem(item, source) {
+ return !item.megaStone?.[source.baseSpecies.baseSpecies];
+ },
+ num: -3,
+ gen: 9,
+ desc: "If held by a Raticate, this item allows it to Mega Evolve in battle.",
+ },
};
diff --git a/data/mods/chatbats/moves.ts b/data/mods/chatbats/moves.ts
index a0b49c8ed8..ba238506fb 100644
--- a/data/mods/chatbats/moves.ts
+++ b/data/mods/chatbats/moves.ts
@@ -1311,10 +1311,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
this.add('-fail', source, 'move: Crowverload');
return this.NOT_FAIL;
}
- if (source.hp <= source.maxhp / 4) {
- this.add('-fail', source, 'move: Substitute', '[weak]');
- return this.NOT_FAIL;
- }
},
onAfterMove(source, target, move) {
this.actions.useMove('substitute', source, { });
@@ -1532,16 +1528,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
return false;
}
},
- onTryHeal(damage, target, source, effect) {
- if (effect && (effect.id === 'zpower' || (effect as Move).isZ)) return damage;
- if (source && target !== source && target.hp !== target.maxhp && effect.name === "Pollen Puff") {
- this.attrLastMove('[still]');
- // FIXME: Wrong error message, correct one not supported yet
- this.add('cant', source, 'move: Electric Terrain', effect);
- return null;
- }
- return false;
- },
onFieldResidualOrder: 27,
onFieldResidualSubOrder: 7,
onFieldEnd() {
@@ -1635,6 +1621,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
target: "normal",
type: "Normal",
contestType: "Cute",
+ shortDesc: "Present but better.",
},
sinisterarrows: {
num: -1016,
@@ -1712,9 +1699,54 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
target: "normal",
type: "Ghost",
contestType: "Clever",
+ shortDesc: "Hits for 4 turns, even if user switches out.",
},
mortalspin: {
inherit: true,
category: "Special",
},
+ lastbreakfast: {
+ num: -1020,
+ accuracy: 100,
+ basePower: 80,
+ category: "Physical",
+ name: "Last Breakfast",
+ pp: 15,
+ priority: 0,
+ flags: { protect: 1, mirror: 1, metronome: 1, contact: 1, bite: 1 },
+ onHit(target, source, move) {
+ const numberBerries = 0 + 1 * Number(source.side.totalFainted);
+ for (let i = 0; i < numberBerries; i++) {
+ const possibleBerries = ['aguavberry', 'apicotberry', 'enigmaberry', 'figyberry', 'ganlonberry', 'iapapaberry',
+ 'keeberry', 'lansatberry', 'leppaberry', 'liechiberry', 'lumberry', 'magoberry',
+ 'marangaberry', 'micleberry',
+ 'oranberry', 'petayaberry', 'salacberry', 'sitrusberry', 'starfberry', 'wikiberry',
+ 'aspearberry', 'cheriberry', 'chestoberry', 'lumberry', 'pechaberry', 'rawstberry', 'persimberry'];
+ const chosenBerry = this.sample(possibleBerries);
+ const berry = this.dex.items.get(chosenBerry);
+ if (source.hp && berry.isBerry) {
+ if (this.singleEvent('Eat', berry, null, source, source, move)) {
+ this.runEvent('EatItem', source, source, move, berry);
+ }
+ if (berry.onEat) source.ateBerry = true;
+ }
+ }
+ },
+ onTryMove() {
+ this.attrLastMove('[still]');
+ },
+ onPrepareHit(target, source) {
+ this.add('-anim', source, 'Curse', target);
+ this.add('-anim', source, 'Bug Bite', target);
+ },
+ secondary: null,
+ target: "normal",
+ type: "Ghost",
+ contestType: "Cute",
+ shortDesc: "Eats X random berries, where X is fainted teammates.",
+ },
+ superfang: {
+ inherit: true,
+ flags: { contact: 1, protect: 1, mirror: 1, metronome: 1, bite: 1 },
+ },
};
diff --git a/data/mods/chatbats/pokedex.ts b/data/mods/chatbats/pokedex.ts
index 05bb622cb6..6d4f878feb 100644
--- a/data/mods/chatbats/pokedex.ts
+++ b/data/mods/chatbats/pokedex.ts
@@ -482,10 +482,33 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable
ogerponcornerstone: {
inherit: true,
abilities: { 0: "Solid Rock" },
- types: ["Psychic", "Normal"],
},
glimmora: {
inherit: true,
abilities: { 0: "Corrosion" },
},
+ wobbuffet: {
+ inherit: true,
+ abilities: { 0: "Jello Body" },
+ },
+ raticate: {
+ inherit: true,
+ abilities: { 0: "Hustle" },
+ baseStats: { hp: 90, atk: 81, def: 60, spa: 50, spd: 70, spe: 97 },
+ },
+ raticatemega: {
+ num: -977,
+ name: "Raticate-Mega",
+ baseSpecies: "Raticate",
+ forme: "Mega",
+ types: ["Normal", "Ghost"],
+ genderRatio: { M: 0.5, F: 0.5 },
+ baseStats: { hp: 90, atk: 105, def: 60, spa: 50, spd: 70, spe: 173 },
+ abilities: { 0: "Nibble Nibble" },
+ heightm: 0.7,
+ weightkg: 5,
+ color: "Black",
+ eggGroups: ["Field"],
+ requiredItem: "Raticite",
+ },
};
diff --git a/data/mods/chatbats/scripts.ts b/data/mods/chatbats/scripts.ts
index aec77f7f88..207d563386 100644
--- a/data/mods/chatbats/scripts.ts
+++ b/data/mods/chatbats/scripts.ts
@@ -294,5 +294,11 @@ export const Scripts: ModdedBattleScriptsData = {
this.modData('Learnsets', 'glimmora').learnset.icebeam = ['9L1'];
this.modData('Learnsets', 'glimmora').learnset.malignantchain = ['9L1'];
+
+ this.modData('Learnsets', 'wobbuffet').learnset.nightshade = ['9L1'];
+ this.modData('Learnsets', 'wobbuffet').learnset.guillotine = ['9L1'];
+ this.modData('Learnsets', 'wobbuffet').learnset.shedtail = ['9L1'];
+
+ this.modData('Learnsets', 'raticate').learnset.lastbreakfast = ['9L1'];
},
};
diff --git a/data/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",
diff --git a/data/mods/gen1/moves.ts b/data/mods/gen1/moves.ts
index ba21a2506c..a219633070 100644
--- a/data/mods/gen1/moves.ts
+++ b/data/mods/gen1/moves.ts
@@ -458,6 +458,22 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
target: "self",
type: "Psychic",
},
+ metronome: {
+ inherit: true,
+ onHit(pokemon) {
+ const moves = this.dex.moves.all().filter(move => (
+ (!move.isNonstandard || move.isNonstandard === 'Unobtainable') && move.flags['metronome']
+ ));
+ let randomMove = '';
+ if (moves.length) {
+ moves.sort((a, b) => a.num - b.num);
+ randomMove = this.sample(moves).id;
+ }
+ if (!randomMove) return false;
+ pokemon.side.lastSelectedMove = this.toID(randomMove);
+ this.actions.useMove(randomMove, pokemon);
+ },
+ },
mimic: {
inherit: true,
flags: { protect: 1, bypasssub: 1, metronome: 1 },
diff --git a/data/mods/gen1/scripts.ts b/data/mods/gen1/scripts.ts
index 118b5ac213..7aa7786f21 100644
--- a/data/mods/gen1/scripts.ts
+++ b/data/mods/gen1/scripts.ts
@@ -25,6 +25,25 @@ export const Scripts: ModdedBattleScriptsData = {
// BattlePokemon scripts.
pokemon: {
inherit: true,
+ // In gen 1, a Pokémon can have two instances of the same move using Mimic
+ // we need to make sure to deduct PP from a move that has PP left
+ deductPP(move, amount, target) {
+ move = this.battle.dex.moves.get(move);
+ // first loop: get the first instance with PP left
+ // second loop: get the first instance, even if it has no PP left
+ for (let i = 0; i < 2; i++) {
+ for (const ppData of this.moveSlots) {
+ if (ppData.id !== move.id) continue;
+ ppData.used = true;
+ if (!ppData.pp && i === 0) continue;
+
+ if (!amount) amount = 1;
+ ppData.pp -= amount;
+ return amount;
+ }
+ }
+ return 0;
+ },
getStat(statName, unmodified) {
// @ts-expect-error type checking prevents 'hp' from being passed, but we're paranoid
if (statName === 'hp') throw new Error("Please read `maxhp` directly");
diff --git a/data/mods/gen2/formats-data.ts b/data/mods/gen2/formats-data.ts
index 29b2258e86..c0618e54e9 100644
--- a/data/mods/gen2/formats-data.ts
+++ b/data/mods/gen2/formats-data.ts
@@ -12,7 +12,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
charmeleon: {
- tier: "ZU",
+ tier: "ZUBL",
},
charizard: {
tier: "UUBL",
@@ -57,7 +57,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
raticate: {
- tier: "NU",
+ tier: "PU",
},
spearow: {
tier: "LC",
@@ -69,7 +69,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
arbok: {
- tier: "NU",
+ tier: "PU",
},
pichu: {
tier: "LC",
@@ -267,7 +267,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "UU",
},
farfetchd: {
- tier: "NU",
+ tier: "PU",
},
doduo: {
tier: "ZU",
@@ -345,10 +345,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "NU",
},
hitmonchan: {
- tier: "PUBL",
+ tier: "PU",
},
hitmontop: {
- tier: "PU",
+ tier: "NU",
},
lickitung: {
tier: "NU",
@@ -540,7 +540,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
furret: {
- tier: "PUBL",
+ tier: "PU",
},
hoothoot: {
tier: "LC",
@@ -558,7 +558,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
ariados: {
- tier: "ZU",
+ tier: "ZUBL",
},
chinchou: {
tier: "NU",
@@ -591,7 +591,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
azumarill: {
- tier: "NU",
+ tier: "PU",
},
sudowoodo: {
tier: "NU",
@@ -645,7 +645,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "OU",
},
dunsparce: {
- tier: "NU",
+ tier: "PU",
},
gligar: {
tier: "UU",
@@ -705,7 +705,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "OU",
},
houndour: {
- tier: "NU",
+ tier: "PU",
},
houndoom: {
tier: "UUBL",
diff --git a/data/mods/gen2/moves.ts b/data/mods/gen2/moves.ts
index 1aadb96470..a93ee5c525 100644
--- a/data/mods/gen2/moves.ts
+++ b/data/mods/gen2/moves.ts
@@ -573,6 +573,15 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
},
pursuit: {
inherit: true,
+ beforeTurnCallback(pokemon, target) {
+ if (pokemon.isAlly(target)) return;
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
+ if (!data.sources) {
+ data.sources = [];
+ }
+ data.sources.push(pokemon);
+ },
onModifyMove() {},
condition: {
duration: 1,
diff --git a/data/mods/gen3/formats-data.ts b/data/mods/gen3/formats-data.ts
index d56a3693da..e87cfe3add 100644
--- a/data/mods/gen3/formats-data.ts
+++ b/data/mods/gen3/formats-data.ts
@@ -63,7 +63,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
fearow: {
- tier: "UU",
+ tier: "RUBL",
},
ekans: {
tier: "LC",
@@ -312,7 +312,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "ZU",
},
hypno: {
- tier: "UU",
+ tier: "RU",
},
krabby: {
tier: "LC",
@@ -930,7 +930,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
manectric: {
- tier: "UU",
+ tier: "RU",
},
plusle: {
tier: "NU",
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({
diff --git a/data/mods/gen3/moves.ts b/data/mods/gen3/moves.ts
index 9764e11df8..191b050808 100644
--- a/data/mods/gen3/moves.ts
+++ b/data/mods/gen3/moves.ts
@@ -578,6 +578,20 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
inherit: true,
basePower: 70,
},
+ pursuit: {
+ inherit: true,
+ beforeTurnCallback(pokemon, target) {
+ if (['frz', 'slp'].includes(pokemon.status) ||
+ (pokemon.hasAbility('truant') && pokemon.truantTurn)) return;
+ if (pokemon.isAlly(target)) return;
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
+ if (!data.sources) {
+ data.sources = [];
+ }
+ data.sources.push(pokemon);
+ },
+ },
recover: {
inherit: true,
pp: 20,
diff --git a/data/mods/gen3rs/learnsets.ts b/data/mods/gen3rs/learnsets.ts
index c5ff608de7..5176921faa 100644
--- a/data/mods/gen3rs/learnsets.ts
+++ b/data/mods/gen3rs/learnsets.ts
@@ -4356,6 +4356,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab
toxic: ["3M"],
uproar: ["3E"],
waterpulse: ["3M"],
+ wish: ["3E"],
},
},
delcatty: {
@@ -4813,6 +4814,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab
thunderbolt: ["3M"],
thunderwave: ["3L4"],
toxic: ["3M"],
+ wish: ["3E"],
},
},
minun: {
@@ -4846,6 +4848,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab
thunderbolt: ["3M"],
thunderwave: ["3L4"],
toxic: ["3M"],
+ wish: ["3E"],
},
},
volbeat: {
@@ -5462,6 +5465,7 @@ export const Learnsets: import('../../../sim/dex-species').ModdedLearnsetDataTab
trick: ["3E"],
uproar: ["3L5"],
waterpulse: ["3M"],
+ wish: ["3E"],
},
},
trapinch: {
diff --git a/data/mods/gen4/moves.ts b/data/mods/gen4/moves.ts
index d6ad9cf3c5..848090153c 100644
--- a/data/mods/gen4/moves.ts
+++ b/data/mods/gen4/moves.ts
@@ -1087,9 +1087,8 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
flags: { noassist: 1, failcopycat: 1, nosleeptalk: 1, failmimic: 1 },
onHit(pokemon) {
const moves = this.dex.moves.all().filter(move => (
- (![2, 4].includes(this.gen) || !pokemon.moves.includes(move.id)) &&
+ move.flags['metronome'] && !pokemon.moves.includes(move.id) &&
(!move.isNonstandard || move.isNonstandard === 'Unobtainable') &&
- move.flags['metronome'] &&
!(this.field.pseudoWeather['gravity'] && move.flags['gravity']) &&
!(pokemon.volatiles['healblock'] && move.flags['heal'])
));
@@ -1332,6 +1331,18 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
},
pursuit: {
inherit: true,
+ beforeTurnCallback(pokemon) {
+ if (['frz', 'slp'].includes(pokemon.status) ||
+ (pokemon.hasAbility('truant') && pokemon.volatiles['truant'])) return;
+ for (const target of pokemon.foes()) {
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
+ if (!data.sources) {
+ data.sources = [];
+ }
+ data.sources.push(pokemon);
+ }
+ },
condition: {
duration: 1,
onBeforeSwitchOut(pokemon) {
@@ -1354,7 +1365,12 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
}
}
}
- this.actions.runMove('pursuit', source, source.getLocOf(pokemon));
+ const move = this.dex.getActiveMove('pursuit');
+ source.deductPP(move.id);
+ source.moveUsed(move, pokemon.position);
+ if (this.actions.useMove(move, source, { target: pokemon }) && source.getItem().isChoice) {
+ source.addVolatile('choicelock');
+ }
}
},
},
@@ -1538,19 +1554,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
this.add('-activate', source, 'move: Mimic', move.name);
},
},
- skillswap: {
- inherit: true,
- onHit(target, source) {
- const targetAbility = target.ability;
- const sourceAbility = source.ability;
- if (targetAbility === sourceAbility || source.hasItem('griseousorb') || target.hasItem('griseousorb')) {
- return false;
- }
- this.add('-activate', source, 'move: Skill Swap');
- source.setAbility(targetAbility);
- target.setAbility(sourceAbility);
- },
- },
sleeptalk: {
inherit: true,
onTryHit(pokemon) {
diff --git a/data/mods/gen4/scripts.ts b/data/mods/gen4/scripts.ts
index 67f54d423d..b73128e018 100644
--- a/data/mods/gen4/scripts.ts
+++ b/data/mods/gen4/scripts.ts
@@ -55,10 +55,6 @@ export const Scripts: ModdedBattleScriptsData = {
// Weather
baseDamage = this.battle.runEvent('WeatherModifyDamage', pokemon, target, move, baseDamage);
- if (this.battle.gen === 3 && move.category === 'Physical' && !Math.floor(baseDamage)) {
- baseDamage = 1;
- }
-
baseDamage += 2;
const isCrit = target.getMoveHitData(move).crit;
diff --git a/data/mods/gen5/moves.ts b/data/mods/gen5/moves.ts
index ab4cc6060f..4328d70e1e 100644
--- a/data/mods/gen5/moves.ts
+++ b/data/mods/gen5/moves.ts
@@ -794,19 +794,6 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
inherit: true,
flags: { protect: 1, reflectable: 1, mirror: 1, sound: 1, metronome: 1 },
},
- skillswap: {
- inherit: true,
- onHit(target, source) {
- const targetAbility = target.ability;
- const sourceAbility = source.ability;
- if (targetAbility === sourceAbility) {
- return false;
- }
- this.add('-activate', source, 'move: Skill Swap', this.dex.abilities.get(targetAbility), this.dex.abilities.get(sourceAbility), `[of] ${target}`);
- source.setAbility(targetAbility);
- target.setAbility(sourceAbility);
- },
- },
skullbash: {
inherit: true,
basePower: 100,
diff --git a/data/mods/gen6/formats-data.ts b/data/mods/gen6/formats-data.ts
index 75ebb0da61..ae2091be52 100644
--- a/data/mods/gen6/formats-data.ts
+++ b/data/mods/gen6/formats-data.ts
@@ -1678,7 +1678,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
doublesTier: "DUber",
},
jirachi: {
- tier: "OU",
+ tier: "(OU)",
doublesTier: "DUber",
},
deoxys: {
diff --git a/data/mods/gen6megasrevisited/abilities.ts b/data/mods/gen6megasrevisited/abilities.ts
new file mode 100644
index 0000000000..037690e30b
--- /dev/null
+++ b/data/mods/gen6megasrevisited/abilities.ts
@@ -0,0 +1,369 @@
+export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = {
+ merciless: {
+ shortDesc: "This Pokemon's attacks are critical hits if the target is statused.",
+ onModifyCritRatio(critRatio, source, target) {
+ if (target?.status) return 5;
+ },
+ name: "Merciless",
+ rating: 1.5,
+ num: 196,
+ gen: 6,
+ },
+ pocketdimension: {
+ shortDesc: "This Pokemon switches out after using a status move.",
+ onModifyMove(move, pokemon) {
+ if (move.category === 'Status') {
+ move.selfSwitch = true;
+ this.add('-ability', pokemon, 'Pocket Dimension');
+ this.add('-message', `${pokemon.name} will switch out if this moves lands!`);
+ }
+ },
+ name: "Pocket Dimension",
+ rating: 4.5,
+ },
+ grassysurge: {
+ inherit: true,
+ gen: 6,
+ },
+ mistysurge: {
+ inherit: true,
+ gen: 6,
+ },
+ neutralizinggas: {
+ inherit: true,
+ // Ability suppression cancelled in scripts.ts
+ // new Ability suppression implemented in scripts.ts
+ onSwitchIn(pokemon) {},
+ onEnd(source) {},
+ onStart(pokemon) {
+ this.add('-ability', pokemon, 'Neutralizing Gas');
+ },
+ // onModifyPriority implemented in relevant abilities
+ onFoeBeforeMovePriority: 13,
+ onFoeBeforeMove(attacker, defender, move) {
+ attacker.addVolatile('neutralizinggas');
+ },
+ condition: {
+ onAfterMove(pokemon) {
+ pokemon.removeVolatile('neutralizinggas');
+ },
+ },
+ flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 },
+ desc: "While this Pokemon is active, opposing Pokemon's moves and their effects ignore its own Ability. Does not affect the As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, or Zen Mode Abilities.",
+ shortDesc: "While this Pokemon is active, opposing Pokemon's Ability has no effect when it uses moves.",
+ gen: 6,
+ },
+ nostalgiatrip: {
+ shortDesc: "This Pokemon's moves have the damage categories they would have in Gen 3. Fairy-type moves are Special.",
+ onStart(pokemon) {
+ this.add('-ability', pokemon, 'Nostalgia Trip');
+ this.add('-message', `This Pokemon is experiencing a nostalgia trip!`);
+ },
+ onModifyMovePriority: 8,
+ onModifyMove(move, pokemon) {
+ if (move.category === "Status") return;
+ if (['Fire', 'Water', 'Grass', 'Electric', 'Dark', 'Psychic', 'Dragon', 'Fairy', 'Ice'].includes(move.type)) {
+ move.category = "Special";
+ } else {
+ move.category = "Physical";
+ }
+ },
+ name: "Nostalgia Trip",
+ rating: 4,
+ gen: 6,
+ },
+ weatherreport: {
+ onBeforeMovePriority: 0.5,
+ onBeforeMove(target, source, move) {
+ if (move.type === 'Fire') {
+ this.field.setWeather('sunnyday');
+ } else if (move.type === 'Water') {
+ this.field.setWeather('raindance');
+ }
+ },
+ name: "Weather Report",
+ shortDesc: "Before using a Water or Fire-type move, this Pokemon sets Rain Dance or Sunny Day respectively.",
+ rating: 4,
+ gen: 6,
+ },
+ armortail: {
+ inherit: true,
+ gen: 6,
+ },
+ brainpower: {
+ onModifySpAPriority: 5,
+ onModifySpA(spa) {
+ return this.chainModify(2);
+ },
+ name: "Brain Power",
+ shortDesc: "This Pokemon's Special Attack is doubled.",
+ rating: 5,
+ },
+ neuroforce: {
+ inherit: true,
+ gen: 6,
+ },
+ bugzapper: {
+ onTryHit(target, source, move) {
+ if (target !== source && move.type === 'Bug') {
+ if (!source.addVolatile('trapped', target, move, 'trapper')) {
+ this.add('-immune', target, '[from] ability: Bug Zapper');
+ }
+ return null;
+ }
+ },
+ name: "Bug Zapper",
+ shortDesc: "This Pokemon is immune to Bug-type moves and traps the foe if hit by one.",
+ rating: 5,
+ },
+ exoskeleton: {
+ onSourceModifyDamage(damage, source, target, move) {
+ if (move.category === 'Physical') {
+ return this.chainModify(0.5);
+ }
+ },
+ name: "Exoskeleton",
+ shortDesc: "This Pokemon receives 1/2 damage from physical attacks; Hazard immunity.",
+ rating: 4,
+ },
+ icescales: {
+ inherit: true,
+ onModifyAtkPriority: 5,
+ onModifyAtk(atk, attacker, defender, move) {
+ if (move.type === 'Ice') {
+ this.debug('Ice Scales boost');
+ return this.chainModify(1.5);
+ }
+ },
+ onModifySpAPriority: 5,
+ onModifySpA(atk, attacker, defender, move) {
+ if (move.type === 'Ice') {
+ this.debug('Ice Scales boost');
+ return this.chainModify(1.5);
+ }
+ },
+ onImmunity(type, pokemon) {
+ if (type === 'hail') return false;
+ },
+ shortDesc: "This Pokemon receives 1/2 damage from special attacks. Ice moves have 1.5x power. Hail immunity.",
+ gen: 6,
+ },
+ eartheater: {
+ inherit: true,
+ onDamage(damage, target, source, effect) {
+ if (effect && (effect.id === 'stealthrock' || effect.id === 'spikes')) {
+ this.heal(damage);
+ return false;
+ }
+ },
+ shortDesc: "Heals 1/4 of its max HP when hit by Ground; Ground immunity. Healed by Spikes and Stealth Rock.",
+ gen: 6,
+ },
+ toxicchain: {
+ inherit: true,
+ gen: 6,
+ },
+ shellejection: {
+ onModifyMovePriority: -1,
+ onModifyMove(move, attacker) {
+ if (move.category === 'Special') {
+ attacker.addVolatile('shellejection');
+ this.add('-ability', attacker, 'Shell Ejection');
+ this.add('-message', `${attacker.name} is getting ready to leave the battlefield!`);
+ this.add('-message', `${attacker.name} can no longer use status moves!`);
+ }
+ },
+ condition: {
+ duration: 2,
+ onDisableMove(pokemon) {
+ for (const moveSlot of pokemon.moveSlots) {
+ const move = this.dex.moves.get(moveSlot.id);
+ if (move.category === 'Status' && move.id !== 'mefirst') {
+ pokemon.disableMove(moveSlot.id);
+ }
+ }
+ },
+ onSwitchOut(pokemon) {
+ pokemon.heal(pokemon.baseMaxhp / 3);
+ },
+ onEnd(pokemon) {
+ this.add('-ability', pokemon, 'Shell Ejection');
+ this.add('-message', `${pokemon.name} ejected itself from its shell!`);
+ pokemon.heal(pokemon.baseMaxhp / 3);
+ pokemon.switchFlag = true;
+ },
+ },
+ name: "Shell Ejection",
+ rating: 3.5,
+ gen: 6,
+ shortDesc: "On using Special move: switching heals 1/3, can't use status, switches out at end of next turn.",
+ },
+ sharpness: {
+ inherit: true,
+ gen: 6,
+ },
+ dauntlessshield: {
+ onStart(pokemon) {
+ this.boost({ def: 1 }, pokemon);
+ pokemon.addVolatile('dauntlessshield');
+ },
+ onResidualOrder: 6,
+ onResidual(pokemon) {
+ if (pokemon.positiveBoosts()) {
+ this.heal(pokemon.baseMaxhp / 16);
+ this.add('-message', `${pokemon.name}'s shield gives it strength!`);
+ }
+ },
+ name: "Dauntless Shield",
+ rating: 5,
+ num: 235,
+ shortDesc: "+1 Defense on switch-in. Heals 1/16 of max HP if it has a positive boost.",
+ gen: 6,
+ },
+ confidence: {
+ onSourceAfterFaint(length, target, source, effect) {
+ if (effect && effect.effectType === 'Move') {
+ this.boost({ spa: length }, source);
+ }
+ },
+ name: "Confidence",
+ rating: 3,
+ shortDesc: "This Pokemon's Sp. Atk is raised by 1 stage if it attacks and KOes another Pokemon.",
+ gen: 6,
+ },
+ electricsurge: {
+ inherit: true,
+ gen: 6,
+ },
+ goodasgold: {
+ inherit: true,
+ gen: 6,
+ },
+ opportunist: {
+ inherit: true,
+ onUpdate(pokemon) {
+ let activate = false;
+ const boosts: SparseBoostsTable = {};
+ let i: BoostID;
+ for (i in pokemon.boosts) {
+ if (pokemon.boosts[i] < 0) {
+ activate = true;
+ boosts[i] = 0;
+ }
+ }
+ if (this.effectState.herb) return;
+ if (activate) {
+ pokemon.setBoost(boosts);
+ this.effectState.herb = true;
+ this.add('-ability', pokemon, 'Opportunist');
+ this.add('-clearnegativeboost', pokemon, '[silent]');
+ }
+ },
+ onSwitchIn(pokemon) {
+ delete this.effectState.herb;
+ },
+ shortDesc: "Copies foe's stat gains as they happen. Resets negative stat changes once per switch-in.",
+ gen: 6,
+ },
+ intoxicate: {
+ onModifyTypePriority: -1,
+ onModifyType(move, pokemon) {
+ const noModifyType = [
+ 'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',
+ ];
+ if (move.type === 'Normal' && !noModifyType.includes(move.id) &&
+ !(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {
+ move.type = 'Poison';
+ move.typeChangerBoosted = this.effect;
+ }
+ },
+ onBasePowerPriority: 23,
+ onBasePower(basePower, pokemon, target, move) {
+ if (move.typeChangerBoosted) return this.chainModify([5325, 4096]);
+ },
+ name: "Intoxicate",
+ rating: 4,
+ shortDesc: "This Pokemon's Normal-type moves become Poison-type and have 1.3x power.",
+ },
+ dragonsgale: {
+ onStart(source) {
+ this.field.setWeather('deltastream');
+ },
+ onAnySetWeather(target, source, weather) {
+ const strongWeathers = ['desolateland', 'primordialsea', 'deltastream'];
+ if (this.field.getWeather().id === 'deltastream' && !strongWeathers.includes(weather.id)) return false;
+ },
+ onEnd(pokemon) {
+ if (this.field.weatherState.source !== pokemon) return;
+ for (const target of this.getAllActive()) {
+ if (target === pokemon) continue;
+ if (target.hasAbility('dragonsgale')) {
+ this.field.weatherState.source = target;
+ return;
+ }
+ }
+ this.field.clearWeather();
+ },
+ onDamage(damage, target, source, effect) {
+ if (effect && (effect.id === 'stealthrock' || effect.id === 'spikes')) {
+ return damage / 2;
+ }
+ },
+ flags: {},
+ name: "Dragon's Gale",
+ shortDesc: "On switch-in, sets Delta Stream. User takes halved damage from hazards.",
+ rating: 5,
+ },
+ parentalbond: {
+ onPrepareHit(source, target, move) {
+ if (move.category === 'Status' || move.selfdestruct || move.multihit) return;
+ if ([
+ 'endeavor', 'seismictoss', 'psywave', 'nightshade', 'sonicboom', 'dragonrage',
+ 'superfang', 'naturesmadness', 'bide', 'counter', 'mirrorcoat', 'metalburst',
+ ].includes(move.id)) return;
+ if (!move.spreadHit && !move.isZ && !move.isMax) {
+ move.multihit = 2;
+ move.multihitType = 'parentalbond';
+ }
+ },
+ onSourceModifySecondaries(secondaries, target, source, move) {
+ if (move.multihitType === 'parentalbond' && move.id === 'secretpower' && move.hit < 2) {
+ // hack to prevent accidentally suppressing King's Rock/Razor Fang
+ return secondaries.filter(effect => effect.volatileStatus === 'flinch');
+ }
+ },
+ name: "Parental Bond",
+ rating: 4.5,
+ shortDesc: "This Pokemon's damaging moves hit twice. The second hit has its damage quartered.",
+ num: 184,
+ },
+
+ // for ngas
+ galewings: {
+ // for ngas
+ inherit: true,
+ onModifyPriority(priority, pokemon, target, move) {
+ for (const poke of this.getAllActive()) {
+ if (poke.hasAbility('neutralizinggas') && poke.side.id !== pokemon.side.id && !poke.abilityState.ending) {
+ return;
+ }
+ }
+ if (move && move.type === 'Flying') return priority + 1;
+ },
+ },
+ prankster: {
+ // for ngas
+ inherit: true,
+ onModifyPriority(priority, pokemon, target, move) {
+ for (const poke of this.getAllActive()) {
+ if (poke.hasAbility('neutralizinggas') && poke.side.id !== pokemon.side.id && !poke.abilityState.ending) {
+ return;
+ }
+ }
+ if (move?.category === 'Status') {
+ move.pranksterBoosted = true;
+ return priority + 1;
+ }
+ },
+ },
+};
diff --git a/data/mods/gen6megasrevisited/formats-data.ts b/data/mods/gen6megasrevisited/formats-data.ts
new file mode 100644
index 0000000000..a5d97dda38
--- /dev/null
+++ b/data/mods/gen6megasrevisited/formats-data.ts
@@ -0,0 +1,26 @@
+export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormatsDataTable = {
+ blaziken: {
+ tier: "OU",
+ },
+ blazikenmega: {
+ tier: "OU",
+ },
+ gengarmega: {
+ tier: "OU",
+ },
+ kangaskhanmega: {
+ tier: "OU",
+ },
+ lucariomega: {
+ tier: "OU",
+ },
+ mawilemega: {
+ tier: "OU",
+ },
+ sableyemega: {
+ tier: "OU",
+ },
+ salamencemega: {
+ tier: "OU",
+ },
+};
diff --git a/data/mods/gen6megasrevisited/items.ts b/data/mods/gen6megasrevisited/items.ts
new file mode 100644
index 0000000000..90f2c22c71
--- /dev/null
+++ b/data/mods/gen6megasrevisited/items.ts
@@ -0,0 +1,12 @@
+export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
+ meteorite: {
+ name: "Meteorite",
+ spritenum: 615,
+ megaStone: { "Rayquaza": "Rayquaza-Mega" },
+ itemUser: ["Rayquaza"],
+ onTakeItem(item, source) {
+ return !item.megaStone?.[source.baseSpecies.baseSpecies];
+ },
+ desc: "If held by a Rayquaza, this item allows it to Mega Evolve in battle.",
+ },
+};
diff --git a/data/mods/gen6megasrevisited/moves.ts b/data/mods/gen6megasrevisited/moves.ts
new file mode 100644
index 0000000000..b8e3a95b36
--- /dev/null
+++ b/data/mods/gen6megasrevisited/moves.ts
@@ -0,0 +1,77 @@
+export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
+ stealthrock: {
+ inherit: true,
+ condition: {
+ // this is a side condition
+ onSideStart(side) {
+ this.add('-sidestart', side, 'move: Stealth Rock');
+ },
+ onSwitchIn(pokemon) {
+ if (pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) return;
+ const typeMod = this.clampIntRange(pokemon.runEffectiveness(this.dex.getActiveMove('stealthrock')), -6, 6);
+ this.damage(pokemon.maxhp * (2 ** typeMod) / 8);
+ },
+ },
+ },
+ toxicspikes: {
+ inherit: true,
+ condition: {
+ // this is a side condition
+ onSideStart(side) {
+ this.add('-sidestart', side, 'move: Toxic Spikes');
+ this.effectState.layers = 1;
+ },
+ onSideRestart(side) {
+ if (this.effectState.layers >= 2) return false;
+ this.add('-sidestart', side, 'move: Toxic Spikes');
+ this.effectState.layers++;
+ },
+ onSwitchIn(pokemon) {
+ if (!pokemon.isGrounded()) return;
+ if (pokemon.hasType('Poison')) {
+ this.add('-sideend', pokemon.side, 'move: Toxic Spikes', `[of] ${pokemon}`);
+ pokemon.side.removeSideCondition('toxicspikes');
+ } else if (pokemon.hasType('Steel') || pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) {
+ // do nothing
+ } else if (this.effectState.layers >= 2) {
+ pokemon.trySetStatus('tox', pokemon.side.foe.active[0]);
+ } else {
+ pokemon.trySetStatus('psn', pokemon.side.foe.active[0]);
+ }
+ },
+ },
+ },
+ spikes: {
+ inherit: true,
+ condition: {
+ // this is a side condition
+ onSideStart(side) {
+ this.add('-sidestart', side, 'Spikes');
+ this.effectState.layers = 1;
+ },
+ onSideRestart(side) {
+ if (this.effectState.layers >= 3) return false;
+ this.add('-sidestart', side, 'Spikes');
+ this.effectState.layers++;
+ },
+ onSwitchIn(pokemon) {
+ if (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) return;
+ const damageAmounts = [0, 3, 4, 6]; // 1/8, 1/6, 1/4
+ this.damage(damageAmounts[this.effectState.layers] * pokemon.maxhp / 24);
+ },
+ },
+ },
+ stickyweb: {
+ inherit: true,
+ condition: {
+ onSideStart(side) {
+ this.add('-sidestart', side, 'move: Sticky Web');
+ },
+ onSwitchIn(pokemon) {
+ if (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots') || pokemon.hasAbility('exoskeleton')) return;
+ this.add('-activate', pokemon, 'move: Sticky Web');
+ this.boost({ spe: -1 }, pokemon, pokemon.side.foe.active[0], this.dex.getActiveMove('stickyweb'));
+ },
+ },
+ },
+};
diff --git a/data/mods/gen6megasrevisited/pokedex.ts b/data/mods/gen6megasrevisited/pokedex.ts
new file mode 100644
index 0000000000..70821f3c7f
--- /dev/null
+++ b/data/mods/gen6megasrevisited/pokedex.ts
@@ -0,0 +1,249 @@
+export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable = {
+ audinomega: {
+ inherit: true,
+ types: ["Normal", "Electric"],
+ baseStats: { hp: 103, atk: 60, def: 120, spa: 110, spd: 97, spe: 55 },
+ abilities: { 0: "Regenerator" },
+ },
+ houndoommega: {
+ inherit: true,
+ types: ["Dark", "Fire"],
+ baseStats: { hp: 75, atk: 90, def: 90, spa: 140, spd: 90, spe: 115 },
+ abilities: { 0: "Merciless" },
+ },
+ lucariomega: {
+ inherit: true,
+ types: ["Fighting", "Steel"],
+ baseStats: { hp: 70, atk: 125, def: 70, spa: 140, spd: 94, spe: 126 },
+ abilities: { 0: "Lightning Rod" },
+ },
+ banettemega: {
+ inherit: true,
+ types: ["Ghost", "Steel"],
+ baseStats: { hp: 64, atk: 149, def: 75, spa: 83, spd: 83, spe: 101 },
+ abilities: { 0: "Pocket Dimension" },
+ },
+ glaliemega: {
+ inherit: true,
+ types: ["Ice", "Steel"],
+ baseStats: { hp: 80, atk: 160, def: 70, spa: 95, spd: 70, spe: 105 },
+ abilities: { 0: "Refrigerate" },
+ },
+ venusaurmega: {
+ inherit: true,
+ types: ["Grass", "Poison"],
+ baseStats: { hp: 80, atk: 82, def: 123, spa: 120, spd: 120, spe: 100 },
+ abilities: { 0: "Grassy Surge" },
+ },
+ blastoisemega: {
+ inherit: true,
+ types: ["Water", "Fairy"],
+ baseStats: { hp: 79, atk: 83, def: 130, spa: 135, spd: 105, spe: 98 },
+ abilities: { 0: "Misty Surge" },
+ },
+ charizardmegay: {
+ inherit: true,
+ types: ["Fire", "Flying"],
+ baseStats: { hp: 78, atk: 94, def: 93, spa: 159, spd: 110, spe: 100 },
+ abilities: { 0: "Dragon's Gale" },
+ },
+ alakazammega: {
+ inherit: true,
+ types: ["Psychic", "Ice"],
+ baseStats: { hp: 55, atk: 50, def: 75, spa: 155, spd: 125, spe: 140 },
+ abilities: { 0: "Magic Guard" },
+ },
+ pinsirmega: {
+ inherit: true,
+ types: ["Bug", "Ice"],
+ baseStats: { hp: 65, atk: 150, def: 110, spa: 80, spd: 85, spe: 110 },
+ abilities: { 0: "Mountaineer" },
+ },
+ gengarmega: {
+ inherit: true,
+ types: ["Ghost", "Poison"],
+ baseStats: { hp: 60, atk: 65, def: 105, spa: 155, spd: 105, spe: 110 },
+ abilities: { 0: "Neutralizing Gas" },
+ },
+ aerodactylmega: {
+ inherit: true,
+ types: ["Rock", "Flying"],
+ baseStats: { hp: 80, atk: 140, def: 65, spa: 85, spd: 100, spe: 145 },
+ abilities: { 0: "Nostalgia Trip" },
+ },
+ steelixmega: {
+ inherit: true,
+ types: ["Steel", "Ground"],
+ baseStats: { hp: 75, atk: 135, def: 210, spa: 55, spd: 105, spe: 30 },
+ abilities: { 0: "Flash Fire" },
+ weightkg: 999.9,
+ },
+ altariamega: {
+ inherit: true,
+ types: ["Dragon", "Fairy"],
+ baseStats: { hp: 75, atk: 90, def: 90, spa: 140, spd: 115, spe: 80 },
+ abilities: { 0: "Weather Report" },
+ },
+ sceptilemega: {
+ inherit: true,
+ types: ["Grass", "Dragon"],
+ baseStats: { hp: 70, atk: 95, def: 79, spa: 145, spd: 99, spe: 142 },
+ abilities: { 0: "Armor Tail" },
+ },
+ swampertmega: {
+ inherit: true,
+ types: ["Water", "Poison"],
+ baseStats: { hp: 100, atk: 145, def: 110, spa: 85, spd: 110, spe: 85 },
+ abilities: { 0: "Toxic Chain" },
+ },
+ manectricmega: {
+ inherit: true,
+ types: ["Electric"],
+ baseStats: { hp: 70, atk: 75, def: 80, spa: 135, spd: 85, spe: 130 },
+ abilities: { 0: "Bug Zapper" },
+ },
+ absolmega: {
+ inherit: true,
+ types: ["Dark", "Fairy"],
+ baseStats: { hp: 65, atk: 130, def: 60, spa: 135, spd: 60, spe: 115 },
+ abilities: { 0: "Neuroforce" },
+ },
+ medichammega: {
+ inherit: true,
+ types: ["Fighting", "Psychic"],
+ baseStats: { hp: 60, atk: 60, def: 100, spa: 90, spd: 100, spe: 100 },
+ abilities: { 0: "Brain Power" },
+ },
+ sableyemega: {
+ inherit: true,
+ types: ["Dark", "Ghost"],
+ baseStats: { hp: 50, atk: 95, def: 115, spa: 85, spd: 115, spe: 20 },
+ },
+ beedrillmega: {
+ inherit: true,
+ types: ["Bug", "Rock"],
+ baseStats: { hp: 65, atk: 140, def: 85, spa: 45, spd: 85, spe: 75 },
+ abilities: { 0: "Exoskeleton" },
+ },
+ mawilemega: {
+ inherit: true,
+ types: ["Steel", "Fairy"],
+ baseStats: { hp: 50, atk: 90, def: 125, spa: 70, spd: 95, spe: 50 },
+ abilities: { 0: "Huge Power" },
+ },
+ abomasnowmega: {
+ inherit: true,
+ types: ["Grass"],
+ abilities: { 0: "Ice Scales" },
+ },
+ cameruptmega: {
+ inherit: true,
+ types: ["Fire", "Ground"],
+ baseStats: { hp: 70, atk: 80, def: 140, spa: 135, spd: 115, spe: 20 },
+ abilities: { 0: "Earth Eater" },
+ },
+ slowbromega: {
+ inherit: true,
+ types: ["Water", "Psychic"],
+ baseStats: { hp: 95, atk: 75, def: 150, spa: 120, spd: 120, spe: 30 },
+ abilities: { 0: "Shell Ejection" },
+ },
+ gallademega: {
+ inherit: true,
+ types: ["Psychic", "Fighting"],
+ baseStats: { hp: 68, atk: 150, def: 100, spa: 75, spd: 127, spe: 98 },
+ abilities: { 0: "Sharpness" },
+ },
+ ampharosmega: {
+ inherit: true,
+ types: ["Electric", "Dragon"],
+ baseStats: { hp: 90, atk: 95, def: 95, spa: 165, spd: 110, spe: 55 },
+ abilities: { 0: "Mega Launcher" },
+ },
+ gyaradosmega: {
+ inherit: true,
+ types: ["Water", "Flying"],
+ baseStats: { hp: 95, atk: 130, def: 109, spa: 85, spd: 130, spe: 91 },
+ abilities: { 0: "Aerilate" },
+ },
+ heracrossmega: {
+ inherit: true,
+ types: ["Bug", "Fighting"],
+ baseStats: { hp: 80, atk: 150, def: 150, spa: 40, spd: 110, spe: 70 },
+ abilities: { 0: "Iron Barbs" },
+ },
+ sharpedomega: {
+ inherit: true,
+ types: ["Water", "Electric"],
+ baseStats: { hp: 70, atk: 130, def: 55, spa: 145, spd: 55, spe: 105 },
+ abilities: { 0: "No Guard" },
+ },
+ gardevoirmega: {
+ inherit: true,
+ types: ["Psychic", "Fairy"],
+ baseStats: { hp: 68, atk: 65, def: 100, spa: 150, spd: 127, spe: 108 },
+ },
+ aggronmega: {
+ inherit: true,
+ types: ["Steel"],
+ baseStats: { hp: 70, atk: 145, def: 185, spa: 85, spd: 85, spe: 60 },
+ abilities: { 0: "Dauntless Shield" },
+ },
+ kangaskhanmega: {
+ inherit: true,
+ types: ["Normal", "Ground"],
+ baseStats: { hp: 105, atk: 125, def: 105, spa: 50, spd: 105, spe: 100 },
+ },
+ salamencemega: {
+ inherit: true,
+ types: ["Dragon", "Flying"],
+ baseStats: { hp: 95, atk: 135, def: 105, spa: 155, spd: 105, spe: 105 },
+ abilities: { 0: "Confidence" },
+ },
+ garchompmega: {
+ inherit: true,
+ types: ["Dragon", "Ground"],
+ baseStats: { hp: 108, atk: 150, def: 115, spa: 140, spd: 85, spe: 102 },
+ abilities: { 0: "Water Absorb" },
+ },
+ tyranitarmega: {
+ inherit: true,
+ types: ["Rock", "Electric"],
+ baseStats: { hp: 100, atk: 144, def: 120, spa: 110, spd: 144, spe: 82 },
+ abilities: { 0: "Electric Surge" },
+ },
+ latiasmega: {
+ inherit: true,
+ abilities: { 0: "Trace" },
+ },
+ latiosmega: {
+ inherit: true,
+ baseStats: { hp: 80, atk: 140, def: 100, spa: 150, spd: 120, spe: 110 },
+ abilities: { 0: "Opportunist" },
+ },
+ dianciemega: {
+ inherit: true,
+ abilities: { 0: "Good As Gold" },
+ },
+ blazikenmega: {
+ inherit: true,
+ baseStats: { hp: 80, atk: 150, def: 80, spa: 120, spd: 90, spe: 110 },
+ abilities: { 0: "Regenerator" },
+ },
+ mewtwomegax: {
+ inherit: true,
+ types: ["Psychic", "Poison"],
+ baseStats: { hp: 106, atk: 140, def: 130, spa: 154, spd: 120, spe: 130 },
+ abilities: { 0: "Intoxicate" },
+ },
+ mewtwomegay: {
+ inherit: true,
+ types: ["Psychic", "Water"],
+ baseStats: { hp: 106, atk: 120, def: 110, spa: 194, spd: 130, spe: 120 },
+ abilities: { 0: "Levitate" },
+ },
+ rayquazamega: {
+ inherit: true,
+ requiredItem: "Meteorite",
+ },
+};
diff --git a/data/mods/monsterhunter/rulesets.ts b/data/mods/gen6megasrevisited/rulesets.ts
similarity index 59%
rename from data/mods/monsterhunter/rulesets.ts
rename to data/mods/gen6megasrevisited/rulesets.ts
index 3e095006c7..b1a52de493 100644
--- a/data/mods/monsterhunter/rulesets.ts
+++ b/data/mods/gen6megasrevisited/rulesets.ts
@@ -1,69 +1,33 @@
-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 += `
`;
- if (species.types[1]) {
- buf += `
`;
- }
- 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|`);
- },
- },
- 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;
- }
- },
- },
-};
+export const Rulesets: import('../../../sim/dex-formats').ModdedFormatDataTable = {
+ megadatamod: {
+ effectType: 'Rule',
+ name: 'Mega Data Mod',
+ desc: 'Gives data on stats, Ability and types when a Pokémon Mega Evolves or undergoes Ultra Burst.',
+ onSwitchIn(pokemon) {
+ if (pokemon.species.forme.startsWith('Mega') || pokemon.species.forme.startsWith('Ultra')) {
+ this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
+ }
+ },
+ onAfterMega(pokemon) {
+ this.add('-start', pokemon, 'typechange', pokemon.getTypes(true).join('/'), '[silent]');
+ const species = pokemon.species;
+ let buf = `${species.name} `;
+ buf += ``;
+ buf += `
`;
+ if (species.types[1]) {
+ buf += `
`;
+ }
+ 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|`);
+ },
+ },
+};
diff --git a/data/mods/gen6megasrevisited/scripts.ts b/data/mods/gen6megasrevisited/scripts.ts
new file mode 100644
index 0000000000..fe185cc6a0
--- /dev/null
+++ b/data/mods/gen6megasrevisited/scripts.ts
@@ -0,0 +1,237 @@
+export const Scripts: ModdedBattleScriptsData = {
+ gen: 6,
+ inherit: 'gen6',
+ actions: {
+ // for parental bond
+ modifyDamage(
+ baseDamage: number, pokemon: Pokemon, target: Pokemon, move: ActiveMove, suppressMessages = false
+ ) {
+ const tr = this.battle.trunc;
+ if (!move.type) move.type = '???';
+ const type = move.type;
+ baseDamage += 2;
+ if (move.spreadHit) {
+ // multi-target modifier (doubles only)
+ const spreadModifier = this.battle.gameType === 'freeforall' ? 0.5 : 0.75;
+ this.battle.debug(`Spread modifier: ${spreadModifier}`);
+ baseDamage = this.battle.modify(baseDamage, spreadModifier);
+ } else if (move.multihitType === 'parentalbond' && move.hit > 1) {
+ // Parental Bond modifier
+ const bondModifier = 0.25;
+ this.battle.debug(`Parental Bond modifier: ${bondModifier}`);
+ baseDamage = this.battle.modify(baseDamage, bondModifier);
+ }
+ baseDamage = this.battle.runEvent('WeatherModifyDamage', pokemon, target, move, baseDamage);
+ const isCrit = target.getMoveHitData(move).crit;
+ if (isCrit) {
+ baseDamage = tr(baseDamage * (move.critModifier || (this.battle.gen >= 6 ? 1.5 : 2)));
+ }
+ baseDamage = this.battle.randomizer(baseDamage);
+ if (type !== '???') {
+ let stab: number | [number, number] = 1;
+ const isSTAB = move.forceSTAB || pokemon.hasType(type) || pokemon.getTypes(false, true).includes(type);
+ if (isSTAB) {
+ stab = 1.5;
+ }
+ if (pokemon.terastallized === 'Stellar') {
+ if (!pokemon.stellarBoostedTypes.includes(type) || move.stellarBoosted) {
+ stab = isSTAB ? 2 : [4915, 4096];
+ move.stellarBoosted = true;
+ if (pokemon.species.name !== 'Terapagos-Stellar') {
+ pokemon.stellarBoostedTypes.push(type);
+ }
+ }
+ } else {
+ if (pokemon.terastallized === type && pokemon.getTypes(false, true).includes(type)) {
+ stab = 2;
+ }
+ stab = this.battle.runEvent('ModifySTAB', pokemon, target, move, stab);
+ }
+ baseDamage = this.battle.modify(baseDamage, stab);
+ }
+ let typeMod = target.runEffectiveness(move);
+ typeMod = this.battle.clampIntRange(typeMod, -6, 6);
+ target.getMoveHitData(move).typeMod = typeMod;
+ if (typeMod > 0) {
+ if (!suppressMessages) this.battle.add('-supereffective', target);
+ for (let i = 0; i < typeMod; i++) {
+ baseDamage *= 2;
+ }
+ }
+ if (typeMod < 0) {
+ if (!suppressMessages) this.battle.add('-resisted', target);
+
+ for (let i = 0; i > typeMod; i--) {
+ baseDamage = tr(baseDamage / 2);
+ }
+ }
+ if (isCrit && !suppressMessages) this.battle.add('-crit', target);
+ if (pokemon.status === 'brn' && move.category === 'Physical' && !pokemon.hasAbility('guts')) {
+ if (this.battle.gen < 6 || move.id !== 'facade') {
+ baseDamage = this.battle.modify(baseDamage, 0.5);
+ }
+ }
+ // Generation 5, but nothing later, sets damage to 1 before the final damage modifiers
+ if (this.battle.gen === 5 && !baseDamage) baseDamage = 1;
+ // Final modifier. Modifiers that modify damage after min damage check, such as Life Orb.
+ baseDamage = this.battle.runEvent('ModifyDamage', pokemon, target, move, baseDamage);
+ if (move.isZOrMaxPowered && target.getMoveHitData(move).zBrokeProtect) {
+ baseDamage = this.battle.modify(baseDamage, 0.25);
+ this.battle.add('-zbroken', target);
+ }
+ // Generation 6-7 moves the check for minimum 1 damage after the final modifier...
+ if (this.battle.gen !== 5 && !baseDamage) return 1;
+ // ...but 16-bit truncation happens even later, and can truncate to 0
+ return tr(baseDamage, 16);
+ },
+ },
+ pokemon: {
+ // for neutralizing gas
+ ignoringAbility() {
+ if (this.battle.gen >= 5 && !this.isActive) return true;
+ if (this.getAbility().flags['notransform'] && this.transformed) return true;
+ if (this.getAbility().flags['cantsuppress']) return false;
+ if (this.volatiles['gastroacid']) return true;
+ if (this.ability === ('neutralizinggas' as ID)) return false;
+ if (this.volatiles['neutralizinggas']) return true;
+ return false;
+ },
+ },
+ init() {
+ this.modData("Learnsets", "lucario").learnset.meteormash = ["6L1"];
+ this.modData("Learnsets", "lucario").learnset.machpunch = ["6L1"];
+ this.modData("Learnsets", "houndoom").learnset.toxicspikes = ["6L1"];
+ this.modData("Learnsets", "houndoom").learnset.venoshock = ["6L1"];
+ this.modData("Learnsets", "houndoom").learnset.hex = ["6L1"];
+ this.modData("Learnsets", "audino").learnset.discharge = ["6L1"];
+ this.modData("Learnsets", "audino").learnset.voltswitch = ["6L1"];
+ this.modData("Learnsets", "audino").learnset.chargebeam = ["6L1"];
+ this.modData("Learnsets", "audino").learnset.charge = ["6L1"];
+ this.modData("Learnsets", "audino").learnset.zapcannon = ["6L1"];
+ this.modData("Learnsets", "glalie").learnset.thunderfang = ["6L1"];
+ this.modData("Learnsets", "glalie").learnset.partingshot = ["6L1"];
+ this.modData("Learnsets", "glalie").learnset.boomburst = ["6L1"];
+ this.modData("Learnsets", "banette").learnset.ironhead = ["6L1"];
+ this.modData("Learnsets", "banette").learnset.metalsound = ["6L1"];
+ this.modData("Learnsets", "banette").learnset.powder = ["6L1"];
+ this.modData("Learnsets", "banette").learnset.stealthrock = ["6L1"];
+ this.modData("Learnsets", "banette").learnset.defog = ["6L1"];
+ this.modData("Learnsets", "venusaur").learnset.psychic = ["6L1"];
+ this.modData("Learnsets", "venusaur").learnset.calmmind = ["6L1"];
+ this.modData("Learnsets", "blastoise").learnset.moonblast = ["6L1"];
+ this.modData("Learnsets", "blastoise").learnset.mistyterrain = ["6L1"];
+ this.modData("Learnsets", "blastoise").learnset.taunt = ["6L1"];
+ this.modData("Learnsets", "blastoise").learnset.drainingkiss = ["6L1"];
+ this.modData("Learnsets", "blastoise").learnset.dazzlinggleam = ["6L1"];
+ this.modData("Learnsets", "charizard").learnset.calmmind = ["6L1"];
+ this.modData("Learnsets", "charizard").learnset.hurricane = ["6L1"];
+ this.modData("Learnsets", "charizard").learnset.lavaplume = ["6L1"];
+ this.modData("Learnsets", "gengar").learnset.reflecttype = ["6L1"];
+ this.modData("Learnsets", "gengar").learnset.calmmind = ["6L1"];
+ this.modData("Learnsets", "alakazam").learnset.blizzard = ["6L1"];
+ this.modData("Learnsets", "alakazam").learnset.flashcannon = ["6L1"];
+ this.modData("Learnsets", "alakazam").learnset.icebeam = ["6L1"];
+ this.modData("Learnsets", "alakazam").learnset.hail = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.hail = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.megahorn = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.uturn = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.iceshard = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.iciclecrash = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.icebeam = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.blizzard = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.roost = ["6L1"];
+ this.modData("Learnsets", "pinsir").learnset.iciclespear = ["6L1"];
+ this.modData("Learnsets", "aerodactyl").learnset.powergem = ["6L1"];
+ this.modData("Learnsets", "aerodactyl").learnset.shadowball = ["6L1"];
+ this.modData("Learnsets", "aerodactyl").learnset.hurricane = ["6L1"];
+ this.modData("Learnsets", "steelix").learnset.heatcrash = ["6L1"];
+ this.modData("Learnsets", "steelix").learnset.rapidspin = ["6L1"];
+ this.modData("Learnsets", "steelix").learnset.smackdown = ["6L1"];
+ this.modData("Learnsets", "altaria").learnset.scald = ["6L1"];
+ this.modData("Learnsets", "altaria").learnset.hydropump = ["6L1"];
+ this.modData("Learnsets", "altaria").learnset.thunder = ["6L1"];
+ this.modData("Learnsets", "sceptile").learnset.calmmind = ["6L1"];
+ this.modData("Learnsets", "sceptile").learnset.sludgewave = ["6L1"];
+ this.modData("Learnsets", "swampert").learnset.sludgebomb = ["6L1"];
+ this.modData("Learnsets", "swampert").learnset.bulkup = ["6L1"];
+ this.modData("Learnsets", "swampert").learnset.toxicspikes = ["6L1"];
+ this.modData("Learnsets", "swampert").learnset.aquajet = ["6L1"];
+ this.modData("Learnsets", "swampert").learnset.gunkshot = ["6L1"];
+ this.modData("Learnsets", "swampert").learnset.poisonjab = ["6L1"];
+ this.modData("Learnsets", "pidgeot").learnset.focusblast = ["6L1"];
+ this.modData("Learnsets", "absol").learnset.closecombat = ["6L1"];
+ this.modData("Learnsets", "absol").learnset.moonblast = ["6L1"];
+ this.modData("Learnsets", "absol").learnset.moonlight = ["6L1"];
+ this.modData("Learnsets", "medicham").learnset.aurasphere = ["6L1"];
+ this.modData("Learnsets", "medicham").learnset.thunderbolt = ["6L1"];
+ this.modData("Learnsets", "medicham").learnset.closecombat = ["6L1"];
+ this.modData("Learnsets", "medicham").learnset.gunkshot = ["6L1"];
+ this.modData("Learnsets", "medicham").learnset.healingwish = ["6L1"];
+ this.modData("Learnsets", "beedrill").learnset.earthquake = ["6L1"];
+ this.modData("Learnsets", "beedrill").learnset.stoneedge = ["6L1"];
+ this.modData("Learnsets", "beedrill").learnset.rockslide = ["6L1"];
+ this.modData("Learnsets", "beedrill").learnset.smackdown = ["6L1"];
+ this.modData("Learnsets", "beedrill").learnset.stealthrock = ["6L1"];
+ this.modData("Learnsets", "beedrill").learnset.diamondstorm = ["6L1"];
+ this.modData("Learnsets", "mawile").learnset.firepunch = ["6L1"];
+ this.modData("Learnsets", "mawile").learnset.rockslide = ["6L1"];
+ this.modData("Learnsets", "mawile").learnset.slackoff = ["6L1"];
+ this.modData("Learnsets", "camerupt").learnset.morningsun = ["6L1"];
+ this.modData("Learnsets", "abomasnow").learnset.spikyshield = ["6L1"];
+ this.modData("Learnsets", "abomasnow").learnset.earthpower = ["6L1"];
+ this.modData("Learnsets", "abomasnow").learnset.hornleech = ["6L1"];
+ this.modData("Learnsets", "gallade").learnset.sacredsword = ["6L1"];
+ this.modData("Learnsets", "gallade").learnset.machpunch = ["6L1"];
+ this.modData('Moves', 'aerialace').flags.slicing = 1;
+ this.modData('Moves', 'aircutter').flags.slicing = 1;
+ this.modData('Moves', 'airslash').flags.slicing = 1;
+ this.modData('Moves', 'behemothblade').flags.slicing = 1;
+ this.modData('Moves', 'crosspoison').flags.slicing = 1;
+ this.modData('Moves', 'cut').flags.slicing = 1;
+ this.modData('Moves', 'furycutter').flags.slicing = 1;
+ this.modData('Moves', 'nightslash').flags.slicing = 1;
+ this.modData('Moves', 'psychocut').flags.slicing = 1;
+ this.modData('Moves', 'razorleaf').flags.slicing = 1;
+ this.modData('Moves', 'razorshell').flags.slicing = 1;
+ this.modData('Moves', 'sacredsword').flags.slicing = 1;
+ this.modData('Moves', 'slash').flags.slicing = 1;
+ this.modData('Moves', 'solarblade').flags.slicing = 1;
+ this.modData('Moves', 'xscissor').flags.slicing = 1;
+ this.modData("Learnsets", "ampharos").learnset.waterpulse = ["6L1"];
+ this.modData("Learnsets", "ampharos").learnset.aurasphere = ["6L1"];
+ this.modData("Learnsets", "ampharos").learnset.darkpulse = ["6L1"];
+ this.modData("Learnsets", "ampharos").learnset.defog = ["6L1"];
+ this.modData("Learnsets", "ampharos").learnset.slackoff = ["6L1"];
+ this.modData("Learnsets", "heracross").learnset.healorder = ["6L1"];
+ this.modData("Learnsets", "heracross").learnset.circlethrow = ["6L1"];
+ this.modData("Learnsets", "heracross").learnset.spikes = ["6L1"];
+ this.modData("Learnsets", "heracross").learnset.icepunch = ["6L1"];
+ this.modData("Learnsets", "sharpedo").learnset.thunder = ["6L1"];
+ this.modData("Learnsets", "gardevoir").learnset.rapidspin = ["6L1"];
+ this.modData("Learnsets", "gardevoir").learnset.mysticalfire = ["6L1"];
+ this.modData("Learnsets", "aggron").learnset.voltswitch = ["6L1"];
+ this.modData("Learnsets", "kangaskhan").learnset.milkdrink = ["6L1"];
+ this.modData("Learnsets", "salamence").learnset.hurricane = ["6L1"];
+ this.modData("Learnsets", "salamence").learnset.airslash = ["6L1"];
+ this.modData("Learnsets", "salamence").learnset.ironhead = ["6L1"];
+ this.modData("Learnsets", "tyranitar").learnset.wildcharge = ["6L1"];
+ this.modData("Learnsets", "tyranitar").learnset.waterfall = ["6L1"];
+ this.modData("Learnsets", "diancie").learnset.spikyshield = ["6L1"];
+ this.modData("Learnsets", "blaziken").learnset.uturn = ["6L1"];
+ this.modData("Learnsets", "blaziken").learnset.spikes = ["6L1"];
+ this.modData("Learnsets", "blaziken").learnset.roost = ["6L1"];
+ this.modData("Learnsets", "blaziken").learnset.closecombat = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.extremespeed = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.sludgewave = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.swordsdance = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.uturn = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.closecombat = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.drainpunch = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.machpunch = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.scald = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.surf = ["6L1"];
+ this.modData("Learnsets", "mewtwo").learnset.hydropump = ["6L1"];
+ this.modData("Learnsets", "rayquaza").learnset.coil = ["6L1"];
+ this.modData("Learnsets", "rayquaza").learnset.defog = ["6L1"];
+ },
+};
diff --git a/data/mods/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/gen7/formats-data.ts b/data/mods/gen7/formats-data.ts
index 7af4a2c6ae..ada8df1394 100644
--- a/data/mods/gen7/formats-data.ts
+++ b/data/mods/gen7/formats-data.ts
@@ -592,7 +592,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
doublesTier: "NFE",
},
tangrowth: {
- tier: "OU",
+ tier: "(OU)",
doublesTier: "(DUU)",
},
kangaskhan: {
diff --git a/data/mods/gen7letsgo/moves.ts b/data/mods/gen7letsgo/moves.ts
index 552a0df8c8..31f669b0e1 100644
--- a/data/mods/gen7letsgo/moves.ts
+++ b/data/mods/gen7letsgo/moves.ts
@@ -41,8 +41,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
inherit: true,
desc: "A random move that was introduced in gen 1 is selected for use, other than Counter, Mimic, Mirror Move, Struggle, or Transform.",
shortDesc: "Picks a random move from gen 1.",
- onHit(target, source, effect) {
- const moves = this.dex.moves.all().filter(move => move.gen === 1 && move.flags['metronome']);
+ onHit(target) {
+ const moves = this.dex.moves.all().filter(move => (
+ (!move.isNonstandard || move.isNonstandard === 'Unobtainable') &&
+ move.flags['metronome'] && move.gen === 1
+ ));
let randomMove = '';
if (moves.length) {
moves.sort((a, b) => a.num - b.num);
diff --git a/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/gen8/formats-data.ts b/data/mods/gen8/formats-data.ts
index 373fb35bd0..774b525b8a 100644
--- a/data/mods/gen8/formats-data.ts
+++ b/data/mods/gen8/formats-data.ts
@@ -2922,7 +2922,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
isNonstandard: "Past",
},
victini: {
- tier: "OU",
+ tier: "(OU)",
doublesTier: "DUU",
natDexTier: "OU",
},
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/gen8linked/items.ts b/data/mods/gen8linked/items.ts
deleted file mode 100644
index 2765c2ed4a..0000000000
--- a/data/mods/gen8linked/items.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export const Items: import('../../../sim/dex-items').ModdedItemDataTable = {
- leppaberry: {
- inherit: true,
- onUpdate(pokemon) {
- if (!pokemon.hp) return;
- const moveSlot = pokemon.getMoveData(pokemon.m.lastMoveAbsolute);
- if (moveSlot?.pp === 0) {
- pokemon.addVolatile('leppaberry');
- pokemon.volatiles['leppaberry'].moveSlot = moveSlot;
- pokemon.eatItem();
- }
- },
- },
-};
diff --git a/data/mods/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/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/data/mods/gen9legendsou/formats-data.ts b/data/mods/gen9legendsou/formats-data.ts
index eb6172656e..691d610cf2 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",
@@ -90,7 +90,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "OU",
},
clefablemega: {
- tier: "(OU)",
+ tier: "OU",
},
igglybuff: {
tier: "LC",
@@ -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",
@@ -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",
@@ -717,7 +717,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "Uber",
},
lucariomegaz: {
- tier: "OU",
+ tier: "UU",
},
hippopotas: {
tier: "LC",
@@ -753,34 +753,34 @@ 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",
},
heatranmega: {
- tier: "OU",
+ tier: "(OU)",
},
darkrai: {
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: "OU",
},
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",
@@ -1041,7 +1041,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "NFE",
},
talonflame: {
- tier: "OU",
+ tier: "UU",
},
scatterbug: {
tier: "LC",
@@ -1077,7 +1077,7 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "UU",
},
floettemega: {
- tier: "OU",
+ tier: "UU",
},
florges: {
tier: "UU",
@@ -1101,16 +1101,16 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "LC",
},
meowstic: {
- tier: "OU",
+ tier: "UU",
},
meowsticf: {
- tier: "OU",
+ tier: "UU",
},
meowsticmmega: {
- tier: "OU",
+ tier: "UU",
},
meowsticfmega: {
- tier: "OU",
+ tier: "UU",
},
honedge: {
tier: "LC",
@@ -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,25 +1301,25 @@ 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",
+ tier: "UU",
},
sandygast: {
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",
@@ -1349,10 +1349,10 @@ export const FormatsData: import('../../../sim/dex-species').ModdedSpeciesFormat
tier: "OU",
},
zeraoramega: {
- tier: "OU",
+ 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/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/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"],
diff --git a/data/mods/gen9legendsou/pokedex.ts b/data/mods/gen9legendsou/pokedex.ts
index 701d79b372..398847927c 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,
@@ -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,
@@ -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,
@@ -170,11 +170,11 @@ export const Pokedex: import('../../../sim/dex-species').ModdedSpeciesDataTable
},
golisopodmega: {
inherit: true,
- abilities: { 0: "Regenerator" },
+ abilities: { 0: "Heatproof" },
},
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,
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/conditions.ts b/data/mods/gen9ssb/conditions.ts
index 7a6f4cc3ce..a5984188f1 100644
--- a/data/mods/gen9ssb/conditions.ts
+++ b/data/mods/gen9ssb/conditions.ts
@@ -3,6 +3,64 @@ import { changeSet, getName, enemyStaff } from './scripts';
import type { ModdedConditionData } from "../../../sim/dex-conditions";
export const Conditions: { [id: IDEntry]: ModdedConditionData & { innateName?: string } } = {
+ zacian: {
+ inherit: true,
+ onBattleStart(pokemon) {
+ if (pokemon.item !== 'rustedsword') return;
+ const rawSpecies = this.dex.species.get('Zacian-Crowned');
+ const species = pokemon.setSpecies(rawSpecies);
+ if (!species) return;
+ pokemon.baseSpecies = rawSpecies;
+ pokemon.details = pokemon.getUpdatedDetails();
+ // pokemon.setAbility(species.abilities['0'], null, null, true);
+ // pokemon.baseAbility = pokemon.ability;
+
+ const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead');
+ if (ironHeadIndex >= 0) {
+ const move = this.dex.moves.get('behemothblade');
+ pokemon.baseMoveSlots[ironHeadIndex] = {
+ move: move.name,
+ id: move.id,
+ pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ target: move.target,
+ disabled: false,
+ disabledSource: '',
+ used: false,
+ };
+ pokemon.moveSlots = pokemon.baseMoveSlots.slice();
+ }
+ },
+ },
+ zamazenta: {
+ inherit: true,
+ onBattleStart(pokemon) {
+ if (pokemon.item !== 'rustedshield') return;
+ const rawSpecies = this.dex.species.get('Zamazenta-Crowned');
+ const species = pokemon.setSpecies(rawSpecies);
+ if (!species) return;
+ pokemon.baseSpecies = rawSpecies;
+ pokemon.details = pokemon.getUpdatedDetails();
+ // pokemon.setAbility(species.abilities['0'], null, null, true);
+ // pokemon.baseAbility = pokemon.ability;
+
+ const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead');
+ if (ironHeadIndex >= 0) {
+ const move = this.dex.moves.get('behemothbash');
+ pokemon.baseMoveSlots[ironHeadIndex] = {
+ move: move.name,
+ id: move.id,
+ pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
+ target: move.target,
+ disabled: false,
+ disabledSource: '',
+ used: false,
+ };
+ pokemon.moveSlots = pokemon.baseMoveSlots.slice();
+ }
+ },
+ },
/*
// Example:
userid: {
diff --git a/data/mods/gen9ssb/items.ts b/data/mods/gen9ssb/items.ts
index ba538d227f..754f73a283 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: { "Flygon": "Trapinch" },
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 4d650fcf08..b3cd624bde 100644
--- a/data/mods/gen9ssb/scripts.ts
+++ b/data/mods/gen9ssb/scripts.ts
@@ -374,40 +374,8 @@ export const Scripts: ModdedBattleScriptsData = {
this.add('start');
- // Change Zacian/Zamazenta into their Crowned formes
for (const pokemon of this.getAllPokemon()) {
- let rawSpecies: Species | null = null;
- if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') {
- rawSpecies = this.dex.species.get('Zacian-Crowned');
- } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') {
- rawSpecies = this.dex.species.get('Zamazenta-Crowned');
- }
- if (!rawSpecies) continue;
- const species = pokemon.setSpecies(rawSpecies);
- if (!species) continue;
- pokemon.baseSpecies = rawSpecies;
- pokemon.details = pokemon.getUpdatedDetails();
- // pokemon.setAbility(species.abilities['0'], null, null, true);
- // pokemon.baseAbility = pokemon.ability;
-
- const behemothMove: { [k: string]: string } = {
- 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash',
- };
- const ironHead = pokemon.baseMoves.indexOf('ironhead');
- if (ironHead >= 0) {
- const move = this.dex.moves.get(behemothMove[rawSpecies.name]);
- pokemon.baseMoveSlots[ironHead] = {
- move: move.name,
- id: move.id,
- pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- target: move.target,
- disabled: false,
- disabledSource: '',
- used: false,
- };
- pokemon.moveSlots = pokemon.baseMoveSlots.slice();
- }
+ this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
}
this.format.onBattleStart?.call(this);
@@ -429,9 +397,6 @@ export const Scripts: ModdedBattleScriptsData = {
}
}
}
- for (const pokemon of this.getAllPokemon()) {
- this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
- }
this.midTurn = true;
break;
}
@@ -963,26 +928,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/gen8linked/conditions.ts b/data/mods/linked/conditions.ts
similarity index 82%
rename from data/mods/gen8linked/conditions.ts
rename to data/mods/linked/conditions.ts
index de549ffb2a..014a218bc6 100644
--- a/data/mods/gen8linked/conditions.ts
+++ b/data/mods/linked/conditions.ts
@@ -21,7 +21,7 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
frz: {
inherit: true,
onBeforeMove(pokemon, target, move) {
- if (move.flags['defrost']) return;
+ if (move.flags['defrost'] && !(move.id === 'burnup' && !pokemon.hasType('Fire'))) return;
if (this.effectState.durationRolled !== this.turn && this.randomChance(1, 5)) {
pokemon.cureStatus();
return;
@@ -46,17 +46,14 @@ export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDa
}
}
this.add('-activate', pokemon, 'confusion');
- if (!this.randomChance(1, 3)) {
+ if (!this.randomChance(33, 100)) {
return;
}
this.activeTarget = pokemon;
- const damage = this.actions.getDamage(pokemon, pokemon, 40);
+ const damage = this.actions.getConfusionDamage(pokemon, 40);
if (typeof damage !== 'number') throw new Error("Confusion damage not dealt");
- this.damage(damage, pokemon, pokemon, {
- id: 'confused' as ID,
- effectType: 'Move',
- type: '???',
- } as unknown as ActiveMove);
+ const activeMove = { id: this.toID('confused'), effectType: 'Move', type: '???' };
+ this.damage(damage, pokemon, pokemon, activeMove as ActiveMove);
return false;
},
},
diff --git a/data/mods/gen8linked/moves.ts b/data/mods/linked/moves.ts
similarity index 59%
rename from data/mods/gen8linked/moves.ts
rename to data/mods/linked/moves.ts
index 4cf9d26437..e401244c0f 100644
--- a/data/mods/gen8linked/moves.ts
+++ b/data/mods/linked/moves.ts
@@ -1,35 +1,38 @@
export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
pursuit: {
inherit: true,
- beforeTurnCallback(pokemon, target) {
+ beforeTurnCallback(pokemon) {
// @ts-expect-error modded
const linkedMoves: [string, string] = pokemon.getLinkedMoves();
if (linkedMoves.length) {
if (linkedMoves[0] !== 'pursuit' && linkedMoves[1] === 'pursuit') return;
}
- target.side.addSideCondition('pursuit', pokemon);
- if (!target.side.sideConditions['pursuit'].sources) {
- target.side.sideConditions['pursuit'].sources = [];
+ for (const target of pokemon.foes()) {
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
+ if (!data.sources) {
+ data.sources = [];
+ }
+ data.sources.push(pokemon);
}
- target.side.sideConditions['pursuit'].sources.push(pokemon);
},
},
mefirst: {
inherit: true,
onTryHit(target, pokemon) {
const action = this.queue.willMove(target);
- if (action) {
- // Mod-specific: Me First copies the first move in the link
- // @ts-expect-error modded
- const move = this.dex.getActiveMove(action.linked?.[0] || action.move);
- if (move.category !== 'Status' && !move.flags['failmefirst']) {
- pokemon.addVolatile('mefirst');
- this.actions.useMove(move, pokemon, { target });
- return null;
- }
- }
- return false;
+ if (!action) return false;
+ // Mod-specific: Me First copies the first move in the link
+ // @ts-expect-error modded
+ const move = this.dex.getActiveMove(action.linked?.[0] || action.move.id);
+ if (action.zmove || move.isZ || move.isMax) return false;
+ if (target.volatiles['mustrecharge']) return false;
+ if (move.category === 'Status' || move.flags['failmefirst']) return false;
+
+ pokemon.addVolatile('mefirst');
+ this.actions.useMove(move, pokemon, { target });
+ return null;
},
},
@@ -38,7 +41,9 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
inherit: true,
onTry(source, target) {
const action = this.queue.willMove(target);
- if (!action || action.choice !== 'move') {
+ if (!action || action.choice !== 'move' ||
+ // @ts-expect-error modded
+ (!action.linked && action.move.category === 'Status' && action.move.id !== 'mefirst')) {
this.attrLastMove('[still]');
this.add('-fail', source);
return null;
@@ -51,13 +56,67 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
return null;
}
// @ts-expect-error modded
- if (!action.linked) {
- if (action.move.category === 'Status' && action.move.id !== 'mefirst') {
- this.attrLastMove('[still]');
- this.add('-fail', source);
- return null;
+ if (action.linked) {
+ // @ts-expect-error modded
+ for (const linkedMove of action.linked) {
+ if (linkedMove.category !== 'Status' || linkedMove.id === 'mefirst') return;
}
- } else {
+ this.attrLastMove('[still]');
+ this.add('-fail', source);
+ return null;
+ }
+ },
+ },
+ thunderclap: {
+ inherit: true,
+ onTry(source, target) {
+ const action = this.queue.willMove(target);
+ if (!action || action.choice !== 'move' ||
+ // @ts-expect-error modded
+ (!action.linked && action.move.category === 'Status' && action.move.id !== 'mefirst')) {
+ this.attrLastMove('[still]');
+ this.add('-fail', source);
+ return null;
+ }
+ if (target.volatiles.mustrecharge && target.volatiles.mustrecharge.duration! < 2) {
+ // Duration may not be lower than 2 if Sucker Punch is used as a low-priority move
+ // i.e. if Sucker Punch is linked with a negative priority move
+ this.attrLastMove('[still]');
+ this.add('-fail', source);
+ return null;
+ }
+ // @ts-expect-error modded
+ if (action.linked) {
+ // @ts-expect-error modded
+ for (const linkedMove of action.linked) {
+ if (linkedMove.category !== 'Status' || linkedMove.id === 'mefirst') return;
+ }
+ this.attrLastMove('[still]');
+ this.add('-fail', source);
+ return null;
+ }
+ },
+ },
+ upperhand: {
+ inherit: true,
+ onTry(source, target) {
+ const action = this.queue.willMove(target);
+ if (!action || action.choice !== 'move' || action.move.priority < 0.1 ||
+ // @ts-expect-error modded
+ (!action.linked && action.move.category === 'Status' && action.move.id !== 'mefirst')) {
+ this.attrLastMove('[still]');
+ this.add('-fail', source);
+ return null;
+ }
+ if (target.volatiles.mustrecharge && target.volatiles.mustrecharge.duration! < 2) {
+ // Duration may not be lower than 2 if Sucker Punch is used as a low-priority move
+ // i.e. if Sucker Punch is linked with a negative priority move
+ this.attrLastMove('[still]');
+ this.add('-fail', source);
+ return null;
+ }
+ // @ts-expect-error modded
+ if (action.linked) {
// @ts-expect-error modded
for (const linkedMove of action.linked) {
if (linkedMove.category !== 'Status' || linkedMove.id === 'mefirst') return;
@@ -73,13 +132,11 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
sketch: {
inherit: true,
onHit(target, source) {
- const disallowedMoves = ['chatter', 'sketch', 'struggle'];
- const lastMove: Move = target.m.lastMoveAbsolute;
- if (source.transformed || !lastMove || disallowedMoves.includes(lastMove.id) ||
- source.moves.includes(lastMove.id) || lastMove.isZ) return false;
+ const move = target.m.lastMoveAbsolute;
+ if (source.transformed || !move || source.moves.includes(move.id)) return false;
+ if (move.flags['nosketch'] || move.isZ || move.isMax) return false;
const sketchIndex = source.moves.indexOf('sketch');
if (sketchIndex < 0) return false;
- const move = this.dex.moves.get(lastMove);
const sketchedMove = {
move: move.name,
id: move.id,
@@ -97,12 +154,14 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
mimic: {
inherit: true,
onHit(target, source) {
- const lastMove: Move = target.m.lastMoveAbsolute;
- if (source.transformed || !lastMove || lastMove.flags['failmimic'] ||
- source.moves.includes(lastMove.id) || lastMove.isZ) return false;
+ const move = target.m.lastMoveAbsolute;
+ if (source.transformed || !move || move.flags['failmimic'] || source.moves.includes(move.id)) {
+ return false;
+ }
+ if (move.isZ || move.isMax) return false;
const mimicIndex = source.moves.indexOf('mimic');
if (mimicIndex < 0) return false;
- const move = this.dex.moves.get(lastMove);
+
source.moveSlots[mimicIndex] = {
move: move.name,
id: move.id,
@@ -121,25 +180,30 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
instruct: {
inherit: true,
onHit(target, source) {
- const lastMove: Move | ActiveMove | null = target.m.lastMoveAbsolute;
+ const lastMove = target.m.lastMoveAbsolute;
if (!lastMove || target.volatiles['dynamax']) return false;
- const moveIndex = target.moves.indexOf(lastMove.id);
+ const moveSlot = target.getMoveData(lastMove.id);
if (
lastMove.flags['failinstruct'] || lastMove.isZ || lastMove.isMax ||
lastMove.flags['charge'] || lastMove.flags['recharge'] ||
target.volatiles['beakblast'] || target.volatiles['focuspunch'] || target.volatiles['shelltrap'] ||
- (target.moveSlots[moveIndex] && target.moveSlots[moveIndex].pp <= 0)
+ (moveSlot && moveSlot.pp <= 0)
) {
return false;
}
this.add('-singleturn', target, 'move: Instruct', `[of] ${source}`);
- this.actions.runMove(lastMove.id, target, target.lastMoveTargetLoc!);
+ this.queue.prioritizeAction(this.queue.resolveAction({
+ choice: 'move',
+ pokemon: target,
+ moveid: lastMove.id,
+ targetLoc: target.lastMoveTargetLoc!,
+ })[0] as MoveAction);
},
},
mirrormove: {
inherit: true,
onTryHit(target, pokemon) {
- const move: Move | ActiveMove | null = target.m.lastMoveAbsolute;
+ const move = target.m.lastMoveAbsolute;
if (!move?.flags['mirror'] || move.isZ || move.isMax) {
return false;
}
@@ -155,15 +219,16 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
duration: 5,
noCopy: true, // doesn't get copied by Baton Pass
onStart(pokemon, source, effect) {
- const lastMove: Move | ActiveMove | null = pokemon.m.lastMoveAbsolute;
+ // The target hasn't taken its turn, or Cursed Body activated and the move was not used through Dancer or Instruct
if (
this.queue.willMove(pokemon) ||
(pokemon === this.activePokemon && this.activeMove && !this.activeMove.isExternal)
) {
this.effectState.duration!--;
}
+ const lastMove = pokemon.m.lastMoveAbsolute;
if (!lastMove) {
- this.debug('pokemon hasn\'t moved yet');
+ this.debug(`Pokemon hasn't moved yet`);
return false;
}
for (const moveSlot of pokemon.moveSlots) {
@@ -171,18 +236,15 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
if (!moveSlot.pp) {
this.debug('Move out of PP');
return false;
- } else {
- if (effect.id === 'cursedbody') {
- this.add('-start', pokemon, 'Disable', moveSlot.move, '[from] ability: Cursed Body', `[of] ${source}`);
- } else {
- this.add('-start', pokemon, 'Disable', moveSlot.move);
- }
- this.effectState.move = lastMove.id;
- return;
}
}
}
- return false;
+ if (effect.effectType === 'Ability') {
+ this.add('-start', pokemon, 'Disable', lastMove.name, '[from] ability: ' + effect.name, `[of] ${source}`);
+ } else {
+ this.add('-start', pokemon, 'Disable', lastMove.name);
+ }
+ this.effectState.move = lastMove.id;
},
onResidualOrder: 14,
onEnd(pokemon) {
@@ -190,7 +252,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
},
onBeforeMovePriority: 7,
onBeforeMove(attacker, defender, move) {
- if (!move.isZ && move.id === this.effectState.move) {
+ if (!(move.isZ && move.isZOrMaxPowered) && move.id === this.effectState.move) {
this.add('cant', attacker, 'Disable', move);
return false;
}
@@ -210,28 +272,26 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
duration: 3,
noCopy: true, // doesn't get copied by Z-Baton Pass
onStart(target) {
- let lastMove: Move | ActiveMove | null = target.m.lastMoveAbsolute;
- if (!lastMove || target.volatiles['dynamax']) return false;
- if ((lastMove as ActiveMove).isZOrMaxPowered) lastMove = this.dex.moves.get(lastMove.baseMove);
+ let move: Move | ActiveMove | null = target.m.lastMoveAbsolute;
+ if (!move || target.volatiles['dynamax']) return false;
+ // Encore only works on Max Moves if the base move is not itself a Max Move
+ if (move.isMax && move.baseMove) move = this.dex.moves.get(move.baseMove);
// @ts-expect-error modded
const linkedMoves: [string, string] = target.getLinkedMoves(true);
- const moveIndex = target.moves.indexOf(lastMove.id);
- if (linkedMoves.includes(lastMove.id) && this.dex.moves.get((linkedMoves[0])).flags['failencore'] &&
- this.dex.moves.get((linkedMoves[1])).flags['failencore']) {
+ const moveSlot = target.getMoveData(move.id);
+ if (linkedMoves.includes(move.id) && linkedMoves.every(m => !!this.dex.moves.get(m).flags['failencore'])) {
// both moves cannot be encored
delete target.volatiles['encore'];
return false;
}
- if (lastMove.isZ || lastMove.flags['failencore'] ||
- (target.moveSlots[moveIndex] && target.moveSlots[moveIndex].pp <= 0)) {
+ if (move.isZ || move.isMax || move.flags['failencore'] || !moveSlot || moveSlot.pp <= 0) {
// it failed
- delete target.volatiles['encore'];
return false;
}
- this.effectState.turnsActivated = {};
- this.effectState.move = lastMove.id;
+ this.effectState.timesActivated = {};
+ this.effectState.move = move.id;
this.add('-start', target, 'Encore');
- if (linkedMoves.includes(lastMove.id)) {
+ if (linkedMoves.includes(move.id)) {
this.effectState.move = linkedMoves;
}
if (!this.queue.willMove(target)) {
@@ -239,51 +299,50 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
}
},
onOverrideAction(pokemon, target, move) {
- if (!this.effectState.turnsActivated[this.turn]) {
+ if (!this.effectState.timesActivated[this.turn]) {
// Initialize Encore effect for this turn
- this.effectState.turnsActivated[this.turn] = 0;
- } else if (
- this.effectState.turnsActivated[this.turn] >= (Array.isArray(this.effectState.move) ?
- this.effectState.move.length : 1)) {
+ this.effectState.timesActivated[this.turn] = 0;
+ } else if (this.effectState.timesActivated[this.turn] >= (Array.isArray(this.effectState.move) ?
+ this.effectState.move.length : 1)) {
// Finish Encore effect for this turn
return;
}
- this.effectState.turnsActivated[this.turn]++;
+ this.effectState.timesActivated[this.turn]++;
if (!Array.isArray(this.effectState.move)) {
this.queue.cancelAction(pokemon);
if (move.id !== this.effectState.move) return this.effectState.move;
- return;
- }
-
+ } else {
// Locked into a link
- switch (this.effectState.turnsActivated[this.turn]) {
- case 1: {
- if (this.effectState.move[0] !== move.id) return this.effectState.move[0];
- return;
- }
- case 2:
- if (this.effectState.move[1] !== move.id) return this.effectState.move[1];
- return;
+ switch (this.effectState.timesActivated[this.turn]) {
+ case 1: {
+ if (this.effectState.move[0] !== move.id) return this.effectState.move[0];
+ return;
+ }
+ case 2:
+ if (this.effectState.move[1] !== move.id) return this.effectState.move[1];
+ return;
+ }
}
},
onResidualOrder: 13,
onResidual(target) {
// early termination if you run out of PP
const lastMove = target.m.lastMoveAbsolute;
- const index = target.moves.indexOf(lastMove.id);
- if (index === -1) return; // no last move
+ const moveSlot = target.getMoveData(lastMove);
+ if (!moveSlot) {
+ target.removeVolatile('encore');
+ return; // no last move
+ }
// @ts-expect-error modded
if (target.hasLinkedMove(lastMove.id)) {
// TODO: Check instead whether the last executed move was linked
if (target.moveSlots[0].pp <= 0 || target.moveSlots[1].pp <= 0) {
- delete target.volatiles.encore;
- this.add('-end', target, 'Encore');
+ target.removeVolatile('encore');
}
} else {
- if (target.moveSlots[index].pp <= 0) {
- delete target.volatiles.encore;
- this.add('-end', target, 'Encore');
+ if (moveSlot.pp <= 0) {
+ target.removeVolatile('encore');
}
}
},
@@ -313,22 +372,25 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
inherit: true,
condition: {
noCopy: true,
- onStart(pokemon) {
+ onStart(pokemon, source, effect) {
if (pokemon.volatiles['dynamax']) {
delete pokemon.volatiles['torment'];
return false;
}
+ if (effect?.id === 'gmaxmeltdown') this.effectState.duration = 3;
this.add('-start', pokemon, 'Torment');
},
onEnd(pokemon) {
this.add('-end', pokemon, 'Torment');
},
onDisableMove(pokemon) {
- const lastMove = pokemon.lastMove;
+ const lastMove = pokemon.m.lastMoveAbsolute;
if (!lastMove || lastMove.id === 'struggle') return;
- if (Array.isArray(lastMove)) {
- for (const move of lastMove) {
+ // @ts-expect-error
+ if (pokemon.hasLinkedMove(lastMove.id)) {
+ // @ts-expect-error
+ for (const move of pokemon.getLinkedMoves()) {
pokemon.disableMove(move.id);
}
} else {
@@ -347,12 +409,13 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
},
onFaint(target, source, effect) {
if (!source || source.fainted || !effect) return;
- const lastMove: Move | ActiveMove | null = source.m.lastMoveAbsolute;
- if (effect.effectType === 'Move' && !effect.flags['futuremove'] && lastMove) {
+ let move = source.m.lastMoveAbsolute;
+ if (effect.effectType === 'Move' && !effect.flags['futuremove'] && move) {
+ if (move.isMax && move.baseMove) move = this.dex.moves.get(move.baseMove);
for (const moveSlot of source.moveSlots) {
- if (moveSlot.id === lastMove.id) {
+ if (moveSlot.id === move.id) {
moveSlot.pp = 0;
- this.add('-activate', source, 'move: Grudge', this.dex.moves.get(lastMove.id).name);
+ this.add('-activate', source, 'move: Grudge', move.name);
}
}
}
@@ -368,11 +431,13 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
spite: {
inherit: true,
onHit(target) {
- const lastMove: Move | ActiveMove | null = target.m.lastMoveAbsolute;
- if (!lastMove || lastMove.isZ || lastMove.isMax) return false;
- const ppDeducted = target.deductPP(lastMove.id, 4);
+ let move: Move | ActiveMove | null = target.m.lastMoveAbsolute;
+ if (!move || move.isZ) return false;
+ if (move.isMax && move.baseMove) move = this.dex.moves.get(move.baseMove);
+
+ const ppDeducted = target.deductPP(move.id, 4);
if (!ppDeducted) return false;
- this.add("-activate", target, 'move: Spite', lastMove.name, ppDeducted);
+ this.add("-activate", target, 'move: Spite', move.name, ppDeducted);
},
},
@@ -407,7 +472,7 @@ export const Moves: import('../../../sim/dex-moves').ModdedMoveDataTable = {
this.add('-singlemove', pokemon, 'Destiny Bond');
},
onFaint(target, source, effect) {
- if (!source || !effect || target.side === source.side) return;
+ if (!source || !effect || target.isAlly(source)) return;
if (effect.effectType === 'Move' && !effect.flags['futuremove']) {
if (source.volatiles['dynamax']) {
this.add('-hint', "Dynamaxed Pokémon are immune to Destiny Bond.");
diff --git a/data/mods/gen8linked/scripts.ts b/data/mods/linked/scripts.ts
similarity index 88%
rename from data/mods/gen8linked/scripts.ts
rename to data/mods/linked/scripts.ts
index 05df2dceba..be4183566c 100644
--- a/data/mods/gen8linked/scripts.ts
+++ b/data/mods/linked/scripts.ts
@@ -1,6 +1,5 @@
export const Scripts: ModdedBattleScriptsData = {
- inherit: 'gen8',
- gen: 8,
+ gen: 9,
getActionSpeed(action) {
if (action.choice === 'move') {
let move = action.move;
@@ -70,40 +69,8 @@ export const Scripts: ModdedBattleScriptsData = {
this.add('start');
- // Change Zacian/Zamazenta into their Crowned formes
for (const pokemon of this.getAllPokemon()) {
- let rawSpecies: Species | null = null;
- if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') {
- rawSpecies = this.dex.species.get('Zacian-Crowned');
- } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') {
- rawSpecies = this.dex.species.get('Zamazenta-Crowned');
- }
- if (!rawSpecies) continue;
- const species = pokemon.setSpecies(rawSpecies);
- if (!species) continue;
- pokemon.baseSpecies = rawSpecies;
- pokemon.details = pokemon.getUpdatedDetails();
- // pokemon.setAbility(species.abilities['0'], null, null, true);
- // pokemon.baseAbility = pokemon.ability;
-
- const behemothMove: { [k: string]: string } = {
- 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash',
- };
- const ironHead = pokemon.baseMoves.indexOf('ironhead');
- if (ironHead >= 0) {
- const move = this.dex.moves.get(behemothMove[rawSpecies.name]);
- pokemon.baseMoveSlots[ironHead] = {
- move: move.name,
- id: move.id,
- pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- target: move.target,
- disabled: false,
- disabledSource: '',
- used: false,
- };
- pokemon.moveSlots = pokemon.baseMoveSlots.slice();
- }
+ this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
}
this.format.onBattleStart?.call(this);
@@ -125,9 +92,6 @@ export const Scripts: ModdedBattleScriptsData = {
}
}
}
- for (const pokemon of this.getAllPokemon()) {
- this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
- }
this.midTurn = true;
break;
}
@@ -141,8 +105,9 @@ export const Scripts: ModdedBattleScriptsData = {
// @ts-expect-error modded
const linkedMoves: ActiveMove[] = action.linked;
for (let i = linkedMoves.length - 1; i >= 0; i--) {
- const validTarget = this.validTargetLoc(action.targetLoc, action.pokemon, linkedMoves[i].target);
- const targetLoc = validTarget ? action.targetLoc : 0;
+ const isValidTarget = this.validTargetLoc(action.targetLoc, action.pokemon, linkedMoves[i].target);
+ const targetLoc = isValidTarget ? action.targetLoc :
+ action.pokemon.getLocOf(this.getRandomTarget(action.pokemon, linkedMoves[i])!);
const pseudoAction: Action = {
choice: 'move', priority: action.priority, speed: action.speed, pokemon: action.pokemon,
targetLoc, moveid: linkedMoves[i].id, move: linkedMoves[i], mega: action.mega,
@@ -367,15 +332,12 @@ export const Scripts: ModdedBattleScriptsData = {
// THIS IS PURELY A SANITY CHECK
// DO NOT TAKE ADVANTAGE OF THIS TO PREVENT A POKEMON FROM MOVING;
// USE this.queue.cancelMove INSTEAD
- this.debug(`${pokemon.id} INCONSISTENT STATE, ALREADY MOVED: ${pokemon.moveThisTurn}`);
- this.clearActiveMove(true);
+ this.battle.debug(`${pokemon.id} INCONSISTENT STATE, ALREADY MOVED: ${pokemon.moveThisTurn}`);
+ this.battle.clearActiveMove(true);
return;
- } */
+ } */
const willTryMove = this.battle.runEvent('BeforeMove', pokemon, target, move);
if (!willTryMove) {
- if (pokemon.volatiles['twoturnmove']?.move === move.id) {
- pokemon.removeVolatile('twoturnmove');
- }
this.battle.runEvent('MoveAborted', pokemon, target, move);
this.battle.clearActiveMove(true);
// The event 'BeforeMove' could have returned false or null
@@ -384,6 +346,12 @@ export const Scripts: ModdedBattleScriptsData = {
pokemon.moveThisTurnResult = willTryMove;
return;
}
+
+ // Used exclusively for a hint later
+ if (move.flags['cantusetwice'] && pokemon.m.lastMoveAbsolute?.id === move.id) {
+ pokemon.addVolatile(move.id);
+ }
+
if (move.beforeMoveCallback) {
if (move.beforeMoveCallback.call(this.battle, pokemon, target, move)) {
this.battle.clearActiveMove(true);
@@ -399,10 +367,6 @@ export const Scripts: ModdedBattleScriptsData = {
if (!lockedMove) {
if (!pokemon.deductPP(baseMove, null, target) && (move.id !== 'struggle')) {
this.battle.add('cant', pokemon, 'nopp', move);
- const gameConsole = [
- null, 'Game Boy', 'Game Boy Color', 'Game Boy Advance', 'DS', 'DS', '3DS', '3DS',
- ][this.battle.gen] || 'Switch';
- this.battle.hint(`This is not a bug, this is really how it works on the ${gameConsole}; try it yourself if you don't believe us.`);
this.battle.clearActiveMove(true);
pokemon.moveThisTurnResult = false;
return;
@@ -420,14 +384,25 @@ export const Scripts: ModdedBattleScriptsData = {
this.battle.add('-zpower', pokemon);
pokemon.side.zMoveUsed = true;
}
+
+ const oldActiveMove = move;
+
const moveDidSomething = this.useMove(baseMove, pokemon, { target, sourceEffect, zMove, maxMove });
this.battle.lastSuccessfulMoveThisTurn = moveDidSomething ? this.battle.activeMove && this.battle.activeMove.id : null;
if (this.battle.activeMove) move = this.battle.activeMove;
this.battle.singleEvent('AfterMove', move, null, pokemon, target, move);
this.battle.runEvent('AfterMove', pokemon, target, move);
+ if (move.flags['cantusetwice'] && pokemon.removeVolatile(move.id)) {
+ this.battle.add('-hint', `Some effects can force a Pokemon to use ${move.name} again in a row.`);
+ }
this.battle.faintMessages();
this.battle.checkWin();
+
+ if (this.battle.gen <= 4) {
+ // In gen 4, the outermost move is considered the last move for Copycat
+ this.battle.activeMove = oldActiveMove;
+ }
},
},
queue: {
@@ -445,13 +420,16 @@ export const Scripts: ModdedBattleScriptsData = {
instaswitch: 3,
beforeTurn: 4,
beforeTurnMove: 5,
+ revivalblessing: 6,
- runUnnerve: 100,
runSwitch: 101,
- // runPrimal: 102, (deprecated)
switch: 103,
megaEvo: 104,
+ megaEvoX: 104,
+ megaEvoY: 104,
runDynamax: 105,
+ terastallize: 106,
+ priorityChargeMove: 107,
shift: 200,
// default is 200 (for moves)
@@ -480,12 +458,37 @@ export const Scripts: ModdedBattleScriptsData = {
pokemon: action.pokemon,
}));
}
+ if (action.megax && !action.pokemon.isSkyDropped()) {
+ actions.unshift(...this.resolveAction({
+ choice: 'megaEvoX',
+ pokemon: action.pokemon,
+ }));
+ }
+ if (action.megay && !action.pokemon.isSkyDropped()) {
+ actions.unshift(...this.resolveAction({
+ choice: 'megaEvoY',
+ pokemon: action.pokemon,
+ }));
+ }
+ if (action.terastallize && !action.pokemon.terastallized) {
+ actions.unshift(...this.resolveAction({
+ choice: 'terastallize',
+ pokemon: action.pokemon,
+ }));
+ }
if (action.maxMove && !action.pokemon.volatiles['dynamax']) {
actions.unshift(...this.resolveAction({
choice: 'runDynamax',
pokemon: action.pokemon,
}));
}
+ if (!action.maxMove && !action.zmove && action.move.priorityChargeCallback) {
+ actions.unshift(...this.resolveAction({
+ choice: 'priorityChargeMove',
+ pokemon: action.pokemon,
+ move: action.move,
+ }));
+ }
action.fractionalPriority = this.battle.runEvent('FractionalPriority', action.pokemon, null, action.move, 0);
const linkedMoves: [string, string] = action.pokemon.getLinkedMoves();
if (
diff --git a/data/mods/mixandmega/scripts.ts b/data/mods/mixandmega/scripts.ts
index 78d85cce0b..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,12 +387,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) return null;
+ return Object.values(item.megaStone)[0];
},
runMegaEvo(pokemon) {
if (pokemon.species.isMega) return false;
diff --git a/data/mods/monkeyspaw/scripts.ts b/data/mods/monkeyspaw/scripts.ts
index ce494c72bd..86a484e7ae 100644
--- a/data/mods/monkeyspaw/scripts.ts
+++ b/data/mods/monkeyspaw/scripts.ts
@@ -193,40 +193,8 @@ export const Scripts: ModdedBattleScriptsData = {
this.add('start');
- // Change Zacian/Zamazenta into their Crowned formes
for (const pokemon of this.getAllPokemon()) {
- let rawSpecies: Species | null = null;
- if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') {
- rawSpecies = this.dex.species.get('Zacian-Crowned');
- } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') {
- rawSpecies = this.dex.species.get('Zamazenta-Crowned');
- }
- if (!rawSpecies) continue;
- const species = pokemon.setSpecies(rawSpecies);
- if (!species) continue;
- pokemon.baseSpecies = rawSpecies;
- pokemon.details = pokemon.getUpdatedDetails();
- pokemon.setAbility(species.abilities['0'], null, null, true);
- pokemon.baseAbility = pokemon.ability;
-
- const behemothMove: { [k: string]: string } = {
- 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash',
- };
- const ironHead = pokemon.baseMoves.indexOf('ironhead');
- if (ironHead >= 0) {
- const move = this.dex.moves.get(behemothMove[rawSpecies.name]);
- pokemon.baseMoveSlots[ironHead] = {
- move: move.name,
- id: move.id,
- pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- target: move.target,
- disabled: false,
- disabledSource: '',
- used: false,
- };
- pokemon.moveSlots = pokemon.baseMoveSlots.slice();
- }
+ this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
}
this.format.onBattleStart?.call(this);
@@ -248,9 +216,6 @@ export const Scripts: ModdedBattleScriptsData = {
}
}
}
- for (const pokemon of this.getAllPokemon()) {
- this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
- }
this.midTurn = true;
break;
}
diff --git a/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/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/moves.ts b/data/moves.ts
index 75b8e29dce..8004f48dfb 100644
--- a/data/moves.ts
+++ b/data/moves.ts
@@ -3480,7 +3480,7 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
flags: { protect: 1, reflectable: 1, mirror: 1, metronome: 1, nosketch: 1 },
status: 'slp',
onTry(source, target, move) {
- if (source.species.name === 'Darkrai' || move.hasBounced) {
+ if (source.species.baseSpecies === 'Darkrai' || move.hasBounced) {
return;
}
this.add('-fail', source, 'move: Dark Void');
@@ -14914,10 +14914,9 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
priority: 0,
flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
beforeTurnCallback(pokemon) {
- for (const side of this.sides) {
- if (side.hasAlly(pokemon)) continue;
- side.addSideCondition('pursuit', pokemon);
- const data = side.getSideConditionData('pursuit');
+ for (const target of pokemon.foes()) {
+ target.addVolatile('pursuit');
+ const data = target.volatiles['pursuit'];
if (!data.sources) {
data.sources = [];
}
@@ -14927,9 +14926,6 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
onModifyMove(move, source, target) {
if (target?.beingCalledBack || target?.switchFlag) move.accuracy = true;
},
- onTryHit(target, pokemon) {
- target.side.removeSideCondition('pursuit');
- },
condition: {
duration: 1,
onBeforeSwitchOut(pokemon) {
@@ -17213,35 +17209,8 @@ export const Moves: import('../sim/dex-moves').MoveDataTable = {
pp: 10,
priority: 0,
flags: { protect: 1, mirror: 1, bypasssub: 1, allyanim: 1, metronome: 1 },
- onTryHit(target, source) {
- const targetAbility = target.getAbility();
- const sourceAbility = source.getAbility();
- if (sourceAbility.flags['failskillswap'] || targetAbility.flags['failskillswap'] || target.volatiles['dynamax']) {
- return false;
- }
- const sourceCanBeSet = this.runEvent('SetAbility', source, source, this.effect, targetAbility);
- if (!sourceCanBeSet) return sourceCanBeSet;
- const targetCanBeSet = this.runEvent('SetAbility', target, source, this.effect, sourceAbility);
- if (!targetCanBeSet) return targetCanBeSet;
- },
onHit(target, source, move) {
- const targetAbility = target.getAbility();
- const sourceAbility = source.getAbility();
- if (target.isAlly(source)) {
- this.add('-activate', source, 'move: Skill Swap', '', '', `[of] ${target}`);
- } else {
- this.add('-activate', source, 'move: Skill Swap', targetAbility, sourceAbility, `[of] ${target}`);
- }
- this.singleEvent('End', sourceAbility, source.abilityState, source);
- this.singleEvent('End', targetAbility, target.abilityState, target);
- source.ability = targetAbility.id;
- target.ability = sourceAbility.id;
- source.abilityState = this.initEffectState({ id: this.toID(source.ability), target: source });
- target.abilityState = this.initEffectState({ id: this.toID(target.ability), target });
- source.volatileStaleness = undefined;
- if (!target.isAlly(source)) target.volatileStaleness = 'external';
- this.singleEvent('Start', targetAbility, source.abilityState, source);
- this.singleEvent('Start', sourceAbility, target.abilityState, target);
+ return this.skillSwap(source, target);
},
secondary: null,
target: "normal",
diff --git a/data/pokedex.ts b/data/pokedex.ts
index 15f545e973..e0700637b1 100644
--- a/data/pokedex.ts
+++ b/data/pokedex.ts
@@ -12034,7 +12034,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
types: ["Grass", "Fighting"],
genderRatio: { M: 0.875, F: 0.125 },
baseStats: { hp: 88, atk: 137, def: 172, spa: 74, spd: 115, spe: 44 },
- abilities: { 0: "Overgrow", H: "Bulletproof" },
+ abilities: { 0: "Bulletproof" },
heightm: 1.6,
weightkg: 90,
color: "Green",
@@ -12094,7 +12094,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
types: ["Fire", "Psychic"],
genderRatio: { M: 0.875, F: 0.125 },
baseStats: { hp: 75, atk: 69, def: 72, spa: 159, spd: 125, spe: 134 },
- abilities: { 0: "Blaze", H: "Magician" },
+ abilities: { 0: "Levitate" },
heightm: 1.5,
weightkg: 39,
color: "Red",
@@ -12186,7 +12186,7 @@ export const Pokedex: import('../sim/dex-species').SpeciesDataTable = {
types: ["Water", "Dark"],
genderRatio: { M: 0.875, F: 0.125 },
baseStats: { hp: 72, atk: 125, def: 77, spa: 133, spd: 81, spe: 142 },
- abilities: { 0: "Torrent", H: "Protean" },
+ abilities: { 0: "Protean" },
heightm: 1.5,
weightkg: 40,
color: "Blue",
diff --git a/data/random-battles/chatbats/random-sets.json b/data/random-battles/chatbats/random-sets.json
index 8bddf6d58c..615908c2c4 100644
--- a/data/random-battles/chatbats/random-sets.json
+++ b/data/random-battles/chatbats/random-sets.json
@@ -926,7 +926,7 @@
]
},
"swanna": {
- "level": 84,
+ "level": 82,
"sets": [
{
"role": "Fast Attacker",
@@ -937,7 +937,7 @@
]
},
"typhlosionmega": {
- "level": 84,
+ "level": 82,
"sets": [
{
"role": "Fast Attacker",
@@ -954,7 +954,7 @@
]
},
"terapagos": {
- "level": 84,
+ "level": 82,
"sets": [
{
"role": "Bulky Setup",
@@ -982,7 +982,7 @@
]
},
"genesectburn": {
- "level": 84,
+ "level": 82,
"sets": [
{
"role": "Wallbreaker",
@@ -1004,7 +1004,7 @@
]
},
"genesectdouse": {
- "level": 84,
+ "level": 82,
"sets": [
{
"role": "Wallbreaker",
@@ -1015,7 +1015,7 @@
]
},
"genesectshock": {
- "level": 84,
+ "level": 80,
"sets": [
{
"role": "Wallbreaker",
@@ -1162,5 +1162,27 @@
"teraTypes": ["Grass"]
}
]
+ },
+ "wobbuffet": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["Counter", "Mirror Coat", "Shed Tail", "Encore", "Guillotine", "Night Shade"],
+ "abilities": ["Jello Body"],
+ "teraTypes": ["Dark", "Steel"]
+ }
+ ]
+ },
+ "raticatemega": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["Super Fang", "Hyper Fang", "Last Breakfast", "U-turn"],
+ "abilities": ["Hustle"],
+ "teraTypes": ["Normal"]
+ }
+ ]
}
}
diff --git a/data/random-battles/chatbats/teams.ts b/data/random-battles/chatbats/teams.ts
index 162d21c248..fa7f264372 100644
--- a/data/random-battles/chatbats/teams.ts
+++ b/data/random-battles/chatbats/teams.ts
@@ -236,6 +236,8 @@ export class RandomChatBatsTeams extends RandomTeams {
if (species.id === 'feraligatrmega') this.incompatibleMoves(moves, movePool, 'thunderfang', 'poisonfang');
if (species.id === 'salazzle') this.incompatibleMoves(moves, movePool, 'malignantchain', 'venoshock');
if (species.id === 'glimmora') this.incompatibleMoves(moves, movePool, 'powergem', 'meteorbeam');
+ if (species.id === 'wobbuffet') this.incompatibleMoves(moves, movePool, 'shedtail', 'encore');
+ if (species.id === 'wobbuffet') this.incompatibleMoves(moves, movePool, 'nightshade', 'guillotine');
}
override randomMoveset(
@@ -724,6 +726,7 @@ export class RandomChatBatsTeams extends RandomTeams {
if (species.id === 'ogerponcornerstone') return 'Cornerstone Mask';
if (species.id === 'glimmora' && moves.has('meteorbeam')) return 'Power Herb';
if (species.id === 'glimmora') return 'Air Balloon';
+ if (species.id === 'wobbuffet') return 'Covert Cloak';
}
override randomSet(
@@ -897,7 +900,7 @@ export class RandomChatBatsTeams extends RandomTeams {
let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1;
while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) {
const baseSpecies = this.sampleNoReplace(baseSpeciesPool);
- if (hasMega && (baseSpecies === "Typhlosion" || baseSpecies === "Altaria")) continue;
+ if (hasMega && (baseSpecies === "Typhlosion" || baseSpecies === "Altaria" || baseSpecies === "Raticate")) continue;
const currentSpeciesPool: Species[] = [];
// Check if the base species has a mega forme available
// let canMega = false;
@@ -1008,7 +1011,7 @@ export class RandomChatBatsTeams extends RandomTeams {
// if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd;
// testing code
- // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Feraligatr-Mega');
+ // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Raticate-Mega');
let set: RandomTeamsTypes.RandomSet;
diff --git a/data/random-battles/gen1/data.json b/data/random-battles/gen1/data.json
index e4b9c52378..f6ebda9799 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"]
},
@@ -245,7 +245,7 @@
"persian": {
"level": 73,
"moves": ["bodyslam", "bubblebeam", "slash"],
- "exclusiveMoves": ["hyperbeam", "thunderbolt"]
+ "exclusiveMoves": ["hyperbeam", "thunderbolt", "thunderbolt", "thunderbolt"]
},
"psyduck": {
"level": 89,
@@ -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": {
@@ -574,7 +574,8 @@
},
"mrmime": {
"level": 75,
- "moves": ["psychic", "seismictoss", "thunderbolt", "thunderwave"]
+ "moves": ["psychic", "thunderbolt", "thunderwave"],
+ "exclusiveMoves": ["counter", "seismictoss", "seismictoss"]
},
"scyther": {
"level": 75,
@@ -608,7 +609,8 @@
},
"gyarados": {
"level": 74,
- "moves": ["blizzard", "bodyslam", "bodyslam", "hyperbeam", "thunderbolt"],
+ "moves": ["blizzard", "hyperbeam", "thunderbolt"],
+ "essentialMoves": ["bodyslam"],
"exclusiveMoves": ["hydropump", "surf", "surf"]
},
"lapras": {
@@ -658,8 +660,7 @@
},
"kabuto": {
"level": 88,
- "moves": ["blizzard", "bodyslam", "slash"],
- "exclusiveMoves": ["hydropump", "surf", "surf"]
+ "moves": ["blizzard", "bodyslam", "slash", "surf"]
},
"kabutops": {
"level": 75,
@@ -693,7 +694,7 @@
"exclusiveMoves": ["doubleedge", "doubleedge", "doubleedge", "reflect"]
},
"dratini": {
- "level": 89,
+ "level": 91,
"moves": ["bodyslam", "hyperbeam", "thunderbolt", "thunderbolt"],
"essentialMoves": ["blizzard", "thunderwave"]
},
@@ -704,8 +705,8 @@
},
"dragonite": {
"level": 74,
- "moves": ["bodyslam", "hyperbeam", "thunderbolt", "thunderwave", "thunderwave"],
- "essentialMoves": ["blizzard"]
+ "moves": ["bodyslam", "hyperbeam", "thunderbolt"],
+ "essentialMoves": ["blizzard", "thunderwave"]
},
"mewtwo": {
"level": 60,
diff --git a/data/random-battles/gen2/sets.json b/data/random-battles/gen2/sets.json
index b6a7ff2490..f119307e27 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",
@@ -449,7 +450,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["explosion", "icebeam", "rapidspin", "spikes", "surf", "toxic"]
+ "movepool": ["explosion", "icebeam", "spikes", "surf"]
},
{
"role": "Generalist",
@@ -1359,11 +1360,7 @@
"sets": [
{
"role": "Generalist",
- "movepool": ["haze", "hydropump", "rest", "sleeptalk", "sludgebomb", "spikes"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["curse", "hiddenpowerground", "hydropump", "sludgebomb", "spikes"]
+ "movepool": ["curse", "haze", "hydropump", "sludgebomb", "spikes"]
}
]
},
diff --git a/data/random-battles/gen2/teams.ts b/data/random-battles/gen2/teams.ts
index 36022fc378..5e90da3e81 100644
--- a/data/random-battles/gen2/teams.ts
+++ b/data/random-battles/gen2/teams.ts
@@ -473,6 +473,7 @@ export class RandomGen2Teams extends RandomGen3Teams {
return {
name: species.baseSpecies,
species: forme,
+ speciesId: species.id,
level,
moves: shuffledMoves,
ability: 'No Ability',
@@ -485,6 +486,33 @@ export class RandomGen2Teams extends RandomGen3Teams {
gender: species.gender ? species.gender : 'M',
};
}
+
+ /**
+ * Checks if the new species is compatible with the other mons currently on the team.
+ */
+ override getPokemonCompatibility(
+ species: Species,
+ pokemon: RandomTeamsTypes.RandomSet[],
+ ): boolean {
+ const spikesSetters = ['cloyster', 'delibird', 'qwilfish', 'forretress', 'smeargle'];
+ const incompatibilityList = [
+ // These combinations are prevented to avoid double spikes.
+ [spikesSetters, spikesSetters],
+ ];
+
+ for (const pair of incompatibilityList) {
+ const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]];
+ const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]];
+ if (monsArrayB.includes(species.id)) {
+ if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false;
+ }
+ if (monsArrayA.includes(species.id)) {
+ if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false;
+ }
+ }
+
+ return true;
+ }
}
export default RandomGen2Teams;
diff --git a/data/random-battles/gen3/sets.json b/data/random-battles/gen3/sets.json
index 1e31a94ef3..0274430dd1 100644
--- a/data/random-battles/gen3/sets.json
+++ b/data/random-battles/gen3/sets.json
@@ -188,9 +188,14 @@
"level": 82,
"sets": [
{
- "role": "Wallbreaker",
+ "role": "Fast Attacker",
"movepool": ["earthquake", "fireblast", "icebeam", "shadowball", "sludgebomb", "substitute", "thunderbolt"],
"abilities": ["Poison Point"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthquake", "fireblast", "icebeam", "rockslide", "shadowball", "sludgebomb"],
+ "abilities": ["Poison Point"]
}
]
},
@@ -198,9 +203,14 @@
"level": 82,
"sets": [
{
- "role": "Wallbreaker",
+ "role": "Fast Attacker",
"movepool": ["earthquake", "fireblast", "icebeam", "megahorn", "shadowball", "sludgebomb", "substitute", "thunderbolt"],
"abilities": ["Poison Point"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthquake", "fireblast", "icebeam", "megahorn", "rockslide", "shadowball", "sludgebomb"],
+ "abilities": ["Poison Point"]
}
]
},
@@ -342,7 +352,7 @@
]
},
"arcanine": {
- "level": 79,
+ "level": 78,
"sets": [
{
"role": "Bulky Support",
@@ -387,7 +397,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "encore", "firepunch", "icepunch", "psychic", "recover", "substitute", "thunderpunch"],
+ "movepool": ["calmmind", "encore", "firepunch", "hiddenpowerdark", "psychic", "recover", "substitute", "thunderpunch"],
"abilities": ["Synchronize"],
"preferredTypes": ["Fire"]
}
@@ -474,7 +484,7 @@
},
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "psychic", "rest", "surf"],
+ "movepool": ["calmmind", "psychic", "surf", "thunderwave"],
"abilities": ["Own Tempo"]
},
{
@@ -510,7 +520,7 @@
]
},
"dodrio": {
- "level": 77,
+ "level": 78,
"sets": [
{
"role": "Wallbreaker",
@@ -544,13 +554,13 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["explosion", "fireblast", "hiddenpowerground", "rest", "sludgebomb", "toxic"],
+ "movepool": ["explosion", "fireblast", "hiddenpowerground", "sludgebomb", "toxic"],
"abilities": ["Sticky Hold"],
"preferredTypes": ["Ground"]
},
{
"role": "Setup Sweeper",
- "movepool": ["curse", "hiddenpowerground", "rest", "sludgebomb"],
+ "movepool": ["curse", "explosion", "hiddenpowerground", "sludgebomb"],
"abilities": ["Sticky Hold"]
}
]
@@ -608,6 +618,11 @@
"role": "Setup Sweeper",
"movepool": ["doubleedge", "hiddenpowerghost", "hiddenpowerground", "surf", "swordsdance"],
"abilities": ["Hyper Cutter"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["doubleedge", "hiddenpowerghost", "mudshot", "swordsdance"],
+ "abilities": ["Hyper Cutter"]
}
]
},
@@ -806,7 +821,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "hiddenpowerfire", "icebeam", "lovelykiss", "psychic", "substitute"],
+ "movepool": ["calmmind", "icebeam", "lovelykiss", "psychic", "substitute"],
"abilities": ["Oblivious"]
}
]
@@ -1063,7 +1078,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["doubleedge", "dragondance", "earthquake", "healbell", "hiddenpowerflying", "rest", "substitute"],
+ "movepool": ["doubleedge", "dragondance", "earthquake", "healbell", "hiddenpowerflying", "substitute"],
"abilities": ["Inner Focus"],
"preferredTypes": ["Ground"]
},
@@ -1176,7 +1191,7 @@
]
},
"noctowl": {
- "level": 92,
+ "level": 93,
"sets": [
{
"role": "Staller",
@@ -1479,7 +1494,7 @@
},
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "psychic", "rest", "surf"],
+ "movepool": ["calmmind", "psychic", "surf", "thunderwave"],
"abilities": ["Own Tempo"]
},
{
@@ -1544,7 +1559,7 @@
},
{
"role": "Wallbreaker",
- "movepool": ["doubleedge", "earthquake", "protect", "psychic", "return", "shadowball", "thunderbolt", "thunderwave", "toxic", "wish"],
+ "movepool": ["doubleedge", "earthquake", "protect", "psychic", "return", "thunderwave", "toxic", "wish"],
"abilities": ["Early Bird"]
}
]
@@ -1564,7 +1579,7 @@
"sets": [
{
"role": "Bulky Setup",
- "movepool": ["bodyslam", "curse", "earthquake", "rest", "shadowball"],
+ "movepool": ["bodyslam", "curse", "earthquake", "rest", "shadowball", "sleeptalk"],
"abilities": ["Serene Grace"]
},
{
@@ -1753,7 +1768,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["calmmind", "icebeam", "recover", "surf", "toxic"],
+ "movepool": ["calmmind", "explosion", "icebeam", "recover", "surf", "toxic"],
"abilities": ["Natural Cure"]
}
]
@@ -2482,11 +2497,6 @@
"role": "Bulky Support",
"movepool": ["encore", "moonlight", "seismictoss", "thunderwave", "toxic"],
"abilities": ["Oblivious"]
- },
- {
- "role": "Generalist",
- "movepool": ["batonpass", "encore", "seismictoss", "substitute", "thunderwave", "toxic"],
- "abilities": ["Oblivious"]
}
]
},
@@ -2561,7 +2571,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["explosion", "fireblast", "flamethrower", "hiddenpowergrass", "rest", "toxic"],
+ "movepool": ["explosion", "fireblast", "flamethrower", "hiddenpowergrass", "toxic"],
"abilities": ["White Smoke"]
}
]
@@ -2571,7 +2581,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "firepunch", "psychic", "substitute", "thunderpunch"],
+ "movepool": ["calmmind", "firepunch", "hiddenpowerdark", "psychic", "substitute"],
"abilities": ["Thick Fat"],
"preferredTypes": ["Fire"]
}
@@ -2602,18 +2612,18 @@
},
{
"role": "Staller",
- "movepool": ["dragonclaw", "earthquake", "fireblast", "protect", "toxic"],
+ "movepool": ["dragonclaw", "earthquake", "fireblast", "protect", "rockslide", "toxic"],
"abilities": ["Levitate"]
},
{
- "role": "Bulky Attacker",
+ "role": "Staller",
"movepool": ["dragonclaw", "earthquake", "fireblast", "rockslide", "substitute", "toxic"],
"abilities": ["Levitate"]
}
]
},
"cacturne": {
- "level": 95,
+ "level": 96,
"sets": [
{
"role": "Staller",
@@ -2690,7 +2700,7 @@
},
{
"role": "Wallbreaker",
- "movepool": ["earthquake", "explosion", "overheat", "rockslide", "shadowball"],
+ "movepool": ["earthquake", "explosion", "rockslide", "shadowball"],
"abilities": ["Levitate"],
"preferredTypes": ["Ground"]
}
@@ -2781,7 +2791,7 @@
]
},
"kecleon": {
- "level": 91,
+ "level": 92,
"sets": [
{
"role": "Wallbreaker",
@@ -3024,7 +3034,7 @@
]
},
"latios": {
- "level": 67,
+ "level": 66,
"sets": [
{
"role": "Bulky Setup",
@@ -3053,7 +3063,12 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["earthquake", "hiddenpowerbug", "overheat", "rockslide", "substitute", "swordsdance", "thunderwave"],
+ "movepool": ["earthquake", "overheat", "rockslide", "thunderwave"],
+ "abilities": ["Drought"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "hiddenpowerbug", "rockslide", "substitute", "swordsdance", "thunderwave"],
"abilities": ["Drought"],
"preferredTypes": ["Rock"]
}
@@ -3086,9 +3101,8 @@
},
{
"role": "Setup Sweeper",
- "movepool": ["calmmind", "firepunch", "icepunch", "psychic", "substitute", "thunderbolt"],
- "abilities": ["Serene Grace"],
- "preferredTypes": ["Fire"]
+ "movepool": ["calmmind", "firepunch", "icepunch", "psychic", "thunderbolt"],
+ "abilities": ["Serene Grace"]
}
]
},
@@ -3097,7 +3111,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["extremespeed", "firepunch", "icebeam", "psychoboost", "shadowball", "superpower"],
+ "movepool": ["extremespeed", "icebeam", "psychoboost", "shadowball", "superpower"],
"abilities": ["Pressure"],
"preferredTypes": ["Fighting", "Ghost"]
}
@@ -3108,7 +3122,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["extremespeed", "firepunch", "icebeam", "psychoboost", "shadowball", "superpower"],
+ "movepool": ["extremespeed", "icebeam", "psychoboost", "shadowball", "superpower"],
"abilities": ["Pressure"],
"preferredTypes": ["Fighting", "Ghost"]
}
diff --git a/data/random-battles/gen3/teams.ts b/data/random-battles/gen3/teams.ts
index ff59db9377..c260b28708 100644
--- a/data/random-battles/gen3/teams.ts
+++ b/data/random-battles/gen3/teams.ts
@@ -467,16 +467,10 @@ export class RandomGen3Teams extends RandomGen4Teams {
if (species.id === 'marowak') return 'Thick Club';
if (species.id === 'pikachu') return 'Light Ball';
if (species.id === 'shedinja') return 'Lum Berry';
- if (species.id === 'shuckle') return 'Leftovers';
if (species.id === 'unown') return counter.get('Physical') ? 'Choice Band' : 'Twisted Spoon';
if (species.id === 'deoxys' || species.id === 'deoxysattack') return 'White Herb';
if (moves.has('trick')) return 'Choice Band';
- if (
- moves.has('rest') && !moves.has('sleeptalk') &&
- // Altaria wants Chesto Berry on Dragon Dance + Rest
- (moves.has('dragondance') || !['Early Bird', 'Natural Cure', 'Shed Skin'].includes(ability))
- ) return 'Chesto Berry';
// Medium priority items
if (counter.get('Physical') >= 4) return 'Choice Band';
@@ -624,6 +618,7 @@ export class RandomGen3Teams extends RandomGen4Teams {
return {
name: species.baseSpecies,
species: forme,
+ speciesId: species.id,
gender: species.gender,
shiny: this.randomChance(1, 1024),
level,
@@ -636,6 +631,35 @@ export class RandomGen3Teams extends RandomGen4Teams {
};
}
+ /**
+ * Checks if the new species is compatible with the other mons currently on the team.
+ */
+ override getPokemonCompatibility(
+ species: Species,
+ pokemon: RandomTeamsTypes.RandomSet[],
+ ): boolean {
+ const incompatibilityList = [
+ // These Pokemon are incompatible because the presence of one actively harms the other.
+ // Prevent Shedinja + Tyranitar
+ ['shedinja', 'tyranitar'],
+ // Prevent Reversal/Flail users + Tyranitar
+ [['dodrio', 'raticate', 'primeape', 'hitmonlee', 'furret', 'yanma', 'heracross', 'blaziken', 'medicham'], 'tyranitar'],
+ ];
+
+ for (const pair of incompatibilityList) {
+ const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]];
+ const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]];
+ if (monsArrayB.includes(species.id)) {
+ if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false;
+ }
+ if (monsArrayA.includes(species.id)) {
+ if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false;
+ }
+ }
+
+ return true;
+ }
+
override randomTeam() {
this.enforceNoDirectCustomBanlistChanges();
@@ -665,9 +689,6 @@ export class RandomGen3Teams extends RandomGen4Teams {
// Limit to one of each species (Species Clause)
if (baseFormes[species.baseSpecies]) continue;
- // Prevent Shedinja from generating after Tyranitar
- if (species.name === 'Shedinja' && teamDetails.sand) continue;
-
// Limit to one Wobbuffet per battle (not just per team)
if (species.name === 'Wobbuffet' && this.battleHasWobbuffet) continue;
// Limit to one Ditto per battle in Gen 2
@@ -713,6 +734,9 @@ export class RandomGen3Teams extends RandomGen4Teams {
if (!this.adjustLevel && (this.getLevel(species) === 100) && numMaxLevelPokemon >= limitFactor) {
continue;
}
+
+ // Check compatibility with team
+ if (!this.getPokemonCompatibility(species, pokemon)) continue;
}
// Okay, the set passes, add it to our team
diff --git a/data/random-battles/gen4/sets.json b/data/random-battles/gen4/sets.json
index 634f823019..1b94aa0a29 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",
@@ -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"]
}
]
},
@@ -851,7 +856,7 @@
]
},
"snorlax": {
- "level": 77,
+ "level": 78,
"sets": [
{
"role": "Bulky Attacker",
@@ -872,7 +877,7 @@
]
},
"articuno": {
- "level": 81,
+ "level": 82,
"sets": [
{
"role": "Staller",
@@ -897,7 +902,7 @@
]
},
"moltres": {
- "level": 81,
+ "level": 82,
"sets": [
{
"role": "Bulky Attacker",
@@ -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"]
}
]
},
@@ -1171,7 +1181,6 @@
"abilities": ["Water Absorb"]
},
{
-
"role": "Bulky Attacker",
"movepool": ["earthquake", "recover", "toxic", "waterfall"],
"abilities": ["Water Absorb"]
@@ -1236,7 +1245,7 @@
]
},
"wobbuffet": {
- "level": 86,
+ "level": 87,
"sets": [
{
"role": "Bulky Support",
@@ -1299,9 +1308,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"]
}
]
@@ -1311,7 +1325,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["destinybond", "explosion", "spikes", "thunderwave", "toxicspikes", "waterfall"],
+ "movepool": ["destinybond", "explosion", "poisonjab", "spikes", "thunderwave", "toxicspikes", "waterfall"],
"abilities": ["Poison Point", "Swift Swim"]
}
]
@@ -1342,7 +1356,7 @@
]
},
"heracross": {
- "level": 80,
+ "level": 79,
"sets": [
{
"role": "Wallbreaker",
@@ -1352,7 +1366,8 @@
{
"role": "Fast Attacker",
"movepool": ["closecombat", "earthquake", "megahorn", "nightslash", "stoneedge", "swordsdance"],
- "abilities": ["Guts"]
+ "abilities": ["Guts"],
+ "preferredTypes": ["Rock"]
}
]
},
@@ -1475,16 +1490,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"]
}
]
},
@@ -1503,7 +1512,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["earthquake", "hypnosis", "megahorn", "return", "suckerpunch", "thunderbolt"],
+ "movepool": ["doubleedge", "earthquake", "hypnosis", "megahorn", "return", "suckerpunch", "thunderbolt", "thunderwave"],
"abilities": ["Intimidate"],
"preferredTypes": ["Ground"]
}
@@ -1631,7 +1640,7 @@
]
},
"hooh": {
- "level": 72,
+ "level": 73,
"sets": [
{
"role": "Bulky Attacker",
@@ -1680,13 +1689,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"]
}
]
@@ -2114,9 +2123,14 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "selfdestruct", "waterspout"],
+ "movepool": ["hydropump", "icebeam", "selfdestruct", "waterspout"],
"abilities": ["Water Veil"],
"preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["icebeam", "selfdestruct", "surf", "toxic"],
+ "abilities": ["Water Veil"]
}
]
},
@@ -2136,7 +2150,7 @@
]
},
"torkoal": {
- "level": 88,
+ "level": 87,
"sets": [
{
"role": "Bulky Support",
@@ -2355,7 +2369,7 @@
]
},
"kecleon": {
- "level": 91,
+ "level": 92,
"sets": [
{
"role": "Bulky Support",
@@ -2370,7 +2384,7 @@
{
"role": "Wallbreaker",
"movepool": ["hiddenpowerfighting", "shadowclaw", "shadowsneak", "thunderwave", "willowisp"],
- "abilities": ["Frisk", "Insomnia"]
+ "abilities": ["Insomnia"]
}
]
},
@@ -2525,7 +2539,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["earthquake", "explosion", "rest", "stealthrock", "stoneedge", "thunderwave", "toxic"],
+ "movepool": ["earthquake", "explosion", "stealthrock", "stoneedge", "thunderwave", "toxic"],
"abilities": ["Clear Body"]
},
{
@@ -2654,7 +2668,7 @@
]
},
"jirachi": {
- "level": 75,
+ "level": 74,
"sets": [
{
"role": "Bulky Support",
@@ -2685,7 +2699,7 @@
]
},
"deoxysattack": {
- "level": 72,
+ "level": 71,
"sets": [
{
"role": "Wallbreaker",
@@ -2710,7 +2724,7 @@
]
},
"deoxysspeed": {
- "level": 79,
+ "level": 80,
"sets": [
{
"role": "Fast Support",
@@ -2930,7 +2944,7 @@
]
},
"floatzel": {
- "level": 84,
+ "level": 83,
"sets": [
{
"role": "Fast Attacker",
@@ -2946,7 +2960,7 @@
]
},
"cherrim": {
- "level": 96,
+ "level": 95,
"sets": [
{
"role": "Staller",
@@ -3013,9 +3027,14 @@
"movepool": ["destinybond", "hiddenpowerfighting", "painsplit", "shadowball", "substitute", "taunt", "willowisp"],
"abilities": ["Levitate"]
},
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "substitute", "thunderbolt"],
+ "abilities": ["Levitate"]
+ },
{
"role": "Wallbreaker",
- "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "thunderbolt", "trick"],
+ "movepool": ["hiddenpowerfighting", "shadowball", "thunderbolt", "trick"],
"abilities": ["Levitate"]
}
]
@@ -3127,7 +3146,7 @@
]
},
"hippowdon": {
- "level": 80,
+ "level": 79,
"sets": [
{
"role": "Bulky Support",
@@ -3496,7 +3515,7 @@
]
},
"rotomfan": {
- "level": 79,
+ "level": 78,
"sets": [
{
"role": "Bulky Attacker",
@@ -3616,7 +3635,7 @@
]
},
"regigigas": {
- "level": 82,
+ "level": 83,
"sets": [
{
"role": "Staller",
@@ -3686,7 +3705,7 @@
]
},
"darkrai": {
- "level": 69,
+ "level": 68,
"sets": [
{
"role": "Setup Sweeper",
diff --git a/data/random-battles/gen4/teams.ts b/data/random-battles/gen4/teams.ts
index f06f4e7684..beadb292ca 100644
--- a/data/random-battles/gen4/teams.ts
+++ b/data/random-battles/gen4/teams.ts
@@ -210,22 +210,11 @@ export class RandomGen4Teams extends RandomGen5Teams {
for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
- const statusInflictingMoves = ['stunspore', 'thunderwave', 'toxic', 'willowisp', 'yawn'];
+ const statusInflictingMoves = ['hypnosis', 'stunspore', 'thunderwave', 'toxic', 'willowisp', 'yawn'];
if (role !== 'Staller') {
this.incompatibleMoves(moves, movePool, statusInflictingMoves, statusInflictingMoves);
}
- // 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']);
@@ -777,6 +766,7 @@ export class RandomGen4Teams extends RandomGen5Teams {
return {
name: species.baseSpecies,
species: forme,
+ speciesId: species.id,
gender: species.gender,
shiny: this.randomChance(1, 1024),
level,
@@ -788,6 +778,35 @@ export class RandomGen4Teams extends RandomGen5Teams {
role,
};
}
+
+ /**
+ * Checks if the new species is compatible with the other mons currently on the team.
+ */
+ override getPokemonCompatibility(
+ species: Species,
+ pokemon: RandomTeamsTypes.RandomSet[],
+ ): boolean {
+ const incompatibilityList = [
+ // These Pokemon are incompatible because the presence of one actively harms the other.
+ // Prevent Dry Skin + sun setting ability
+ [['parasect', 'toxicroak'], 'groudon'],
+ // Prevent Shedinja + sand/hail setting ability
+ ['shedinja', ['tyranitar', 'hippowdon', 'abomasnow']],
+ ];
+
+ for (const pair of incompatibilityList) {
+ const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]];
+ const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]];
+ if (monsArrayB.includes(species.id)) {
+ if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false;
+ }
+ if (monsArrayA.includes(species.id)) {
+ if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false;
+ }
+ }
+
+ return true;
+ }
}
export default RandomGen4Teams;
diff --git a/data/random-battles/gen5/sets.json b/data/random-battles/gen5/sets.json
index bfe85d332c..53315306f1 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",
@@ -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"]
}
]
},
@@ -451,20 +458,15 @@
"level": 83,
"sets": [
{
- "role": "Bulky Support",
+ "role": "Bulky Attacker",
"movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
- "abilities": ["Regenerator"]
+ "abilities": ["Regenerator"],
+ "preferredTypes": ["Psychic"]
},
{
"role": "Staller",
"movepool": ["calmmind", "psyshock", "scald", "slackoff"],
"abilities": ["Regenerator"]
- },
- {
- "role": "Wallbreaker",
- "movepool": ["fireblast", "icebeam", "psyshock", "surf", "trick", "trickroom"],
- "abilities": ["Regenerator"],
- "preferredTypes": ["Psychic"]
}
]
},
@@ -515,7 +517,7 @@
]
},
"cloyster": {
- "level": 78,
+ "level": 79,
"sets": [
{
"role": "Setup Sweeper",
@@ -529,7 +531,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"]
}
@@ -644,7 +646,7 @@
]
},
"rhydon": {
- "level": 83,
+ "level": 82,
"sets": [
{
"role": "Bulky Attacker",
@@ -913,7 +915,7 @@
]
},
"articuno": {
- "level": 84,
+ "level": 83,
"sets": [
{
"role": "Staller",
@@ -983,7 +985,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"],
+ "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"],
"abilities": ["Unnerve"]
}
]
@@ -1189,7 +1191,7 @@
]
},
"jumpluff": {
- "level": 82,
+ "level": 81,
"sets": [
{
"role": "Fast Support",
@@ -1267,13 +1269,8 @@
"level": 83,
"sets": [
{
- "role": "Bulky Support",
+ "role": "Bulky Attacker",
"movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
- "abilities": ["Regenerator"]
- },
- {
- "role": "Wallbreaker",
- "movepool": ["fireblast", "icebeam", "psyshock", "surf", "trick", "trickroom"],
"abilities": ["Regenerator"],
"preferredTypes": ["Psychic"]
}
@@ -1310,7 +1307,7 @@
]
},
"forretress": {
- "level": 78,
+ "level": 79,
"sets": [
{
"role": "Bulky Support",
@@ -1373,9 +1370,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"]
}
]
@@ -1385,7 +1387,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
+ "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
"abilities": ["Intimidate"]
}
]
@@ -1432,7 +1434,7 @@
]
},
"ursaring": {
- "level": 85,
+ "level": 84,
"sets": [
{
"role": "Wallbreaker",
@@ -1467,7 +1469,7 @@
]
},
"octillery": {
- "level": 91,
+ "level": 92,
"sets": [
{
"role": "Bulky Attacker",
@@ -1545,16 +1547,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"]
}
]
},
@@ -1573,7 +1569,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["doubleedge", "earthquake", "hypnosis", "jumpkick", "megahorn", "suckerpunch", "thunderwave"],
+ "movepool": ["doubleedge", "earthquake", "hypnosis", "jumpkick", "megahorn", "return", "suckerpunch", "thunderwave"],
"abilities": ["Intimidate"],
"preferredTypes": ["Ground"]
}
@@ -1711,7 +1707,7 @@
]
},
"celebi": {
- "level": 81,
+ "level": 80,
"sets": [
{
"role": "Fast Attacker",
@@ -2187,7 +2183,7 @@
]
},
"grumpig": {
- "level": 92,
+ "level": 91,
"sets": [
{
"role": "Bulky Attacker",
@@ -2388,7 +2384,7 @@
]
},
"castform": {
- "level": 97,
+ "level": 98,
"sets": [
{
"role": "Bulky Attacker",
@@ -2398,7 +2394,7 @@
]
},
"kecleon": {
- "level": 94,
+ "level": 95,
"sets": [
{
"role": "Bulky Support",
@@ -2413,7 +2409,7 @@
{
"role": "Wallbreaker",
"movepool": ["hiddenpowerfighting", "shadowclaw", "shadowsneak", "thunderwave", "willowisp"],
- "abilities": ["Cursed Body", "Frisk", "Insomnia"]
+ "abilities": ["Insomnia"]
}
]
},
@@ -2542,7 +2538,7 @@
]
},
"salamence": {
- "level": 75,
+ "level": 74,
"sets": [
{
"role": "Setup Sweeper",
@@ -2702,7 +2698,7 @@
]
},
"jirachi": {
- "level": 75,
+ "level": 74,
"sets": [
{
"role": "Bulky Support",
@@ -2777,7 +2773,7 @@
]
},
"infernape": {
- "level": 79,
+ "level": 78,
"sets": [
{
"role": "Wallbreaker",
@@ -2848,7 +2844,7 @@
]
},
"luxray": {
- "level": 89,
+ "level": 88,
"sets": [
{
"role": "Wallbreaker",
@@ -2934,7 +2930,7 @@
]
},
"wormadamtrash": {
- "level": 88,
+ "level": 87,
"sets": [
{
"role": "Staller",
@@ -3059,9 +3055,14 @@
"abilities": ["Levitate"]
},
{
- "role": "Wallbreaker",
- "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "thunderbolt", "trick"],
+ "role": "Setup Sweeper",
+ "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "substitute", "thunderbolt"],
"abilities": ["Levitate"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerfighting", "shadowball", "thunderbolt", "trick"],
+ "abilities": ["Levitate"]
}
]
},
@@ -3268,7 +3269,7 @@
{
"role": "Fast Attacker",
"movepool": ["flashcannon", "hiddenpowerfire", "hiddenpowerground", "hiddenpowerice", "thunderbolt", "voltswitch"],
- "abilities": ["Magnet Pull"]
+ "abilities": ["Analytic", "Magnet Pull"]
},
{
"role": "Staller",
@@ -3308,12 +3309,12 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["earthquake", "hiddenpowerfire", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder"],
+ "movepool": ["earthquake", "gigadrain", "hiddenpowerfire", "leafstorm", "leechseed", "morningsun", "rockslide", "sleeppowder"],
"abilities": ["Regenerator"]
},
{
"role": "Bulky Support",
- "movepool": ["earthquake", "hiddenpowerfire", "leafstorm", "powerwhip", "rockslide", "sleeppowder"],
+ "movepool": ["earthquake", "gigadrain", "hiddenpowerfire", "leafstorm", "rockslide", "sleeppowder"],
"abilities": ["Regenerator"]
}
]
@@ -3426,12 +3427,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"]
}
]
@@ -3513,7 +3509,7 @@
]
},
"rotomwash": {
- "level": 79,
+ "level": 80,
"sets": [
{
"role": "Bulky Attacker",
@@ -3563,7 +3559,7 @@
]
},
"mesprit": {
- "level": 82,
+ "level": 83,
"sets": [
{
"role": "Fast Attacker",
@@ -3662,7 +3658,7 @@
]
},
"giratinaorigin": {
- "level": 73,
+ "level": 72,
"sets": [
{
"role": "Fast Attacker",
@@ -3976,7 +3972,7 @@
]
},
"serperior": {
- "level": 85,
+ "level": 86,
"sets": [
{
"role": "Fast Attacker",
@@ -4014,14 +4010,19 @@
"level": 86,
"sets": [
{
- "role": "Fast Attacker",
+ "role": "Wallbreaker",
"movepool": ["aquajet", "grassknot", "hydropump", "icebeam", "megahorn", "superpower"],
"abilities": ["Torrent"]
},
{
- "role": "Wallbreaker",
+ "role": "Setup Sweeper",
"movepool": ["aquajet", "megahorn", "superpower", "swordsdance", "waterfall"],
"abilities": ["Torrent"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["grassknot", "hydropump", "icebeam", "scald"],
+ "abilities": ["Torrent"]
}
]
},
@@ -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"]
}
@@ -4422,7 +4423,7 @@
]
},
"garbodor": {
- "level": 89,
+ "level": 90,
"sets": [
{
"role": "Bulky Attacker",
@@ -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", "gigadrain", "thunder", "voltswitch"],
+ "abilities": ["Compound Eyes"]
}
]
},
@@ -4616,7 +4621,7 @@
]
},
"beheeyem": {
- "level": 90,
+ "level": 89,
"sets": [
{
"role": "Wallbreaker",
@@ -4626,7 +4631,7 @@
]
},
"chandelure": {
- "level": 80,
+ "level": 79,
"sets": [
{
"role": "Fast Attacker",
@@ -4930,7 +4935,7 @@
]
},
"zekrom": {
- "level": 75,
+ "level": 74,
"sets": [
{
"role": "Bulky Attacker",
@@ -4945,7 +4950,7 @@
]
},
"landorus": {
- "level": 75,
+ "level": 74,
"sets": [
{
"role": "Wallbreaker",
@@ -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..21af10e2ef 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']);
}
}
@@ -837,6 +830,7 @@ export class RandomGen5Teams extends RandomGen6Teams {
return {
name: species.baseSpecies,
species: forme,
+ speciesId: species.id,
gender: species.gender,
shiny: this.randomChance(1, 1024),
level,
@@ -849,6 +843,39 @@ export class RandomGen5Teams extends RandomGen6Teams {
};
}
+ /**
+ * Checks if the new species is compatible with the other mons currently on the team.
+ */
+ override getPokemonCompatibility(
+ species: Species,
+ pokemon: RandomTeamsTypes.RandomSet[],
+ ): boolean {
+ const incompatibilityList = [
+ // These Pokemon with support roles are considered too similar to each other.
+ ['blissey', 'chansey'],
+ ['illumise', 'volbeat'],
+
+ // These Pokemon are incompatible because the presence of one actively harms the other.
+ // Prevent Dry Skin + sun setting ability
+ [['parasect', 'jynx', 'toxicroak'], ['ninetales', 'groudon']],
+ // Prevent Shedinja + sand/hail setting ability
+ ['shedinja', ['tyranitar', 'hippowdon', 'abomasnow']],
+ ];
+
+ for (const pair of incompatibilityList) {
+ const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]];
+ const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]];
+ if (monsArrayB.includes(species.id)) {
+ if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false;
+ }
+ if (monsArrayA.includes(species.id)) {
+ if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false;
+ }
+ }
+
+ return true;
+ }
+
override randomTeam() {
this.enforceNoDirectCustomBanlistChanges();
@@ -881,9 +908,6 @@ export class RandomGen5Teams extends RandomGen6Teams {
// Illusion shouldn't be in the last slot
if (species.name === 'Zoroark' && pokemon.length >= (this.maxTeamSize - 1)) continue;
- // Prevent Shedinja from generating after Sandstorm/Hail setters
- if (species.name === 'Shedinja' && (teamDetails.sand || teamDetails.hail)) continue;
-
// Dynamically scale limits for different team sizes. The default and minimum value is 1.
const limitFactor = Math.round(this.maxTeamSize / 6) || 1;
@@ -931,6 +955,9 @@ export class RandomGen5Teams extends RandomGen6Teams {
if (!this.adjustLevel && (this.getLevel(species) === 100) && numMaxLevelPokemon >= limitFactor) {
continue;
}
+
+ // Check compatibility with team
+ if (!this.getPokemonCompatibility(species, pokemon)) continue;
}
const set = this.randomSet(species, teamDetails, pokemon.length === 0);
diff --git a/data/random-battles/gen6/sets.json b/data/random-battles/gen6/sets.json
index 08c4aa2510..26445ce53a 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",
@@ -31,6 +31,11 @@
"role": "Bulky Attacker",
"movepool": ["airslash", "earthquake", "fireblast", "roost", "willowisp"],
"abilities": ["Blaze", "Solar Power"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"],
+ "abilities": ["Blaze"]
}
]
},
@@ -105,7 +110,7 @@
]
},
"beedrillmega": {
- "level": 78,
+ "level": 77,
"sets": [
{
"role": "Fast Attacker",
@@ -212,7 +217,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 +228,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 +344,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"]
}
@@ -490,14 +501,10 @@
"level": 82,
"sets": [
{
- "role": "Bulky Support",
- "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
- "abilities": ["Regenerator"]
- },
- {
- "role": "AV Pivot",
- "movepool": ["fireblast", "futuresight", "icebeam", "psyshock", "scald"],
- "abilities": ["Regenerator"]
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
+ "abilities": ["Regenerator"],
+ "preferredTypes": ["Psychic"]
}
]
},
@@ -785,9 +792,14 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "nastyplot", "psychic", "psyshock", "shadowball"],
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"],
"abilities": ["Filter"],
- "preferredTypes": ["Psychic"]
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"],
+ "abilities": ["Filter"]
}
]
},
@@ -822,7 +834,7 @@
]
},
"pinsir": {
- "level": 84,
+ "level": 85,
"sets": [
{
"role": "Fast Attacker",
@@ -859,7 +871,7 @@
]
},
"gyarados": {
- "level": 77,
+ "level": 78,
"sets": [
{
"role": "Setup Sweeper",
@@ -1056,7 +1068,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"],
+ "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"],
"abilities": ["Unnerve"]
}
]
@@ -1076,7 +1088,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"],
+ "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"],
"abilities": ["Unnerve"]
}
]
@@ -1176,7 +1188,7 @@
]
},
"crobat": {
- "level": 81,
+ "level": 80,
"sets": [
{
"role": "Bulky Attacker",
@@ -1366,14 +1378,10 @@
"level": 86,
"sets": [
{
- "role": "Bulky Support",
- "movepool": ["fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
- "abilities": ["Regenerator"]
- },
- {
- "role": "AV Pivot",
- "movepool": ["dragontail", "fireblast", "futuresight", "icebeam", "psyshock", "scald"],
- "abilities": ["Regenerator"]
+ "role": "Bulky Attacker",
+ "movepool": ["dragontail", "fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
+ "abilities": ["Regenerator"],
+ "preferredTypes": ["Psychic"]
}
]
},
@@ -1388,7 +1396,7 @@
]
},
"wobbuffet": {
- "level": 92,
+ "level": 93,
"sets": [
{
"role": "Bulky Support",
@@ -1494,13 +1502,13 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
+ "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
"abilities": ["Intimidate"]
}
]
},
"scizor": {
- "level": 79,
+ "level": 78,
"sets": [
{
"role": "Setup Sweeper",
@@ -1611,12 +1619,14 @@
{
"role": "Wallbreaker",
"movepool": ["energyball", "fireblast", "gunkshot", "hydropump", "icebeam", "scald"],
- "abilities": ["Sniper"]
+ "abilities": ["Sniper"],
+ "preferredTypes": ["Poison"]
},
{
"role": "Bulky Attacker",
"movepool": ["energyball", "fireblast", "gunkshot", "icebeam", "scald", "thunderwave"],
- "abilities": ["Sniper"]
+ "abilities": ["Sniper"],
+ "preferredTypes": ["Poison"]
}
]
},
@@ -1661,7 +1671,7 @@
]
},
"houndoom": {
- "level": 85,
+ "level": 84,
"sets": [
{
"role": "Fast Attacker",
@@ -1720,7 +1730,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "suckerpunch", "thunderwave"],
+ "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "return", "suckerpunch", "thunderwave"],
"abilities": ["Intimidate"],
"preferredTypes": ["Ground"]
}
@@ -1848,7 +1858,7 @@
]
},
"lugia": {
- "level": 72,
+ "level": 71,
"sets": [
{
"role": "Staller",
@@ -2257,8 +2267,13 @@
"level": 86,
"sets": [
{
- "role": "Wallbreaker",
- "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "rockpolish", "stealthrock"],
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"],
"abilities": ["Rock Head"],
"preferredTypes": ["Ground"]
}
@@ -2506,6 +2521,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 +2536,6 @@
"role": "Setup Sweeper",
"movepool": ["dragondance", "earthquake", "return", "roost"],
"abilities": ["Natural Cure"]
- },
- {
- "role": "Bulky Support",
- "movepool": ["earthquake", "fireblast", "healbell", "return", "roost"],
- "abilities": ["Natural Cure"]
}
]
},
@@ -3112,11 +3127,6 @@
"role": "Bulky Support",
"movepool": ["knockoff", "recover", "seismictoss", "spikes", "stealthrock", "taunt", "toxic"],
"abilities": ["Pressure"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "recover", "signalbeam"],
- "abilities": ["Pressure"]
}
]
},
@@ -3267,12 +3277,7 @@
"sets": [
{
"role": "Bulky Support",
- "movepool": ["metalburst", "roar", "rockblast", "stealthrock", "toxic"],
- "abilities": ["Sturdy"]
- },
- {
- "role": "Staller",
- "movepool": ["metalburst", "protect", "roar", "rockblast", "stealthrock", "toxic"],
+ "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"],
"abilities": ["Sturdy"]
}
]
@@ -3683,7 +3688,7 @@
{
"role": "Fast Attacker",
"movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"],
- "abilities": ["Magnet Pull"]
+ "abilities": ["Analytic", "Magnet Pull"]
},
{
"role": "Staller",
@@ -3734,12 +3739,12 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["earthquake", "knockoff", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder", "sludgebomb"],
+ "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "leechseed", "morningsun", "rockslide", "sleeppowder", "sludgebomb"],
"abilities": ["Regenerator"]
},
{
"role": "AV Pivot",
- "movepool": ["earthquake", "gigadrain", "knockoff", "powerwhip", "rockslide", "sludgebomb"],
+ "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "rockslide", "sludgebomb"],
"abilities": ["Regenerator"]
}
]
@@ -3806,7 +3811,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["doubleedge", "knockoff", "leafblade", "swordsdance", "synthesis", "xscissor"],
+ "movepool": ["doubleedge", "knockoff", "leafblade", "substitute", "swordsdance", "synthesis"],
"abilities": ["Chlorophyll"],
"preferredTypes": ["Dark"]
}
@@ -3990,7 +3995,7 @@
"level": 86,
"sets": [
{
- "role": "Fast Support",
+ "role": "Bulky Attacker",
"movepool": ["hiddenpowerice", "leafstorm", "thunderbolt", "trick", "voltswitch", "willowisp"],
"abilities": ["Levitate"]
}
@@ -4079,9 +4084,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"]
}
]
},
@@ -4472,9 +4481,14 @@
"abilities": ["Torrent"]
},
{
- "role": "Fast Attacker",
+ "role": "Setup Sweeper",
"movepool": ["aquajet", "knockoff", "megahorn", "superpower", "swordsdance", "waterfall"],
"abilities": ["Torrent"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["grassknot", "hydropump", "icebeam", "scald"],
+ "abilities": ["Torrent"]
}
]
},
@@ -4718,7 +4732,7 @@
]
},
"scolipede": {
- "level": 80,
+ "level": 79,
"sets": [
{
"role": "Fast Support",
@@ -4773,7 +4787,7 @@
]
},
"krookodile": {
- "level": 79,
+ "level": 78,
"sets": [
{
"role": "Fast Attacker",
@@ -4822,9 +4836,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 +4951,7 @@
"sets": [
{
"role": "Bulky Setup",
- "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover", "signalbeam"],
+ "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover"],
"abilities": ["Magic Guard"]
}
]
@@ -5045,7 +5059,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["bugbuzz", "gigadrain", "stickyweb", "thunder", "voltswitch"],
+ "movepool": ["bugbuzz", "energyball", "stickyweb", "thunder", "voltswitch"],
"abilities": ["Compound Eyes"],
"preferredTypes": ["Bug"]
}
@@ -5186,7 +5200,7 @@
]
},
"druddigon": {
- "level": 85,
+ "level": 86,
"sets": [
{
"role": "Wallbreaker",
@@ -5293,7 +5307,7 @@
},
{
"role": "Bulky Attacker",
- "movepool": ["darkpulse", "dracometeor", "fireblast", "roost", "uturn"],
+ "movepool": ["darkpulse", "dracometeor", "fireblast", "roost", "toxic", "uturn"],
"abilities": ["Levitate"]
},
{
@@ -5685,7 +5699,7 @@
]
},
"pangoro": {
- "level": 85,
+ "level": 84,
"sets": [
{
"role": "Wallbreaker",
@@ -5883,11 +5897,6 @@
"sylveon": {
"level": 84,
"sets": [
- {
- "role": "Bulky Attacker",
- "movepool": ["calmmind", "hiddenpowerground", "hypervoice", "protect", "psyshock", "wish"],
- "abilities": ["Pixilate"]
- },
{
"role": "Bulky Setup",
"movepool": ["calmmind", "hypervoice", "protect", "wish"],
@@ -6001,7 +6010,7 @@
]
},
"gourgeistsuper": {
- "level": 88,
+ "level": 87,
"sets": [
{
"role": "Bulky Support",
diff --git a/data/random-battles/gen6/teams.ts b/data/random-battles/gen6/teams.ts
index 0747d1f30f..9730d0dbd8 100644
--- a/data/random-battles/gen6/teams.ts
+++ b/data/random-battles/gen6/teams.ts
@@ -97,7 +97,7 @@ export class RandomGen6Teams extends RandomGen7Teams {
Normal: movePool => movePool.includes('boomburst'),
Poison: (movePool, moves, abilities, types, counter) => !counter.get('Poison'),
Psychic: (movePool, moves, abilities, types, counter) => (
- !counter.get('Psychic') && (types.has('Fighting') || movePool.includes('calmmind'))
+ !counter.get('Psychic') && (types.has('Fighting') || types.has('Fairy') || movePool.includes('calmmind'))
),
Rock: (movePool, moves, abilities, types, counter, species) => (!counter.get('Rock') && species.baseStats.atk >= 80),
Steel: (movePool, moves, abilities, types, counter, species) => (!counter.get('Steel') && species.baseStats.atk >= 100),
@@ -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'],
@@ -250,6 +250,8 @@ export class RandomGen6Teams extends RandomGen7Teams {
['switcheroo', 'suckerpunch'],
// Jirachi
['bodyslam', 'healingwish'],
+ // Bastiodon
+ [['roar', 'protect'], ['metalburst', 'protect']],
];
for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
@@ -258,7 +260,7 @@ export class RandomGen6Teams extends RandomGen7Teams {
this.incompatibleMoves(moves, movePool, 'knockoff', ['pursuit', 'suckerpunch']);
}
- const statusInflictingMoves = ['thunderwave', 'toxic', 'willowisp', 'yawn'];
+ const statusInflictingMoves = ["nuzzle", 'thunderwave', 'toxic', 'willowisp', 'yawn'];
if (!abilities.includes('Prankster') && role !== 'Staller') {
this.incompatibleMoves(moves, movePool, statusInflictingMoves, statusInflictingMoves);
}
@@ -732,12 +734,6 @@ export class RandomGen6Teams extends RandomGen7Teams {
)
) return 'Rocky Helmet';
if (['kingsshield', 'protect', 'spikyshield', 'substitute'].some(m => moves.has(m))) return 'Leftovers';
- if (
- this.dex.getEffectiveness('Ground', species) >= 2 &&
- ability !== 'Levitate'
- ) {
- return 'Air Balloon';
- }
if (
(role === 'Fast Support' || moves.has('stickyweb')) && isLead && defensiveStatTotal < 255 &&
!counter.get('recovery') && (counter.get('hazards') || counter.get('setup')) &&
@@ -887,6 +883,7 @@ export class RandomGen6Teams extends RandomGen7Teams {
return {
name: species.baseSpecies,
species: forme,
+ speciesId: species.id,
gender: species.gender || (this.random(2) ? 'F' : 'M'),
shiny: this.randomChance(1, 1024),
level,
diff --git a/data/random-battles/gen6megasrevisited/factory-sets.json b/data/random-battles/gen6megasrevisited/factory-sets.json
new file mode 100644
index 0000000000..12918022ce
--- /dev/null
+++ b/data/random-battles/gen6megasrevisited/factory-sets.json
@@ -0,0 +1,10319 @@
+{
+ "Uber": {
+ "klefki": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Klefki",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Spikes"], ["Thunder Wave"], ["Toxic"], ["Play Rough"]]
+ }
+ ]
+ },
+ "zekrom": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Zekrom",
+ "item": "Choice Band",
+ "ability": "Teravolt",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Bolt Strike"], ["Outrage"], ["Dragon Claw"], ["Volt Switch"]]
+ },
+ {
+ "species": "Zekrom",
+ "item": "Choice Scarf",
+ "ability": "Teravolt",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Lonely",
+ "moves": [["Bolt Strike"], ["Volt Switch"], ["Draco Meteor"], ["Outrage"]]
+ },
+ {
+ "species": "Zekrom",
+ "item": "Choice Scarf",
+ "ability": "Teravolt",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Bolt Strike"], ["Volt Switch"], ["Sleep Talk"], ["Outrage"]]
+ },
+ {
+ "species": "Zekrom",
+ "item": "Life Orb",
+ "ability": "Teravolt",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Lonely",
+ "moves": [["Bolt Strike"], ["Draco Meteor"], ["Dragon Claw"], ["Tailwind"]]
+ },
+ {
+ "species": "Zekrom",
+ "item": "Shuca Berry",
+ "ability": "Teravolt",
+ "evs": {"hp": 132, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 124},
+ "nature": "Adamant",
+ "moves": [["Substitute", "Outrage"], ["Hone Claws"], ["Bolt Strike"], ["Dragon Claw"]]
+ }
+ ]
+ },
+ "yveltal": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Yveltal",
+ "item": "Choice Scarf",
+ "ability": "Dark Aura",
+ "evs": {"hp": 0, "atk": 32, "def": 4, "spa": 248, "spd": 0, "spe": 224},
+ "nature": "Modest",
+ "moves": [["Dark Pulse"], ["Oblivion Wing"], ["Foul Play"], ["U-turn"]]
+ },
+ {
+ "species": "Yveltal",
+ "item": "Life Orb",
+ "ability": "Dark Aura",
+ "evs": {"hp": 132, "atk": 28, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Rash",
+ "moves": [["Dark Pulse"], ["Oblivion Wing"], ["Sucker Punch"], ["Heat Wave"]]
+ },
+ {
+ "species": "Yveltal",
+ "item": "Leftovers",
+ "ability": "Dark Aura",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Foul Play"], ["Taunt"], ["Sucker Punch"], ["Roost"]]
+ },
+ {
+ "species": "Yveltal",
+ "item": "Leftovers",
+ "ability": "Dark Aura",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Foul Play"], ["Taunt"], ["Toxic"], ["Roost"]]
+ }
+ ]
+ },
+ "xerneas": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Xerneas",
+ "item": "Life Orb",
+ "ability": "Fairy Aura",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Mild",
+ "moves": [["Moonblast"], ["Close Combat"], ["Rock Slide"], ["Aromatherapy"]]
+ },
+ {
+ "species": "Xerneas",
+ "item": "Choice Scarf",
+ "ability": "Fairy Aura",
+ "evs": {"hp": 0, "atk": 76, "def": 0, "spa": 248, "spd": 0, "spe": 184},
+ "nature": "Rash",
+ "moves": [["Moonblast"], ["Sleep Talk"], ["Close Combat"], ["Rock Slide"]]
+ },
+ {
+ "species": "Xerneas",
+ "item": "Leftovers",
+ "ability": "Fairy Aura",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Aromatherapy"], ["Rest"], ["Sleep Talk"], ["Moonblast"]]
+ },
+ {
+ "species": "Xerneas",
+ "item": "Power Herb",
+ "ability": "Fairy Aura",
+ "evs": {"hp": 184, "atk": 0, "def": 28, "spa": 252, "spd": 0, "spe": 44},
+ "nature": "Modest",
+ "moves": [["Geomancy"], ["Moonblast"], ["Focus Blast"], ["Thunder"]]
+ },
+ {
+ "species": "Xerneas",
+ "item": "Power Herb",
+ "ability": "Fairy Aura",
+ "evs": {"hp": 184, "atk": 0, "def": 28, "spa": 252, "spd": 0, "spe": 44},
+ "nature": "Modest",
+ "moves": [["Geomancy"], ["Moonblast"], ["Hidden Power Ground"], ["Thunder"]]
+ }
+ ]
+ },
+ "tyranitar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tyranitar",
+ "item": "Leftovers",
+ "ability": "Sand Stream",
+ "evs": {"hp": 248, "atk": 0, "def": 96, "spa": 0, "spd": 164, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Stealth Rock"], ["Pursuit"], ["Rock Slide"], ["Thunder Wave", "Roar"]]
+ },
+ {
+ "species": "Tyranitar",
+ "item": "Shuca Berry",
+ "ability": "Sand Stream",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Stealth Rock"], ["Pursuit"], ["Rock Slide"], ["Thunder Wave", "Roar"]]
+ },
+ {
+ "species": "Tyranitar",
+ "item": "Shuca Berry",
+ "ability": "Sand Stream",
+ "evs": {"hp": 248, "atk": 72, "def": 0, "spa": 0, "spd": 188, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Stealth Rock"], ["Low Kick"], ["Rock Slide"], ["Thunder Wave", "Roar"]]
+ }
+ ]
+ },
+ "shayminsky": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Shaymin-Sky",
+ "item": "Life Orb",
+ "ability": "Serene Grace",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Seed Flare"], ["Air Slash"], ["Earth Power"], ["Healing Wish"]]
+ },
+ {
+ "species": "Shaymin-Sky",
+ "item": "Leftovers",
+ "ability": "Serene Grace",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Leech Seed"], ["Seed Flare"], ["Air Slash"]]
+ }
+ ]
+ },
+ "salamence": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Salamence",
+ "item": "Salamencite",
+ "ability": "Intimidate",
+ "evs": {"hp": 200, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Adamant",
+ "moves": [["Double-Edge"], ["Refresh", "Earthquake"], ["Roost"], ["Dragon Dance"]]
+ },
+ {
+ "species": "Salamence",
+ "item": "Salamencite",
+ "ability": "Intimidate",
+ "evs": {"hp": 200, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Adamant",
+ "moves": [["Return"], ["Refresh", "Earthquake"], ["Roost"], ["Dragon Dance"]],
+ "happiness": 255
+ },
+ {
+ "species": "Salamence",
+ "item": "Salamencite",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Return"], ["Earthquake"], ["Roost"], ["Dragon Dance"]],
+ "happiness": 255
+ },
+ {
+ "species": "Salamence",
+ "item": "Salamencite",
+ "ability": "Intimidate",
+ "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 0, "spe": 124},
+ "nature": "Impish",
+ "moves": [["Return"], ["Refresh"], ["Roost"], ["Dragon Dance"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "sableye": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Sableye",
+ "item": "Sablenite",
+ "ability": "Prankster",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Foul Play"], ["Protect", "Fake Out"], ["Will-O-Wisp"], ["Recover"]]
+ }
+ ]
+ },
+ "reshiram": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Reshiram",
+ "item": "Choice Scarf",
+ "ability": "Turboblaze",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Blue Flare"], ["Draco Meteor"], ["Sleep Talk"], ["Stone Edge"]]
+ },
+ {
+ "species": "Reshiram",
+ "item": "Life Orb",
+ "ability": "Turboblaze",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Flame Charge"], ["Blue Flare"], ["Draco Meteor"], ["Stone Edge"]]
+ },
+ {
+ "species": "Reshiram",
+ "item": "Leftovers",
+ "ability": "Turboblaze",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Blue Flare"], ["Draco Meteor"], ["Toxic"], ["Roost"]]
+ }
+ ]
+ },
+ "rayquaza": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rayquaza",
+ "item": "Life Orb",
+ "ability": "Air Lock",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Dragon Dance"], ["Dragon Ascent"], ["Earthquake"], ["Extreme Speed"]]
+ },
+ {
+ "species": "Rayquaza",
+ "item": "Life Orb",
+ "ability": "Air Lock",
+ "evs": {"hp": 0, "atk": 40, "def": 0, "spa": 252, "spd": 0, "spe": 216},
+ "nature": "Rash",
+ "moves": [["Draco Meteor"], ["Dragon Ascent"], ["Extreme Speed"], ["Earthquake"]]
+ },
+ {
+ "species": "Rayquaza",
+ "item": "Life Orb",
+ "ability": "Air Lock",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Dragon Ascent"], ["Earthquake"], ["Extreme Speed"]]
+ }
+ ]
+ },
+ "palkia": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Palkia",
+ "item": "Choice Specs",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hydro Pump"], ["Draco Meteor"], ["Spacial Rend"], ["Fire Blast"]]
+ },
+ {
+ "species": "Palkia",
+ "item": "Lustrous Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hydro Pump"], ["Spacial Rend"], ["Fire Blast"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Palkia",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Surf"], ["Toxic"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Palkia",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 60, "atk": 0, "def": 0, "spa": 196, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Rest"], ["Toxic"], ["Hydro Pump"], ["Spacial Rend"]]
+ }
+ ]
+ },
+ "mewtwo": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mewtwo",
+ "item": "Mewtwonite X",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Ice Beam"], ["Low Kick"], ["Earthquake"], ["Rock Slide"]]
+ },
+ {
+ "species": "Mewtwo",
+ "item": "Mewtwonite X",
+ "ability": "Pressure",
+ "evs": {"hp": 176, "atk": 80, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Low Kick"], ["Taunt"], ["Earthquake"], ["Ice Beam"]]
+ },
+ {
+ "species": "Mewtwo",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psystrike"], ["Calm Mind"], ["Ice Beam"], ["Focus Blast"]]
+ },
+ {
+ "species": "Mewtwo",
+ "item": "Mewtwonite Y",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psystrike"], ["Calm Mind"], ["Ice Beam"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "mawile": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Mawile",
+ "item": "Mawilite",
+ "ability": "Intimidate",
+ "evs": {"hp": 248, "atk": 16, "def": 0, "spa": 0, "spd": 244, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Iron Head"], ["Play Rough"], ["Sucker Punch"], ["Baton Pass"]]
+ }
+ ]
+ },
+ "lugia": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Lugia",
+ "item": "Leftovers",
+ "ability": "Multiscale",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Bold",
+ "moves": [["Roost"], ["Ice Beam"], ["Whirlwind"], ["Toxic"]]
+ }
+ ]
+ },
+ "lucario": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Lucario",
+ "item": "Lucarionite",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Close Combat"], ["Bullet Punch"], ["Stone Edge"], ["Iron Tail"]]
+ }
+ ]
+ },
+ "latios": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Latios",
+ "item": "Soul Dew",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Defog"], ["Memento", "Recover"]]
+ },
+ {
+ "species": "Latios",
+ "item": "Soul Dew",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Defog"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Latios",
+ "item": "Soul Dew",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Calm Mind"], ["Memento", "Recover"]]
+ },
+ {
+ "species": "Latios",
+ "item": "Soul Dew",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Calm Mind"], ["Hidden Power Fire"]]
+ }
+ ]
+ },
+ "latias": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Latias",
+ "item": "Soul Dew",
+ "ability": "Levitate",
+ "evs": {"hp": 212, "atk": 0, "def": 0, "spa": 120, "spd": 0, "spe": 176},
+ "nature": "Timid",
+ "moves": [["Defog"], ["Draco Meteor"], ["Psyshock"], ["Recover", "Healing Wish"]]
+ },
+ {
+ "species": "Latias",
+ "item": "Soul Dew",
+ "ability": "Levitate",
+ "evs": {"hp": 80, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 176},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Draco Meteor"], ["Psyshock"], ["Recover"]]
+ }
+ ]
+ },
+ "kyuremwhite": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kyurem-White",
+ "item": "Choice Specs",
+ "ability": "Turboblaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Ice Beam"], ["Fusion Flare"], ["Earth Power"]]
+ },
+ {
+ "species": "Kyurem-White",
+ "item": "Life Orb",
+ "ability": "Turboblaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Ice Beam"], ["Fusion Flare"], ["Stone Edge"]]
+ }
+ ]
+ },
+ "kyogre": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kyogre",
+ "item": "Blue Orb",
+ "ability": "Drizzle",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Origin Pulse"], ["Thunder"], ["Ice Beam"], ["Calm Mind"]]
+ },
+ {
+ "species": "Kyogre",
+ "item": "Blue Orb",
+ "ability": "Drizzle",
+ "evs": {"hp": 248, "atk": 0, "def": 248, "spa": 0, "spd": 0, "spe": 12},
+ "nature": "Bold",
+ "moves": [["Rest"], ["Sleep Talk"], ["Scald"], ["Ice Beam", "Roar"]]
+ },
+ {
+ "species": "Kyogre",
+ "item": "Blue Orb",
+ "ability": "Drizzle",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 248, "spd": 0, "spe": 12},
+ "nature": "Modest",
+ "moves": [["Origin Pulse"], ["Thunder", "Rest", "Substitute"], ["Ice Beam"], ["Calm Mind"]]
+ },
+ {
+ "species": "Kyogre",
+ "item": "Choice Specs",
+ "ability": "Drizzle",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Water Spout"], ["Origin Pulse", "Scald"], ["Ice Beam"], ["Thunder"]]
+ },
+ {
+ "species": "Kyogre",
+ "item": "Choice Scarf",
+ "ability": "Drizzle",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Water Spout"], ["Ice Beam"], ["Origin Pulse"], ["Thunder", "Sleep Talk"]]
+ }
+ ]
+ },
+ "kangaskhan": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Kangaskhan",
+ "item": "Kangaskhanite",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Return"], ["Fake Out"], ["Power-Up Punch"], ["Crunch"]],
+ "happiness": 255
+ },
+ {
+ "species": "Kangaskhan",
+ "item": "Kangaskhanite",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Double-Edge"], ["Fake Out"], ["Sucker Punch"], ["Low Kick"]]
+ },
+ {
+ "species": "Kangaskhan",
+ "item": "Kangaskhanite",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Return"], ["Fake Out"], ["Sucker Punch"], ["Low Kick"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "hooh": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ho-Oh",
+ "item": "Choice Band",
+ "ability": "Regenerator",
+ "evs": {"hp": 248, "atk": 208, "def": 0, "spa": 0, "spd": 52, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Brave Bird"], ["Sacred Fire"], ["Earthquake"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Ho-Oh",
+ "item": "Life Orb",
+ "ability": "Regenerator",
+ "evs": {"hp": 248, "atk": 208, "def": 0, "spa": 0, "spd": 52, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Brave Bird"], ["Sacred Fire"], ["Recover"], ["Thunder Wave", "Earthquake", "Substitute"]]
+ }
+ ]
+ },
+ "groudon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Groudon",
+ "item": "Red Orb",
+ "ability": "Drought",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 200, "spe": 56},
+ "nature": "Adamant",
+ "moves": [["Rock Polish"], ["Precipice Blades", "Earthquake"], ["Stone Edge"], ["Swords Dance", "Dragon Claw"]]
+ },
+ {
+ "species": "Groudon",
+ "item": "Red Orb",
+ "ability": "Drought",
+ "evs": {"hp": 248, "atk": 0, "def": 56, "spa": 0, "spd": 192, "spe": 12},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Precipice Blades", "Earthquake"], ["Lava Plume", "Stone Edge"], ["Thunder Wave", "Roar"]]
+ },
+ {
+ "species": "Groudon",
+ "item": "Red Orb",
+ "ability": "Drought",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Lava Plume"], ["Roar"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Groudon",
+ "item": "Leftovers",
+ "ability": "Drought",
+ "evs": {"hp": 248, "atk": 0, "def": 248, "spa": 0, "spd": 0, "spe": 12},
+ "nature": "Impish",
+ "moves": [["Precipice Blades"], ["Stealth Rock"], ["Stone Edge"], ["Dragon Tail", "Roar"]]
+ }
+ ]
+ },
+ "greninja": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Greninja",
+ "item": "Focus Sash",
+ "ability": "Protean",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Toxic Spikes"], ["Spikes"], ["Taunt"], ["Shadow Sneak"]]
+ },
+ {
+ "species": "Greninja",
+ "item": "Focus Sash",
+ "ability": "Protean",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Toxic Spikes"], ["Scald"], ["Taunt"], ["Shadow Sneak"]]
+ }
+ ]
+ },
+ "giratina": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Giratina",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Rest"], ["Sleep Talk"], ["Will-O-Wisp"], ["Roar"]]
+ },
+ {
+ "species": "Giratina",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Rest"], ["Sleep Talk"], ["Will-O-Wisp"], ["Roar"]]
+ }
+ ]
+ },
+ "giratinaorigin": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Giratina-Origin",
+ "item": "Griseous Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 180, "def": 0, "spa": 252, "spd": 0, "spe": 76},
+ "nature": "Rash",
+ "moves": [["Draco Meteor"], ["Shadow Sneak"], ["Dragon Tail"], ["Defog"]]
+ },
+ {
+ "species": "Giratina-Origin",
+ "item": "Griseous Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 244, "def": 252, "spa": 0, "spd": 0, "spe": 12},
+ "nature": "Adamant",
+ "moves": [["Defog"], ["Shadow Sneak"], ["Dragon Tail"], ["Shadow Force"]]
+ }
+ ]
+ },
+ "gengar": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Gengar",
+ "item": "Gengarite",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Taunt"], ["Destiny Bond"], ["Sludge Wave"], ["Focus Blast"]]
+ },
+ {
+ "species": "Gengar",
+ "item": "Gengarite",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 84, "spe": 176},
+ "nature": "Timid",
+ "moves": [["Perish Song"], ["Taunt"], ["Protect"], ["Disable"]]
+ }
+ ]
+ },
+ "genesect": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Genesect",
+ "item": "Choice Scarf",
+ "ability": "Download",
+ "evs": {"hp": 0, "atk": 248, "def": 0, "spa": 8, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["U-turn"], ["Iron Head"], ["Explosion"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "ferrothorn": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ferrothorn",
+ "item": "Leftovers",
+ "ability": "Iron Barbs",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Leech Seed"], ["Spikes"], ["Power Whip", "Gyro Ball"], ["Protect"]]
+ },
+ {
+ "species": "Ferrothorn",
+ "item": "Leftovers",
+ "ability": "Iron Barbs",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Leech Seed"], ["Spikes"], ["Power Whip"], ["Protect", "Gyro Ball"]]
+ }
+ ]
+ },
+ "excadrill": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Excadrill",
+ "item": "Life Orb",
+ "ability": "Sand Rush",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Iron Head"], ["Earthquake"], ["Rock Slide"], ["Rapid Spin"]]
+ },
+ {
+ "species": "Excadrill",
+ "item": "Air Balloon",
+ "ability": "Sand Rush",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Iron Head"], ["Earthquake"], ["Swords Dance"], ["Rapid Spin"]]
+ }
+ ]
+ },
+ "dialga": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Dialga",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Stealth Rock"], ["Toxic"], ["Draco Meteor"], ["Fire Blast"]]
+ },
+ {
+ "species": "Dialga",
+ "item": "Shuca Berry",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Flash Cannon"], ["Fire Blast"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "deoxys": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Deoxys",
+ "item": "Focus Sash",
+ "ability": "Pressure",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psycho Boost"], ["Stealth Rock"], ["Spikes"], ["Taunt"]]
+ }
+ ]
+ },
+ "deoxysattack": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Deoxys-Attack",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Psycho Boost"], ["Low Kick"], ["Ice Beam"], ["Extreme Speed"]]
+ },
+ {
+ "species": "Deoxys-Attack",
+ "item": "Focus Sash",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Spikes"], ["Psycho Boost"], ["Knock Off"], ["Extreme Speed"]]
+ }
+ ]
+ },
+ "deoxysdefense": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Deoxys-Defense",
+ "item": "Mental Herb",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Recover"], ["Spikes"], ["Skill Swap"], ["Toxic"]]
+ }
+ ]
+ },
+ "deoxysspeed": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Deoxys-Speed",
+ "item": "Focus Sash",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Taunt"], ["Spikes"], ["Knock Off"]]
+ },
+ {
+ "species": "Deoxys-Speed",
+ "item": "Light Clay",
+ "ability": "Pressure",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Stealth Rock"], ["Taunt"], ["Reflect"], ["Light Screen"]]
+ }
+ ]
+ },
+ "darkrai": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Darkrai",
+ "item": "Life Orb",
+ "ability": "Bad Dreams",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Dark Void"], ["Dark Pulse"], ["Nasty Plot", "Taunt"], ["Sludge Bomb", "Thunder", "Focus Blast"]]
+ }
+ ]
+ },
+ "blissey": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Blissey",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 20, "atk": 0, "def": 236, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Ice Beam"], ["Toxic"], ["Soft-Boiled", "Wish"], ["Heal Bell", "Protect"]]
+ },
+ {
+ "species": "Blissey",
+ "item": "Shed Shell",
+ "ability": "Natural Cure",
+ "evs": {"hp": 20, "atk": 0, "def": 236, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Toxic"], ["Seismic Toss", "Snatch"], ["Soft-Boiled", "Wish"], ["Heal Bell", "Protect"]]
+ }
+ ]
+ },
+ "blaziken": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Blaziken",
+ "item": "Leftovers",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Baton Pass"], ["Protect"], ["Swords Dance"], ["Flare Blitz"]]
+ },
+ {
+ "species": "Blaziken",
+ "item": "Blazikenite",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Stone Edge", "Knock Off"]]
+ },
+ {
+ "species": "Blaziken",
+ "item": "Blazikenite",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Blaziken",
+ "item": "Life Orb",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Blaziken",
+ "item": "Life Orb",
+ "ability": "Speed Boost",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Low Kick"], ["Flare Blitz"], ["Protect"], ["Stone Edge", "Knock Off"]]
+ }
+ ]
+ },
+ "arceuswater": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Water",
+ "item": "Splash Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Bold",
+ "moves": [["Ice Beam", "Judgment"], ["Defog"], ["Recover"], ["Toxic"]]
+ }
+ ]
+ },
+ "arceussteel": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Steel",
+ "item": "Iron Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 84, "spd": 0, "spe": 176},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Judgment"], ["Recover"], ["Earth Power", "Thunder"]]
+ },
+ {
+ "species": "Arceus-Steel",
+ "item": "Iron Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Iron Head"], ["Earthquake"], ["Stone Edge", "Recover", "Extreme Speed"]]
+ }
+ ]
+ },
+ "arceusfire": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Fire",
+ "item": "Flame Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 56},
+ "nature": "Modest",
+ "moves": [["Overheat", "Fire Blast"], ["Calm Mind"], ["Thunder"], ["Earth Power"]]
+ }
+ ]
+ },
+ "arceusflying": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Flying",
+ "item": "Sky Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 200, "spd": 0, "spe": 176},
+ "nature": "Timid",
+ "moves": [["Judgment"], ["Calm Mind"], ["Recover"], ["Refresh", "Earth Power", "Substitute"]]
+ }
+ ]
+ },
+ "arceuspsychic": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Psychic",
+ "item": "Mind Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Bold",
+ "moves": [["Fire Blast", "Payback"], ["Ice Beam"], ["Recover"], ["Toxic"]]
+ }
+ ]
+ },
+ "arceuspoison": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Poison",
+ "item": "Toxic Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Impish",
+ "moves": [["Defog"], ["Poison Jab"], ["Thunder Wave"], ["Recover"]]
+ }
+ ]
+ },
+ "arceusbug": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Bug",
+ "item": "Insect Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["X-Scissor"], ["Stone Edge"], ["Earthquake"]]
+ }
+ ]
+ },
+ "arceusfighting": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Fighting",
+ "item": "Fist Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 0, "atk": 0, "def": 40, "spa": 252, "spd": 0, "spe": 216},
+ "nature": "Modest",
+ "moves": [["Judgment"], ["Thunder Wave"], ["Recover"], ["Ice Beam", "Stone Edge"]]
+ }
+ ]
+ },
+ "arceusfairy": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Fairy",
+ "item": "Pixie Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Bold",
+ "moves": [["Judgment"], ["Recover"], ["Defog"], ["Toxic"]]
+ },
+ {
+ "species": "Arceus-Fairy",
+ "item": "Pixie Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Judgment"], ["Calm Mind"], ["Recover"], ["Earth Power", "Thunder"]]
+ }
+ ]
+ },
+ "arceusice": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Ice",
+ "item": "Icicle Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Judgment"], ["Recover"], ["Calm Mind"], ["Thunder", "Fire Blast"]]
+ }
+ ]
+ },
+ "arceusrock": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Rock",
+ "item": "Stone Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Judgment"], ["Defog"], ["Recover"], ["Will-O-Wisp"]]
+ }
+ ]
+ },
+ "arceusghost": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Ghost",
+ "item": "Spooky Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Judgment"], ["Recover"], ["Will-O-Wisp"]]
+ },
+ {
+ "species": "Arceus-Ghost",
+ "item": "Spooky Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Shadow Force"], ["Shadow Claw", "Brick Break"], ["Extreme Speed"]]
+ },
+ {
+ "species": "Arceus-Ghost",
+ "item": "Spooky Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Shadow Force"], ["Shadow Claw"], ["Brick Break"]]
+ }
+ ]
+ },
+ "arceusdragon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Dragon",
+ "item": "Draco Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 204, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Bold",
+ "moves": [["Judgment"], ["Defog"], ["Recover"], ["Toxic"]]
+ },
+ {
+ "species": "Arceus-Dragon",
+ "item": "Draco Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 84, "spd": 0, "spe": 176},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Judgment"], ["Fire Blast"], ["Recover"]]
+ }
+ ]
+ },
+ "arceus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus",
+ "item": "Life Orb",
+ "ability": "Multitype",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Extreme Speed"], ["Earthquake"], ["Stone Edge", "Shadow Claw"]]
+ },
+ {
+ "species": "Arceus",
+ "item": "Silk Scarf",
+ "ability": "Multitype",
+ "evs": {"hp": 200, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 56},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Extreme Speed"], ["Earthquake", "Shadow Force"], ["Refresh"]]
+ }
+ ]
+ },
+ "arceusdark": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Dark",
+ "item": "Dread Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 144, "spe": 112},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Judgment"], ["Recover"], ["Refresh"]]
+ }
+ ]
+ },
+ "arceusgrass": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Grass",
+ "item": "Meadow Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 148, "spe": 112},
+ "nature": "Timid",
+ "moves": [["Grass Knot"], ["Recover"], ["Ice Beam"], ["Defog"]]
+ }
+ ]
+ },
+ "arceuselectric": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Electric",
+ "item": "Zap Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Judgment"], ["Ice Beam"], ["Recover"]]
+ }
+ ]
+ },
+ "arceusground": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arceus-Ground",
+ "item": "Earth Plate",
+ "ability": "Multitype",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Earthquake"], ["Stone Edge"], ["Recover", "Extreme Speed"]]
+ }
+ ]
+ },
+ "aegislash": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Aegislash",
+ "item": "Leftovers",
+ "ability": "Stance Change",
+ "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Sassy",
+ "moves": [["King's Shield"], ["Toxic"], ["Gyro Ball"], ["Pursuit"]]
+ }
+ ]
+ },
+ "scizor": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Scizor",
+ "item": "Scizorite",
+ "ability": "Technician",
+ "evs": {"hp": 212, "atk": 60, "def": 152, "spa": 0, "spd": 84, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Toxic"], ["Roost"], ["Defog"], ["Bullet Punch"]]
+ }
+ ]
+ },
+ "diancie": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Diancie",
+ "item": "Diancite",
+ "ability": "Clear Body",
+ "evs": {"hp": 0, "atk": 68, "def": 0, "spa": 188, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Diamond Storm"], ["Moonblast"], ["Earth Power", "Protect"], ["Stealth Rock"]]
+ },
+ {
+ "species": "Diancie",
+ "item": "Diancite",
+ "ability": "Clear Body",
+ "evs": {"hp": 0, "atk": 68, "def": 0, "spa": 188, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Diamond Storm"], ["Moonblast"], ["Earth Power"], ["Protect"]]
+ }
+ ]
+ },
+ "landorus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Landorus",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Knock Off"], ["Earth Power"], ["Rock Slide"], ["Sludge Wave"]]
+ },
+ {
+ "species": "Landorus",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Knock Off"], ["Earth Power"], ["Rock Slide"], ["Hidden Power Ice"]]
+ }
+ ]
+ }
+ },
+ "OU": {
+ "diancie": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Diancie",
+ "item": "Diancite",
+ "ability": "Clear Body",
+ "evs": {"hp": 44, "atk": 32, "def": 0, "spa": 252, "spd": 0, "spe": 180},
+ "nature": "Rash",
+ "moves": [["Moonblast"], ["Diamond Storm"], ["Earth Power"], ["Rock Polish"]]
+ },
+ {
+ "species": "Diancie",
+ "item": "Diancite",
+ "ability": "Clear Body",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Moonblast"], ["Earth Power"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Diancie",
+ "item": "Diancite",
+ "ability": "Clear Body",
+ "evs": {"hp": 0, "atk": 32, "def": 0, "spa": 224, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Diamond Storm"], ["Moonblast"], ["Earth Power"], ["Protect"]]
+ }
+ ]
+ },
+ "hippowdon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hippowdon",
+ "gender": "M",
+ "item": "Leftovers",
+ "ability": "Sand Stream",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Slack Off"], ["Stealth Rock"], ["Stone Edge"], ["Earthquake"]]
+ },
+ {
+ "species": "Hippowdon",
+ "gender": "M",
+ "item": "Leftovers",
+ "ability": "Sand Stream",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Slack Off"], ["Stealth Rock"], ["Stone Edge"], ["Earthquake"]]
+ },
+ {
+ "species": "Hippowdon",
+ "gender": "M",
+ "item": "Leftovers",
+ "ability": "Sand Stream",
+ "evs": {"hp": 252, "atk": 0, "def": 144, "spa": 0, "spd": 112, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Slack Off"], ["Stealth Rock"], ["Whirlwind"], ["Earthquake"]]
+ }
+ ]
+ },
+ "jirachi": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Jirachi",
+ "item": "Leftovers",
+ "ability": "Serene Grace",
+ "evs": {"hp": 252, "atk": 160, "def": 0, "spa": 0, "spd": 0, "spe": 96},
+ "nature": "Jolly",
+ "moves": [["Iron Head"], ["Fire Punch"], ["Substitute"], ["Toxic"]]
+ },
+ {
+ "species": "Jirachi",
+ "item": "Leftovers",
+ "ability": "Serene Grace",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 224, "spe": 32},
+ "nature": "Careful",
+ "moves": [["Wish"], ["Protect"], ["Iron Head"], ["Body Slam"]]
+ },
+ {
+ "species": "Jirachi",
+ "item": "Choice Scarf",
+ "ability": "Serene Grace",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["U-turn"], ["Iron Head"], ["Ice Punch"], ["Fire Punch"]]
+ }
+ ]
+ },
+ "celebi": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Celebi",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 0, "spd": 0, "spe": 108},
+ "nature": "Bold",
+ "moves": [["Earth Power"], ["Nasty Plot"], ["Giga Drain"], ["Recover"]]
+ },
+ {
+ "species": "Celebi",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 252, "atk": 0, "def": 156, "spa": 0, "spd": 84, "spe": 16},
+ "nature": "Bold",
+ "moves": [["Thunder Wave"], ["Recover"], ["Giga Drain"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "zygarde": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Zygarde",
+ "item": "Life Orb",
+ "ability": "Aura Break",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Dragon Dance"], ["Earthquake"], ["Outrage"], ["Extreme Speed"]]
+ },
+ {
+ "species": "Zygarde",
+ "item": "Leftovers",
+ "ability": "Aura Break",
+ "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 0, "spd": 252, "spe": 56},
+ "nature": "Careful",
+ "moves": [["Substitute"], ["Coil"], ["Earthquake"], ["Dragon Tail"]]
+ }
+ ]
+ },
+ "weavile": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Weavile",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Ice Punch"], ["Knock Off"], ["Ice Shard"], ["Low Kick"]]
+ },
+ {
+ "species": "Weavile",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Pursuit"], ["Knock Off"], ["Ice Shard"], ["Icicle Crash"]]
+ }
+ ]
+ },
+ "volcarona": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Volcarona",
+ "item": "Leftovers",
+ "ability": "Flame Body",
+ "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 0, "spe": 124},
+ "nature": "Bold",
+ "moves": [["Quiver Dance"], ["Fiery Dance"], ["Giga Drain"], ["Roost"]]
+ },
+ {
+ "species": "Volcarona",
+ "item": "Lum Berry",
+ "ability": "Flame Body",
+ "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160},
+ "nature": "Modest",
+ "moves": [["Quiver Dance"], ["Fire Blast"], ["Giga Drain"], ["Bug Buzz"]]
+ }
+ ]
+ },
+ "victini": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Victini",
+ "item": "Choice Band",
+ "ability": "Victory Star",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["V-create"], ["Bolt Strike"], ["Brick Break"], ["U-turn"]]
+ },
+ {
+ "species": "Victini",
+ "item": "Choice Scarf",
+ "ability": "Victory Star",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["V-create"], ["Bolt Strike"], ["U-turn"], ["Final Gambit"]]
+ },
+ {
+ "species": "Victini",
+ "item": "Expert Belt",
+ "ability": "Victory Star",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Blue Flare"], ["Thunder"], ["Glaciate"], ["Focus Blast"]]
+ },
+ {
+ "species": "Victini",
+ "item": "Leftovers",
+ "ability": "Victory Star",
+ "evs": {"hp": 248, "atk": 32, "def": 68, "spa": 0, "spd": 0, "spe": 160},
+ "nature": "Adamant",
+ "moves": [["Taunt"], ["V-create"], ["Will-O-Wisp"], ["Bolt Strike"]]
+ },
+ {
+ "species": "Victini",
+ "item": "Leftovers",
+ "ability": "Victory Star",
+ "evs": {"hp": 96, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 160},
+ "nature": "Adamant",
+ "moves": [["Substitute"], ["V-create"], ["Bolt Strike"], ["Power-Up Punch"]]
+ }
+ ]
+ },
+ "tornadustherian": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tornadus-Therian",
+ "item": "Assault Vest",
+ "ability": "Regenerator",
+ "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 160, "spd": 0, "spe": 216},
+ "nature": "Timid",
+ "moves": [["Hurricane"], ["Focus Blast"], ["Knock Off"], ["U-turn"]]
+ },
+ {
+ "species": "Tornadus-Therian",
+ "item": "Life Orb",
+ "ability": "Regenerator",
+ "evs": {"hp": 0, "atk": 76, "def": 0, "spa": 216, "spd": 0, "spe": 216},
+ "nature": "Naive",
+ "moves": [["Hurricane"], ["Superpower"], ["U-turn"], ["Taunt"]]
+ }
+ ]
+ },
+ "togekiss": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Togekiss",
+ "item": "Lum Berry",
+ "ability": "Serene Grace",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Nasty Plot"], ["Air Slash"], ["Aura Sphere"], ["Roost"]]
+ },
+ {
+ "species": "Togekiss",
+ "item": "Leftovers",
+ "ability": "Serene Grace",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Thunder Wave"], ["Air Slash"], ["Defog"], ["Roost"]]
+ }
+ ]
+ },
+ "staraptor": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Staraptor",
+ "item": "Choice Band",
+ "ability": "Reckless",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Close Combat"], ["U-turn"], ["Double-Edge"]]
+ },
+ {
+ "species": "Staraptor",
+ "item": "Choice Scarf",
+ "ability": "Reckless",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Double-Edge"], ["Close Combat"], ["U-turn"]]
+ }
+ ]
+ },
+ "thundurustherian": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Thundurus-Therian",
+ "item": "Leftovers",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]]
+ },
+ {
+ "species": "Thundurus-Therian",
+ "item": "Choice Scarf",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"], ["U-turn"]]
+ },
+ {
+ "species": "Thundurus-Therian",
+ "item": "Leftovers",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 128, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 128},
+ "nature": "Modest",
+ "moves": [["Agility"], ["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"]]
+ }
+ ]
+ },
+ "scolipede": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Scolipede",
+ "item": "Life Orb",
+ "ability": "Speed Boost",
+ "evs": {"hp": 16, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 236},
+ "nature": "Adamant",
+ "moves": [["Megahorn"], ["Earthquake"], ["Poison Jab"], ["Protect"]]
+ }
+ ]
+ },
+ "medicham": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Medicham",
+ "item": "Medichamite",
+ "ability": "Pure Power",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["High Jump Kick"], ["Zen Headbutt"], ["Fake Out"], ["Ice Punch"]]
+ }
+ ]
+ },
+ "manaphy": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Manaphy",
+ "item": "Leftovers",
+ "ability": "Hydration",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Rest"], ["Rain Dance"], ["Scald"]]
+ },
+ {
+ "species": "Manaphy",
+ "item": "Leftovers",
+ "ability": "Hydration",
+ "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160},
+ "nature": "Timid",
+ "moves": [["Tail Glow"], ["Surf"], ["Ice Beam"], ["Energy Ball"]]
+ },
+ {
+ "species": "Manaphy",
+ "item": "Leftovers",
+ "ability": "Hydration",
+ "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160},
+ "nature": "Timid",
+ "moves": [["Tail Glow"], ["Rain Dance"], ["Scald"], ["Psychic"]]
+ }
+ ]
+ },
+ "klefki": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Klefki",
+ "item": "Light Clay",
+ "ability": "Prankster",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Reflect"], ["Light Screen"], ["Spikes"], ["Foul Play"]]
+ },
+ {
+ "species": "Klefki",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Thunder Wave"], ["Magnet Rise"], ["Spikes"], ["Play Rough"]]
+ }
+ ]
+ },
+ "hawlucha": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hawlucha",
+ "item": "Sitrus Berry",
+ "ability": "Unburden",
+ "evs": {"hp": 12, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 244},
+ "nature": "Jolly",
+ "moves": [["Substitute"], ["Swords Dance"], ["High Jump Kick"], ["Acrobatics"]]
+ },
+ {
+ "species": "Hawlucha",
+ "item": "Power Herb",
+ "ability": "Unburden",
+ "evs": {"hp": 12, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 244},
+ "nature": "Jolly",
+ "moves": [["Sky Attack"], ["Swords Dance"], ["High Jump Kick"], ["Acrobatics"]]
+ }
+ ]
+ },
+ "diggersby": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Diggersby",
+ "item": "Choice Scarf",
+ "ability": "Huge Power",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Return"], ["Earthquake"], ["Fire Punch"], ["U-turn"]],
+ "happiness": 255
+ },
+ {
+ "species": "Diggersby",
+ "item": "Focus Sash",
+ "ability": "Huge Power",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Earthquake"], ["Return"], ["Quick Attack"]],
+ "happiness": 255
+ },
+ {
+ "species": "Diggersby",
+ "item": "Life Orb",
+ "ability": "Huge Power",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Earthquake"], ["Return"], ["Quick Attack"]],
+ "happiness": 255
+ },
+ {
+ "species": "Diggersby",
+ "item": "Focus Sash",
+ "ability": "Huge Power",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Earthquake"], ["Return"], ["Fire Punch"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "crawdaunt": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Crawdaunt",
+ "item": "Life Orb",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Crabhammer"], ["Knock Off"], ["Aqua Jet"], ["Swords Dance"]]
+ },
+ {
+ "species": "Crawdaunt",
+ "item": "Choice Band",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Crabhammer"], ["Knock Off"], ["Aqua Jet"], ["Crunch"]]
+ }
+ ]
+ },
+ "alakazam": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Alakazam",
+ "item": "Focus Sash",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Shadow Ball"], ["Hidden Power Ice"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Alakazam",
+ "item": "Life Orb",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Shadow Ball"], ["Focus Blast"], ["Encore"]]
+ },
+ {
+ "species": "Alakazam",
+ "item": "Life Orb",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Shadow Ball"], ["Focus Blast"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Alakazam",
+ "item": "Alakazite",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Shadow Ball"], ["Focus Blast"], ["Encore"]]
+ }
+ ]
+ },
+ "zapdos": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Zapdos",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 252, "atk": 0, "def": 168, "spa": 68, "spd": 0, "spe": 20},
+ "nature": "Bold",
+ "moves": [["Thunderbolt"], ["Roost"], ["Defog"], ["Heat Wave"]]
+ }
+ ]
+ },
+ "venusaur": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Venusaur",
+ "item": "Venusaurite",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Bold",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Leech Seed"]]
+ },
+ {
+ "species": "Venusaur",
+ "item": "Venusaurite",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 232, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 20},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fire"], ["Synthesis"]]
+ }
+ ]
+ },
+ "tyranitar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tyranitar",
+ "item": "Choice Scarf",
+ "ability": "Sand Stream",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Pursuit"], ["Crunch"], ["Stone Edge"], ["Superpower"]]
+ },
+ {
+ "species": "Tyranitar",
+ "item": "Tyranitarite",
+ "ability": "Sand Stream",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Stone Edge"], ["Superpower"], ["Ice Punch"]]
+ },
+ {
+ "species": "Tyranitar",
+ "item": "Leftovers",
+ "ability": "Sand Stream",
+ "evs": {"hp": 248, "atk": 0, "def": 80, "spa": 0, "spd": 180, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Stealth Rock"], ["Stone Edge"], ["Ice Beam"], ["Pursuit"]]
+ },
+ {
+ "species": "Tyranitar",
+ "item": "Choice Band",
+ "ability": "Sand Stream",
+ "evs": {"hp": 100, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 156},
+ "nature": "Adamant",
+ "moves": [["Pursuit"], ["Crunch"], ["Stone Edge"], ["Superpower"]]
+ }
+ ]
+ },
+ "thundurus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Thundurus",
+ "item": "Life Orb",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 76, "def": 0, "spa": 180, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Thunderbolt"], ["Knock Off"], ["Superpower"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Thundurus",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]]
+ },
+ {
+ "species": "Thundurus",
+ "item": "Life Orb",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunder Wave"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "terrakion": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Terrakion",
+ "item": "Choice Scarf",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Close Combat"], ["Stone Edge"], ["X-Scissor"], ["Rock Slide"]]
+ },
+ {
+ "species": "Terrakion",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Close Combat"], ["Stone Edge"], ["Swords Dance"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Terrakion",
+ "item": "Focus Sash",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Close Combat"], ["Stone Edge"], ["Taunt"]]
+ },
+ {
+ "species": "Terrakion",
+ "item": "Lum Berry",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Rock Polish"], ["Stone Edge"], ["Close Combat"]]
+ }
+ ]
+ },
+ "talonflame": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Talonflame",
+ "ability": "Gale Wings",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Bulk Up"], ["Acrobatics"], ["Roost"], ["Taunt"]]
+ },
+ {
+ "species": "Talonflame",
+ "item": "Choice Band",
+ "ability": "Gale Wings",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Brave Bird"], ["Flare Blitz"], ["U-turn"], ["Steel Wing"]]
+ },
+ {
+ "species": "Talonflame",
+ "ability": "Gale Wings",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Acrobatics"], ["Taunt"], ["Roost"], ["Will-O-Wisp"]]
+ },
+ {
+ "species": "Talonflame",
+ "item": "Sharp Beak",
+ "ability": "Gale Wings",
+ "evs": {"hp": 88, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 168},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Brave Bird"], ["Flare Blitz"], ["Roost"]]
+ },
+ {
+ "species": "Talonflame",
+ "item": "Liechi Berry",
+ "ability": "Gale Wings",
+ "evs": {"hp": 88, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 168},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Natural Gift"], ["Brave Bird"], ["Flare Blitz"]]
+ },
+ {
+ "species": "Talonflame",
+ "ability": "Gale Wings",
+ "evs": {"hp": 248, "atk": 252, "def": 8, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Acrobatics"], ["Will-O-Wisp"], ["Roost"]]
+ }
+ ]
+ },
+ "sylveon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sylveon",
+ "item": "Choice Specs",
+ "ability": "Pixilate",
+ "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 12},
+ "nature": "Modest",
+ "moves": [["Hyper Voice"], ["Psyshock"], ["Shadow Ball"], ["Hidden Power Ground"]]
+ }
+ ]
+ },
+ "slowbro": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Slowbro",
+ "item": "Slowbronite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 80, "spa": 0, "spd": 176, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Scald"], ["Calm Mind"], ["Slack Off"], ["Psyshock"]]
+ },
+ {
+ "species": "Slowbro",
+ "item": "Slowbronite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Fire Blast"], ["Scald"], ["Psyshock"], ["Slack Off"]]
+ },
+ {
+ "species": "Slowbro",
+ "item": "Leftovers",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 232, "spa": 0, "spd": 24, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Scald"], ["Psyshock"], ["Thunder Wave"], ["Slack Off"]]
+ }
+ ]
+ },
+ "skarmory": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Skarmory",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Iron Head"], ["Spikes"], ["Roost"], ["Whirlwind"]]
+ },
+ {
+ "species": "Skarmory",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Roost"], ["Defog"], ["Brave Bird"], ["Whirlwind"]]
+ },
+ {
+ "species": "Skarmory",
+ "gender": "F",
+ "item": "Custap Berry",
+ "ability": "Sturdy",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Spikes"], ["Taunt"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "scizor": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Scizor",
+ "item": "Scizorite",
+ "ability": "Light Metal",
+ "evs": {"hp": 248, "atk": 84, "def": 0, "spa": 0, "spd": 176, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Swords Dance"], ["Roost"], ["Bullet Punch"], ["Knock Off"]]
+ },
+ {
+ "species": "Scizor",
+ "item": "Choice Band",
+ "ability": "Technician",
+ "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["U-turn"], ["Bullet Punch"], ["Knock Off"], ["Superpower"]]
+ },
+ {
+ "species": "Scizor",
+ "item": "Scizorite",
+ "ability": "Light Metal",
+ "evs": {"hp": 252, "atk": 4, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Defog"], ["Roost"], ["Bullet Punch"], ["Knock Off"]]
+ },
+ {
+ "species": "Scizor",
+ "item": "Scizorite",
+ "ability": "Light Metal",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Bullet Punch"], ["Bug Bite"], ["Superpower"]]
+ }
+ ]
+ },
+ "rotomwash": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rotom-Wash",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 216, "spa": 0, "spd": 0, "spe": 44},
+ "nature": "Bold",
+ "moves": [["Volt Switch"], ["Hydro Pump"], ["Will-O-Wisp"], ["Pain Split"]]
+ }
+ ]
+ },
+ "pinsir": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Pinsir",
+ "item": "Pinsirite",
+ "ability": "Hyper Cutter",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Return"], ["Close Combat"], ["Quick Attack"]],
+ "happiness": 255
+ },
+ {
+ "species": "Pinsir",
+ "item": "Pinsirite",
+ "ability": "Hyper Cutter",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Return"], ["Earthquake"], ["Quick Attack"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "mew": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mew",
+ "item": "Leftovers",
+ "ability": "Synchronize",
+ "evs": {"hp": 252, "atk": 0, "def": 104, "spa": 0, "spd": 0, "spe": 152},
+ "nature": "Impish",
+ "moves": [["Defog"], ["Soft-Boiled"], ["Will-O-Wisp"], ["Knock Off"]]
+ },
+ {
+ "species": "Mew",
+ "item": "Leftovers",
+ "ability": "Synchronize",
+ "evs": {"hp": 252, "atk": 0, "def": 104, "spa": 0, "spd": 0, "spe": 152},
+ "nature": "Impish",
+ "moves": [["Taunt"], ["Soft-Boiled"], ["Will-O-Wisp"], ["Knock Off"]]
+ }
+ ]
+ },
+ "metagross": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Metagross",
+ "item": "Metagrossite",
+ "ability": "Clear Body",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Meteor Mash"], ["Zen Headbutt"], ["Hammer Arm"], ["Grass Knot"]]
+ },
+ {
+ "species": "Metagross",
+ "item": "Metagrossite",
+ "ability": "Clear Body",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Meteor Mash"], ["Zen Headbutt"], ["Hammer Arm"], ["Pursuit"]]
+ },
+ {
+ "species": "Metagross",
+ "item": "Metagrossite",
+ "ability": "Clear Body",
+ "evs": {"hp": 80, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 176},
+ "nature": "Adamant",
+ "moves": [["Meteor Mash"], ["Zen Headbutt"], ["Earthquake"], ["Agility"]]
+ }
+ ]
+ },
+ "manectric": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Manectric",
+ "item": "Manectite",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Overheat"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Manectric",
+ "item": "Manectite",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Flamethrower"], ["Hidden Power Ice"]]
+ }
+ ]
+ },
+ "mandibuzz": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mandibuzz",
+ "item": "Leftovers",
+ "ability": "Overcoat",
+ "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 108, "spe": 16},
+ "nature": "Bold",
+ "moves": [["Foul Play"], ["Roost"], ["Taunt"], ["Defog"]]
+ }
+ ]
+ },
+ "mamoswine": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mamoswine",
+ "item": "Focus Sash",
+ "ability": "Thick Fat",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Endeavor"], ["Ice Shard"], ["Earthquake"]]
+ },
+ {
+ "species": "Mamoswine",
+ "item": "Life Orb",
+ "ability": "Thick Fat",
+ "evs": {"hp": 0, "atk": 240, "def": 0, "spa": 16, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Earthquake"], ["Ice Shard"], ["Icicle Crash"], ["Freeze-Dry"]]
+ }
+ ]
+ },
+ "magnezone": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Magnezone",
+ "item": "Choice Scarf",
+ "ability": "Magnet Pull",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Hidden Power Fire"], ["Flash Cannon"], ["Thunderbolt"]]
+ },
+ {
+ "species": "Magnezone",
+ "item": "Choice Specs",
+ "ability": "Magnet Pull",
+ "evs": {"hp": 172, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 84},
+ "nature": "Modest",
+ "moves": [["Volt Switch"], ["Hidden Power Fire"], ["Flash Cannon"], ["Thunderbolt"]]
+ }
+ ]
+ },
+ "lopunny": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Lopunny",
+ "item": "Lopunnite",
+ "ability": "Limber",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["High Jump Kick"], ["Return"], ["Fake Out"], ["Ice Punch"]],
+ "happiness": 255
+ },
+ {
+ "species": "Lopunny",
+ "item": "Lopunnite",
+ "ability": "Limber",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["High Jump Kick"], ["Return"], ["Fake Out"], ["Power-Up Punch"]],
+ "happiness": 255
+ },
+ {
+ "species": "Lopunny",
+ "item": "Lopunnite",
+ "ability": "Limber",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["High Jump Kick"], ["Return"], ["Substitute"], ["Encore"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "latios": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Latios",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Defog"], ["Trick"]]
+ },
+ {
+ "species": "Latios",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Earthquake"], ["Defog"]]
+ },
+ {
+ "species": "Latios",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Roost"], ["Defog"]]
+ },
+ {
+ "species": "Latios",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Hidden Power Fire"], ["Defog"]]
+ },
+ {
+ "species": "Latios",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Psyshock"], ["Calm Mind"], ["Roost"]]
+ },
+ {
+ "species": "Latios",
+ "gender": "M",
+ "item": "Latiosite",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Psyshock"], ["Draco Meteor"], ["Earthquake"], ["Hidden Power Fire"]]
+ }
+ ]
+ },
+ "latias": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Latias",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Defog"], ["Draco Meteor"], ["Psyshock"], ["Healing Wish"]]
+ },
+ {
+ "species": "Latias",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 72, "atk": 0, "def": 0, "spa": 184, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Defog"], ["Draco Meteor"], ["Psyshock"], ["Roost"]]
+ },
+ {
+ "species": "Latias",
+ "gender": "F",
+ "item": "Latiasite",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 100, "spa": 0, "spd": 0, "spe": 160},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Roost"], ["Substitute"], ["Calm Mind"], ["Stored Power"]]
+ },
+ {
+ "species": "Latias",
+ "gender": "F",
+ "item": "Latiasite",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 68, "spa": 0, "spd": 0, "spe": 192},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Thunder Wave"], ["Roar"], ["Recover"], ["Dragon Pulse"]]
+ }
+ ]
+ },
+ "landorustherian": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Landorus-Therian",
+ "item": "Choice Scarf",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 24, "spa": 0, "spd": 0, "spe": 232},
+ "nature": "Jolly",
+ "moves": [["Earthquake"], ["U-turn"], ["Explosion"], ["Stone Edge"]]
+ },
+ {
+ "species": "Landorus-Therian",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 8, "spe": 8},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["U-turn"], ["Stone Edge"]]
+ },
+ {
+ "species": "Landorus-Therian",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 56, "atk": 220, "def": 0, "spa": 0, "spd": 0, "spe": 232},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Rock Polish"], ["Earthquake"], ["Stone Edge"]]
+ },
+ {
+ "species": "Landorus-Therian",
+ "item": "Earth Plate",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Stone Edge"], ["U-turn"]]
+ }
+ ]
+ },
+ "kyuremblack": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kyurem-Black",
+ "item": "Choice Scarf",
+ "ability": "Teravolt",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 32, "spd": 0, "spe": 224},
+ "nature": "Naive",
+ "moves": [["Outrage"], ["Dragon Claw"], ["Fusion Bolt"], ["Ice Beam"]]
+ },
+ {
+ "species": "Kyurem-Black",
+ "item": "Life Orb",
+ "ability": "Teravolt",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 56, "spd": 0, "spe": 200},
+ "nature": "Lonely",
+ "moves": [["Dragon Claw"], ["Fusion Bolt"], ["Ice Beam"], ["Iron Head"]]
+ },
+ {
+ "species": "Kyurem-Black",
+ "item": "Life Orb",
+ "ability": "Teravolt",
+ "evs": {"hp": 0, "atk": 56, "def": 0, "spa": 252, "spd": 0, "spe": 200},
+ "nature": "Mild",
+ "moves": [["Ice Beam"], ["Fusion Bolt"], ["Earth Power"], ["Outrage"]]
+ },
+ {
+ "species": "Kyurem-Black",
+ "item": "Leftovers",
+ "ability": "Teravolt",
+ "evs": {"hp": 56, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 200},
+ "nature": "Mild",
+ "moves": [["Substitute"], ["Ice Beam"], ["Fusion Bolt"], ["Earth Power"]]
+ }
+ ]
+ },
+ "keldeo": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Keldeo",
+ "item": "Choice Specs",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hydro Pump"], ["Secret Sword"], ["Scald"], ["Icy Wind"]]
+ },
+ {
+ "species": "Keldeo",
+ "item": "Choice Scarf",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hydro Pump"], ["Secret Sword"], ["Scald"], ["Hidden Power Electric"]]
+ },
+ {
+ "species": "Keldeo",
+ "item": "Leftovers",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Scald"], ["Secret Sword"], ["Substitute"], ["Calm Mind"]]
+ },
+ {
+ "species": "Keldeo",
+ "item": "Salac Berry",
+ "ability": "Justified",
+ "evs": {"hp": 8, "atk": 0, "def": 0, "spa": 248, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Endeavor"], ["Substitute"], ["Hydro Pump"], ["Secret Sword"]]
+ }
+ ]
+ },
+ "heracross": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Heracross",
+ "item": "Heracronite",
+ "ability": "Guts",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Close Combat"], ["Pin Missile"], ["Rock Blast"], ["Swords Dance"]]
+ },
+ {
+ "species": "Heracross",
+ "item": "Toxic Orb",
+ "ability": "Guts",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Close Combat"], ["Megahorn"], ["Facade"], ["Swords Dance"]]
+ }
+ ]
+ },
+ "heatran": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Heatran",
+ "item": "Choice Scarf",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Overheat"], ["Flash Cannon"], ["Earth Power"], ["Stone Edge"]]
+ },
+ {
+ "species": "Heatran",
+ "item": "Air Balloon",
+ "ability": "Flash Fire",
+ "evs": {"hp": 12, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 244},
+ "nature": "Timid",
+ "moves": [["Stealth Rock"], ["Fire Blast"], ["Taunt"], ["Earth Power"]]
+ },
+ {
+ "species": "Heatran",
+ "item": "Leftovers",
+ "ability": "Flash Fire",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 68},
+ "nature": "Calm",
+ "moves": [["Lava Plume"], ["Toxic"], ["Taunt"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "gyarados": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gyarados",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 88, "atk": 192, "def": 4, "spa": 0, "spd": 0, "spe": 224},
+ "nature": "Adamant",
+ "moves": [["Substitute"], ["Dragon Dance"], ["Waterfall"], ["Bounce"]]
+ },
+ {
+ "species": "Gyarados",
+ "item": "Gyaradosite",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Dragon Dance"], ["Waterfall"], ["Crunch"], ["Earthquake"]]
+ }
+ ]
+ },
+ "gallade": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Gallade",
+ "item": "Galladite",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Close Combat"], ["Knock Off"], ["Zen Headbutt"]]
+ },
+ {
+ "species": "Gallade",
+ "item": "Galladite",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Close Combat"], ["Ice Punch"], ["Zen Headbutt"]]
+ }
+ ]
+ },
+ "gliscor": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gliscor",
+ "item": "Toxic Orb",
+ "ability": "Poison Heal",
+ "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 72},
+ "nature": "Careful",
+ "moves": [["Swords Dance"], ["Roost"], ["Knock Off"], ["Earthquake"]]
+ },
+ {
+ "species": "Gliscor",
+ "item": "Toxic Orb",
+ "ability": "Poison Heal",
+ "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 72},
+ "nature": "Careful",
+ "moves": [["Taunt"], ["Roost"], ["Knock Off"], ["Earthquake"]]
+ },
+ {
+ "species": "Gliscor",
+ "item": "Toxic Orb",
+ "ability": "Poison Heal",
+ "evs": {"hp": 244, "atk": 0, "def": 0, "spa": 0, "spd": 192, "spe": 72},
+ "nature": "Careful",
+ "moves": [["Taunt"], ["Roost"], ["Toxic"], ["Earthquake"]]
+ },
+ {
+ "species": "Gliscor",
+ "item": "Toxic Orb",
+ "ability": "Poison Heal",
+ "evs": {"hp": 244, "atk": 0, "def": 28, "spa": 0, "spd": 0, "spe": 236},
+ "nature": "Impish",
+ "moves": [["Substitute"], ["Toxic"], ["Protect"], ["Earthquake"]]
+ }
+ ]
+ },
+ "gengar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gengar",
+ "item": "Black Sludge",
+ "ability": "Levitate",
+ "evs": {"hp": 8, "atk": 0, "def": 0, "spa": 248, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hex"], ["Taunt"], ["Will-O-Wisp"], ["Sludge Wave"]]
+ },
+ {
+ "species": "Gengar",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shadow Ball"], ["Sludge Wave"], ["Focus Blast"], ["Taunt"]]
+ },
+ {
+ "species": "Gengar",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Pain Split"], ["Shadow Ball"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "gardevoir": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Gardevoir",
+ "item": "Gardevoirite",
+ "ability": "Trace",
+ "evs": {"hp": 0, "atk": 0, "def": 24, "spa": 232, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Calm Mind"], ["Hyper Voice"], ["Psyshock"], ["Focus Blast"]]
+ },
+ {
+ "species": "Gardevoir",
+ "item": "Gardevoirite",
+ "ability": "Trace",
+ "evs": {"hp": 0, "atk": 0, "def": 24, "spa": 232, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hyper Voice"], ["Psyshock"], ["Focus Blast"], ["Taunt"]]
+ },
+ {
+ "species": "Gardevoir",
+ "item": "Gardevoirite",
+ "ability": "Trace",
+ "evs": {"hp": 0, "atk": 0, "def": 24, "spa": 232, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hyper Voice"], ["Psyshock"], ["Focus Blast"], ["Will-O-Wisp"]]
+ }
+ ]
+ },
+ "garchomp": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Garchomp",
+ "item": "Rocky Helmet",
+ "ability": "Rough Skin",
+ "evs": {"hp": 252, "atk": 0, "def": 164, "spa": 0, "spd": 76, "spe": 16},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Dragon Tail"], ["Fire Blast"]]
+ },
+ {
+ "species": "Garchomp",
+ "item": "Focus Sash",
+ "ability": "Rough Skin",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Dragon Claw"], ["Fire Blast"]]
+ },
+ {
+ "species": "Garchomp",
+ "item": "Lum Berry",
+ "ability": "Rough Skin",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Outrage"], ["Swords Dance"]]
+ },
+ {
+ "species": "Garchomp",
+ "item": "Garchompite",
+ "ability": "Rough Skin",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Draco Meteor"], ["Earthquake"], ["Fire Blast"], ["Stone Edge"]]
+ },
+ {
+ "species": "Garchomp",
+ "item": "Choice Scarf",
+ "ability": "Rough Skin",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Earthquake"], ["Outrage"], ["Stone Edge"], ["Dragon Claw"]]
+ }
+ ]
+ },
+ "ferrothorn": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ferrothorn",
+ "item": "Leftovers",
+ "ability": "Iron Barbs",
+ "evs": {"hp": 252, "atk": 0, "def": 88, "spa": 0, "spd": 168, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Spikes"], ["Leech Seed"], ["Gyro Ball"], ["Power Whip"]]
+ },
+ {
+ "species": "Ferrothorn",
+ "item": "Shed Shell",
+ "ability": "Iron Barbs",
+ "evs": {"hp": 252, "atk": 0, "def": 88, "spa": 0, "spd": 168, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Spikes"], ["Leech Seed"], ["Gyro Ball"], ["Protect"]]
+ },
+ {
+ "species": "Ferrothorn",
+ "item": "Leftovers",
+ "ability": "Iron Barbs",
+ "evs": {"hp": 252, "atk": 0, "def": 88, "spa": 0, "spd": 168, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Protect"], ["Leech Seed"], ["Gyro Ball"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "excadrill": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Excadrill",
+ "item": "Choice Scarf",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Earthquake"], ["Iron Head"], ["Rock Slide"], ["Rapid Spin"]]
+ },
+ {
+ "species": "Excadrill",
+ "item": "Air Balloon",
+ "ability": "Sand Rush",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Earthquake"], ["Iron Head"], ["Rock Slide"], ["Swords Dance"]]
+ },
+ {
+ "species": "Excadrill",
+ "item": "Life Orb",
+ "ability": "Sand Rush",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Earthquake"], ["Iron Head"], ["Rock Slide"], ["Rapid Spin"]]
+ },
+ {
+ "species": "Excadrill",
+ "item": "Leftovers",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Earthquake"], ["Iron Head"], ["Rapid Spin"], ["Toxic"]]
+ }
+ ]
+ },
+ "dragonite": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Dragonite",
+ "item": "Choice Band",
+ "ability": "Multiscale",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Outrage"], ["Extreme Speed"], ["Thunder Punch"], ["Superpower"]]
+ },
+ {
+ "species": "Dragonite",
+ "item": "Lum Berry",
+ "ability": "Multiscale",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Dragon Dance"], ["Outrage"], ["Extreme Speed"], ["Earthquake"]]
+ },
+ {
+ "species": "Dragonite",
+ "item": "Lum Berry",
+ "ability": "Multiscale",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Dragon Dance"], ["Outrage"], ["Extreme Speed"], ["Fire Punch"]]
+ }
+ ]
+ },
+ "conkeldurr": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Conkeldurr",
+ "item": "Assault Vest",
+ "ability": "Guts",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 236, "spe": 20},
+ "nature": "Adamant",
+ "moves": [["Drain Punch"], ["Mach Punch"], ["Ice Punch"], ["Poison Jab"]]
+ },
+ {
+ "species": "Conkeldurr",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 48, "atk": 252, "def": 0, "spa": 0, "spd": 208, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Drain Punch"], ["Mach Punch"], ["Ice Punch"], ["Thunder Punch"]]
+ }
+ ]
+ },
+ "clefable": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Clefable",
+ "item": "Leftovers",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 172, "spa": 0, "spd": 84, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Calm Mind"], ["Moonblast"], ["Soft-Boiled"], ["Flamethrower"]]
+ },
+ {
+ "species": "Clefable",
+ "item": "Leftovers",
+ "ability": "Unaware",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Moonblast"], ["Wish"], ["Protect"], ["Heal Bell"]]
+ },
+ {
+ "species": "Clefable",
+ "item": "Leftovers",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 172, "spa": 0, "spd": 84, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Stealth Rock"], ["Moonblast"], ["Thunder Wave"], ["Soft-Boiled"]]
+ }
+ ]
+ },
+ "charizard": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Charizard",
+ "item": "Charizardite X",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Dragon Claw"], ["Flare Blitz"], ["Roost"]]
+ },
+ {
+ "species": "Charizard",
+ "item": "Charizardite X",
+ "ability": "Blaze",
+ "evs": {"hp": 248, "atk": 24, "def": 0, "spa": 0, "spd": 180, "spe": 56},
+ "nature": "Adamant",
+ "moves": [["Earthquake"], ["Dragon Claw"], ["Will-O-Wisp"], ["Roost"]]
+ },
+ {
+ "species": "Charizard",
+ "item": "Charizardite X",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Dragon Claw"], ["Flare Blitz"], ["Earthquake"]]
+ },
+ {
+ "species": "Charizard",
+ "item": "Charizardite X",
+ "ability": "Blaze",
+ "evs": {"hp": 144, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 112},
+ "nature": "Adamant",
+ "moves": [["Tailwind"], ["Outrage"], ["Flare Blitz"], ["Swords Dance"]]
+ },
+ {
+ "species": "Charizard",
+ "item": "Charizardite Y",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Solar Beam"], ["Focus Blast"], ["Roost"]]
+ }
+ ]
+ },
+ "chansey": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Chansey",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 4, "atk": 0, "def": 252, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Soft-Boiled"], ["Heal Bell"], ["Stealth Rock"], ["Seismic Toss"]]
+ },
+ {
+ "species": "Chansey",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 4, "atk": 0, "def": 252, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Wish"], ["Soft-Boiled"], ["Seismic Toss"], ["Toxic"]]
+ }
+ ]
+ },
+ "breloom": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Breloom",
+ "item": "Toxic Orb",
+ "ability": "Poison Heal",
+ "evs": {"hp": 12, "atk": 244, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Superpower"], ["Seed Bomb"], ["Facade"]]
+ },
+ {
+ "species": "Breloom",
+ "item": "Focus Sash",
+ "ability": "Technician",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Spore"], ["Bullet Seed"], ["Mach Punch"], ["Rock Tomb"]]
+ },
+ {
+ "species": "Breloom",
+ "item": "Life Orb",
+ "ability": "Technician",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Spore"], ["Bullet Seed"], ["Mach Punch"], ["Swords Dance"]]
+ }
+ ]
+ },
+ "bisharp": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Bisharp",
+ "item": "Black Glasses",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 52, "spe": 204},
+ "nature": "Adamant",
+ "moves": [["Knock Off"], ["Iron Head"], ["Sucker Punch"], ["Pursuit"]]
+ },
+ {
+ "species": "Bisharp",
+ "item": "Life Orb",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Knock Off"], ["Swords Dance"], ["Iron Head"], ["Sucker Punch"]]
+ },
+ {
+ "species": "Bisharp",
+ "item": "Life Orb",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Knock Off"], ["Low Kick"], ["Iron Head"], ["Sucker Punch"]]
+ },
+ {
+ "species": "Bisharp",
+ "item": "Black Glasses",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Knock Off"], ["Low Kick"], ["Iron Head"], ["Sucker Punch"]]
+ }
+ ]
+ },
+ "azumarill": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Azumarill",
+ "item": "Assault Vest",
+ "ability": "Huge Power",
+ "evs": {"hp": 240, "atk": 252, "def": 0, "spa": 0, "spd": 16, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Play Rough"], ["Waterfall"], ["Aqua Jet"], ["Knock Off"]]
+ },
+ {
+ "species": "Azumarill",
+ "item": "Sitrus Berry",
+ "ability": "Huge Power",
+ "evs": {"hp": 92, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 164},
+ "nature": "Adamant",
+ "moves": [["Belly Drum"], ["Aqua Jet"], ["Play Rough"], ["Knock Off"]]
+ },
+ {
+ "species": "Azumarill",
+ "item": "Choice Band",
+ "ability": "Huge Power",
+ "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84},
+ "nature": "Adamant",
+ "moves": [["Play Rough"], ["Waterfall"], ["Aqua Jet"], ["Superpower"]]
+ }
+ ]
+ },
+ "altaria": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Altaria",
+ "item": "Altarianite",
+ "ability": "Cloud Nine",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Roost"], ["Return"], ["Earthquake"]],
+ "happiness": 255
+ },
+ {
+ "species": "Altaria",
+ "item": "Altarianite",
+ "ability": "Cloud Nine",
+ "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 96, "spe": 28},
+ "nature": "Impish",
+ "moves": [["Dragon Dance"], ["Roost"], ["Return"], ["Substitute"]],
+ "happiness": 255
+ },
+ {
+ "species": "Altaria",
+ "item": "Altarianite",
+ "ability": "Cloud Nine",
+ "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 96, "spe": 28},
+ "nature": "Impish",
+ "moves": [["Dragon Dance"], ["Roost"], ["Return"], ["Heal Bell"]],
+ "happiness": 255
+ },
+ {
+ "species": "Altaria",
+ "item": "Altarianite",
+ "ability": "Cloud Nine",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 168, "spd": 0, "spe": 92},
+ "nature": "Modest",
+ "moves": [["Hyper Voice"], ["Fire Blast"], ["Roost"], ["Earthquake"]]
+ },
+ {
+ "species": "Altaria",
+ "item": "Altarianite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 248, "atk": 0, "def": 104, "spa": 0, "spd": 156, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Hyper Voice"], ["Roost"], ["Heal Bell"], ["Flamethrower"]]
+ },
+ {
+ "species": "Altaria",
+ "item": "Altarianite",
+ "ability": "Cloud Nine",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Return"], ["Earthquake"], ["Fire Blast"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "serperior": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Serperior",
+ "item": "Life Orb",
+ "ability": "Contrary",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Fire"], ["Glare"]]
+ },
+ {
+ "species": "Serperior",
+ "item": "Meadow Plate",
+ "ability": "Contrary",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Fire"], ["Taunt"]]
+ },
+ {
+ "species": "Serperior",
+ "item": "Leftovers",
+ "ability": "Contrary",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Ground"], ["Substitute"]]
+ },
+ {
+ "species": "Serperior",
+ "item": "Life Orb",
+ "ability": "Contrary",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Leaf Storm"], ["Dragon Pulse"], ["Hidden Power Fire"], ["Giga Drain"]]
+ }
+ ]
+ },
+ "feraligatr": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Feraligatr",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Ice Punch"], ["Superpower"], ["Dragon Dance"]]
+ },
+ {
+ "species": "Feraligatr",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Ice Punch"], ["Crunch"], ["Dragon Dance"]]
+ }
+ ]
+ },
+ "raikou": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Raikou",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Calm Mind"], ["Thunderbolt"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Raikou",
+ "item": "Choice Specs",
+ "ability": "Pressure",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Raikou",
+ "item": "Assault Vest",
+ "ability": "Pressure",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"]]
+ }
+ ]
+ }
+ },
+ "UU": {
+ "gardevoir": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gardevoir",
+ "item": "Choice Specs",
+ "ability": "Trace",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Moonblast"], ["Psyshock"], ["Focus Blast"], ["Trick"]]
+ },
+ {
+ "species": "Gardevoir",
+ "item": "Choice Specs",
+ "ability": "Trace",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Moonblast"], ["Psyshock"], ["Focus Blast"], ["Shadow Ball"]]
+ },
+ {
+ "species": "Gardevoir",
+ "item": "Choice Specs",
+ "ability": "Trace",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Moonblast"], ["Psyshock"], ["Shadow Ball"], ["Trick"]]
+ },
+ {
+ "species": "Gardevoir",
+ "item": "Leftovers",
+ "ability": "Trace",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Moonblast"], ["Psyshock"], ["Focus Blast", "Substitute"]]
+ }
+ ]
+ },
+ "sableye": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sableye",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Recover"], ["Will-O-Wisp"], ["Taunt"], ["Knock Off"]]
+ }
+ ]
+ },
+ "diancie": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Diancie",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 0},
+ "nature": "Quiet",
+ "moves": [["Stealth Rock"], ["Moonblast"], ["Diamond Storm"], ["Earth Power", "Protect"]]
+ }
+ ]
+ },
+ "metagross": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Metagross",
+ "item": "Shuca Berry",
+ "ability": "Clear Body",
+ "evs": {"hp": 40, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 216},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Earthquake", "Ice Punch", "Thunder Punch"], ["Zen Headbutt"], ["Bullet Punch"]]
+ }
+ ]
+ },
+ "gyarados": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gyarados",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Waterfall"], ["Bounce"], ["Substitute", "Earthquake", "Stone Edge"]]
+ },
+ {
+ "species": "Gyarados",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 216, "atk": 60, "def": 184, "spa": 0, "spd": 0, "spe": 48},
+ "nature": "Impish",
+ "moves": [["Rest"], ["Sleep Talk"], ["Waterfall"], ["Toxic", "Roar"]]
+ }
+ ]
+ },
+ "hoopa": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hoopa",
+ "item": "Life Orb",
+ "ability": "Magician",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Trick Room"], ["Shadow Ball"], ["Psyshock", "Psychic"], ["Focus Blast"]]
+ },
+ {
+ "species": "Hoopa",
+ "item": "Life Orb",
+ "ability": "Magician",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shadow Ball"], ["Focus Blast"], ["Psyshock"], ["Substitute"]]
+ },
+ {
+ "species": "Hoopa",
+ "item": "Life Orb",
+ "ability": "Magician",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shadow Ball"], ["Focus Blast"], ["Psyshock"], ["Nasty Plot"]]
+ },
+ {
+ "species": "Hoopa",
+ "item": "Life Orb",
+ "ability": "Magician",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shadow Ball"], ["Focus Blast"], ["Nasty Plot"], ["Substitute"]]
+ }
+ ]
+ },
+ "crobat": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Crobat",
+ "item": "Choice Band",
+ "ability": "Infiltrator",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Sleep Talk"], ["Brave Bird"], ["Cross Poison"], ["U-turn"]]
+ },
+ {
+ "species": "Crobat",
+ "item": "Black Sludge",
+ "ability": "Infiltrator",
+ "evs": {"hp": 248, "atk": 0, "def": 80, "spa": 0, "spd": 4, "spe": 176},
+ "nature": "Jolly",
+ "moves": [["Roost"], ["Defog"], ["Taunt"], ["Brave Bird"]]
+ }
+ ]
+ },
+ "entei": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Entei",
+ "item": "Choice Band",
+ "ability": "Pressure",
+ "shiny": true,
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Extreme Speed"], ["Sacred Fire"], ["Stone Edge"], ["Bulldoze"]]
+ },
+ {
+ "species": "Entei",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "shiny": true,
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Extreme Speed"], ["Sacred Fire"], ["Stone Edge"], ["Bulldoze"]]
+ },
+ {
+ "species": "Entei",
+ "item": "Assault Vest",
+ "ability": "Pressure",
+ "shiny": true,
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 240, "spe": 16},
+ "nature": "Adamant",
+ "moves": [["Extreme Speed"], ["Sacred Fire"], ["Stone Edge"], ["Bulldoze"]]
+ }
+ ]
+ },
+ "suicune": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Suicune",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Rest"], ["Sleep Talk"], ["Calm Mind"], ["Scald"]]
+ },
+ {
+ "species": "Suicune",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Rest"], ["Sleep Talk"], ["Roar"], ["Scald"]]
+ },
+ {
+ "species": "Suicune",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 196, "spd": 0, "spe": 64},
+ "nature": "Modest",
+ "moves": [["Substitute"], ["Calm Mind"], ["Hydro Pump"], ["Ice Beam"]]
+ },
+ {
+ "species": "Suicune",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Grass"]]
+ }
+ ]
+ },
+ "aerodactyl": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Aerodactyl",
+ "item": "Aerodactylite",
+ "ability": "Pressure",
+ "evs": {"hp": 40, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 216},
+ "nature": "Jolly",
+ "moves": [["Hone Claws"], ["Stone Edge"], ["Aerial Ace"], ["Aqua Tail"]]
+ },
+ {
+ "species": "Aerodactyl",
+ "item": "Aerodactylite",
+ "ability": "Pressure",
+ "evs": {"hp": 40, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 216},
+ "nature": "Jolly",
+ "moves": [["Roost"], ["Taunt"], ["Stone Edge"], ["Aerial Ace"]]
+ }
+ ]
+ },
+ "hydreigon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hydreigon",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Roost"], ["Draco Meteor"], ["Dark Pulse"], ["Fire Blast"]]
+ },
+ {
+ "species": "Hydreigon",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Roost"], ["Draco Meteor"], ["Fire Blast"], ["Superpower"]]
+ },
+ {
+ "species": "Hydreigon",
+ "item": "Choice Specs",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Dark Pulse"], ["Focus Blast"], ["Flash Cannon"]]
+ },
+ {
+ "species": "Hydreigon",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["U-turn"], ["Draco Meteor"], ["Dark Pulse"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "machamp": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Machamp",
+ "item": "Assault Vest",
+ "ability": "No Guard",
+ "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84},
+ "nature": "Adamant",
+ "moves": [["Bullet Punch"], ["Dynamic Punch"], ["Knock Off"], ["Ice Punch"]]
+ },
+ {
+ "species": "Machamp",
+ "item": "Choice Band",
+ "ability": "No Guard",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Bullet Punch"], ["Dynamic Punch"], ["Knock Off"], ["Ice Punch"]]
+ },
+ {
+ "species": "Machamp",
+ "item": "Leftovers",
+ "ability": "No Guard",
+ "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Adamant",
+ "moves": [["Rest"], ["Sleep Talk"], ["Dynamic Punch"], ["Knock Off"]]
+ },
+ {
+ "species": "Machamp",
+ "item": "Leftovers",
+ "ability": "No Guard",
+ "evs": {"hp": 212, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 44},
+ "nature": "Adamant",
+ "moves": [["Bulk Up"], ["Dynamic Punch"], ["Stone Edge"], ["Ice Punch"]]
+ }
+ ]
+ },
+ "mienshao": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mienshao",
+ "item": "Life Orb",
+ "ability": "Regenerator",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Fake Out"], ["High Jump Kick"], ["Knock Off"], ["U-turn"]]
+ },
+ {
+ "species": "Mienshao",
+ "item": "Choice Scarf",
+ "ability": "Reckless",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["High Jump Kick"], ["Knock Off"], ["Poison Jab"], ["U-turn"]]
+ }
+ ]
+ },
+ "absol": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Absol",
+ "item": "Absolite",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Sucker Punch"], ["Knock Off"], ["Superpower"]]
+ },
+ {
+ "species": "Absol",
+ "item": "Absolite",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 240, "def": 0, "spa": 44, "spd": 0, "spe": 224},
+ "nature": "Naive",
+ "moves": [["Sucker Punch"], ["Knock Off"], ["Ice Beam"], ["Fire Blast"]]
+ }
+ ]
+ },
+ "aggron": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Aggron",
+ "item": "Aggronite",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 0, "def": 16, "spa": 0, "spd": 244, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Rest"], ["Sleep Talk"], ["Heavy Slam"], ["Earthquake"]]
+ },
+ {
+ "species": "Aggron",
+ "item": "Aggronite",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 0, "def": 136, "spa": 0, "spd": 124, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Roar"], ["Heavy Slam"], ["Earthquake"]]
+ }
+ ]
+ },
+ "beedrill": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Beedrill",
+ "item": "Beedrillite",
+ "ability": "Swarm",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Protect"], ["U-turn"], ["Poison Jab"], ["Drill Run"]]
+ }
+ ]
+ },
+ "blastoise": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Blastoise",
+ "item": "Blastoisinite",
+ "ability": "Rain Dish",
+ "evs": {"hp": 56, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 200},
+ "nature": "Modest",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Aura Sphere"], ["Dark Pulse"]]
+ },
+ {
+ "species": "Blastoise",
+ "item": "Blastoisinite",
+ "ability": "Torrent",
+ "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 44, "spd": 64, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Rapid Spin"], ["Scald"], ["Ice Beam"], ["Dark Pulse"]]
+ }
+ ]
+ },
+ "empoleon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Empoleon",
+ "item": "Leftovers",
+ "ability": "Torrent",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Stealth Rock"], ["Defog"], ["Roar"], ["Scald"]]
+ },
+ {
+ "species": "Empoleon",
+ "item": "Choice Specs",
+ "ability": "Torrent",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Hydro Pump"], ["Flash Cannon"], ["Ice Beam"], ["Grass Knot"]]
+ },
+ {
+ "species": "Empoleon",
+ "item": "Petaya Berry",
+ "ability": "Torrent",
+ "evs": {"hp": 12, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 240},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Agility"], ["Substitute"], ["Surf"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "krookodile": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Krookodile",
+ "item": "Choice Band",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Pursuit"], ["Earthquake"], ["Knock Off"], ["Superpower"]]
+ },
+ {
+ "species": "Krookodile",
+ "item": "Choice Scarf",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Earthquake"], ["Knock Off"], ["Stone Edge"], ["Superpower"]]
+ },
+ {
+ "species": "Krookodile",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Taunt"], ["Earthquake"], ["Knock Off"]]
+ }
+ ]
+ },
+ "nidoqueen": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Nidoqueen",
+ "gender": "F",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 128, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 128},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Stealth Rock"], ["Sludge Wave"], ["Earth Power"], ["Ice Beam"]]
+ },
+ {
+ "species": "Nidoqueen",
+ "gender": "F",
+ "item": "Black Sludge",
+ "ability": "Sheer Force",
+ "evs": {"hp": 248, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 20},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Roar"], ["Earth Power"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "shaymin": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Shaymin",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Leech Seed"], ["Seed Flare"], ["Air Slash"]]
+ },
+ {
+ "species": "Shaymin",
+ "item": "Life Orb",
+ "ability": "Natural Cure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Rest"], ["Seed Flare"], ["Earth Power"], ["Air Slash"]]
+ }
+ ]
+ },
+ "swampert": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Swampert",
+ "item": "Leftovers",
+ "ability": "Torrent",
+ "evs": {"hp": 240, "atk": 16, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Stealth Rock"], ["Roar"], ["Earthquake"], ["Scald"]]
+ },
+ {
+ "species": "Swampert",
+ "item": "Choice Band",
+ "ability": "Torrent",
+ "evs": {"hp": 204, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 52},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Earthquake"], ["Ice Beam"], ["Superpower"]]
+ },
+ {
+ "species": "Swampert",
+ "item": "Chesto Berry",
+ "ability": "Torrent",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Rest"], ["Curse"], ["Earthquake"], ["Ice Beam"]]
+ },
+ {
+ "species": "Swampert",
+ "item": "Swampertite",
+ "ability": "Torrent",
+ "evs": {"hp": 104, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 152},
+ "nature": "Adamant",
+ "moves": [["Rain Dance"], ["Waterfall"], ["Earthquake"], ["Ice Punch"]]
+ }
+ ]
+ },
+ "ampharos": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Ampharos",
+ "item": "Ampharosite",
+ "ability": "Static",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Agility"], ["Dragon Pulse"], ["Thunderbolt"], ["Focus Blast"]]
+ },
+ {
+ "species": "Ampharos",
+ "gender": "M",
+ "item": "Ampharosite",
+ "ability": "Static",
+ "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 124},
+ "nature": "Modest",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Dragon Pulse"], ["Focus Blast"]]
+ },
+ {
+ "species": "Ampharos",
+ "item": "Ampharosite",
+ "ability": "Static",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 8, "spd": 0, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Rest"], ["Sleep Talk"], ["Volt Switch"], ["Dragon Pulse"]]
+ },
+ {
+ "species": "Ampharos",
+ "item": "Ampharosite",
+ "ability": "Static",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Rest"], ["Sleep Talk"], ["Volt Switch"], ["Dragon Pulse"]]
+ }
+ ]
+ },
+ "arcanine": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arcanine",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Morning Sun"], ["Will-O-Wisp"], ["Extreme Speed"], ["Flare Blitz"]]
+ },
+ {
+ "species": "Arcanine",
+ "item": "Life Orb",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Extreme Speed"], ["Flare Blitz"], ["Close Combat"], ["Wild Charge"]]
+ },
+ {
+ "species": "Arcanine",
+ "item": "Choice Band",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Extreme Speed"], ["Flare Blitz"], ["Close Combat"], ["Wild Charge"]]
+ }
+ ]
+ },
+ "blissey": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Blissey",
+ "gender": "F",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Soft-Boiled"], ["Wish"], ["Toxic"], ["Seismic Toss"]]
+ },
+ {
+ "species": "Blissey",
+ "gender": "F",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Soft-Boiled"], ["Heal Bell"], ["Toxic"], ["Seismic Toss"]]
+ },
+ {
+ "species": "Blissey",
+ "gender": "F",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Seismic Toss"]]
+ }
+ ]
+ },
+ "chandelure": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Chandelure",
+ "item": "Choice Scarf",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Trick"], ["Fire Blast"], ["Shadow Ball"], ["Energy Ball"]]
+ },
+ {
+ "species": "Chandelure",
+ "item": "Choice Specs",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Trick"], ["Overheat"], ["Shadow Ball"], ["Energy Ball"]]
+ },
+ {
+ "species": "Chandelure",
+ "item": "Leftovers",
+ "ability": "Flash Fire",
+ "evs": {"hp": 112, "atk": 0, "def": 0, "spa": 140, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Substitute"], ["Flamethrower"], ["Shadow Ball"]]
+ }
+ ]
+ },
+ "chesnaught": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Chesnaught",
+ "item": "Leftovers",
+ "ability": "Bulletproof",
+ "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Spiky Shield"], ["Spikes"], ["Leech Seed"], ["Drain Punch"]]
+ },
+ {
+ "species": "Chesnaught",
+ "item": "Leftovers",
+ "ability": "Bulletproof",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Spiky Shield"], ["Spikes"], ["Leech Seed"], ["Drain Punch"]]
+ }
+ ]
+ },
+ "cloyster": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Cloyster",
+ "item": "Focus Sash",
+ "ability": "Skill Link",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Shell Smash"], ["Icicle Spear"], ["Rock Blast"], ["Ice Shard"]]
+ },
+ {
+ "species": "Cloyster",
+ "item": "Focus Sash",
+ "ability": "Skill Link",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Rapid Spin"], ["Spikes"], ["Icicle Spear"], ["Explosion"]]
+ }
+ ]
+ },
+ "darmanitan": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Darmanitan",
+ "item": "Choice Band",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Rock Slide"], ["Superpower"], ["U-turn"]]
+ },
+ {
+ "species": "Darmanitan",
+ "item": "Choice Scarf",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Rock Slide"], ["Superpower"], ["U-turn"]]
+ },
+ {
+ "species": "Darmanitan",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Rock Slide"], ["Superpower"], ["U-turn"]]
+ }
+ ]
+ },
+ "donphan": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Donphan",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Rapid Spin"], ["Ice Shard"], ["Earthquake"]]
+ },
+ {
+ "species": "Donphan",
+ "item": "Assault Vest",
+ "ability": "Sturdy",
+ "evs": {"hp": 176, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 80},
+ "nature": "Adamant",
+ "moves": [["Rapid Spin"], ["Ice Shard"], ["Earthquake"], ["Knock Off"]]
+ }
+ ]
+ },
+ "espeon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Espeon",
+ "item": "Light Clay",
+ "ability": "Magic Bounce",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 8, "spd": 0, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Morning Sun"], ["Reflect"], ["Light Screen"], ["Psyshock"]]
+ },
+ {
+ "species": "Espeon",
+ "item": "Choice Specs",
+ "ability": "Magic Bounce",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Trick"], ["Psyshock"], ["Shadow Ball"], ["Hidden Power Fighting"]]
+ }
+ ]
+ },
+ "florges": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Florges",
+ "gender": "F",
+ "item": "Leftovers",
+ "ability": "Flower Veil",
+ "evs": {"hp": 248, "atk": 0, "def": 236, "spa": 0, "spd": 24, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Protect"], ["Wish"], ["Aromatherapy"], ["Moonblast"]]
+ },
+ {
+ "species": "Florges",
+ "gender": "F",
+ "item": "Leftovers",
+ "ability": "Flower Veil",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Synthesis"], ["Aromatherapy"], ["Calm Mind"], ["Moonblast"]]
+ }
+ ]
+ },
+ "flygon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Flygon",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Defog"], ["Outrage"], ["Earthquake"], ["U-turn"]]
+ },
+ {
+ "species": "Flygon",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Roost"], ["Defog"], ["Earthquake"], ["U-turn"]]
+ }
+ ]
+ },
+ "forretress": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Forretress",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Spikes"], ["Rapid Spin"], ["Gyro Ball"], ["Volt Switch"]]
+ }
+ ]
+ },
+ "galvantula": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Galvantula",
+ "item": "Focus Sash",
+ "ability": "Compound Eyes",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Sticky Web"], ["Thunder"], ["Bug Buzz"], ["Energy Ball"]]
+ },
+ {
+ "species": "Galvantula",
+ "gender": "M",
+ "item": "Life Orb",
+ "ability": "Compound Eyes",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunder"], ["Bug Buzz"], ["Energy Ball"]]
+ },
+ {
+ "species": "Galvantula",
+ "gender": "M",
+ "item": "Choice Specs",
+ "ability": "Compound Eyes",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunder"], ["Bug Buzz"], ["Energy Ball"]]
+ }
+ ]
+ },
+ "goodra": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Goodra",
+ "item": "Assault Vest",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Fire Blast"], ["Sludge Bomb"], ["Dragon Tail"]]
+ },
+ {
+ "species": "Goodra",
+ "item": "Life Orb",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Fire Blast"], ["Sludge Bomb"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "haxorus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Haxorus",
+ "item": "Choice Band",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Sleep Talk"], ["Outrage"], ["Earthquake"], ["Poison Jab"]]
+ },
+ {
+ "species": "Haxorus",
+ "item": "Life Orb",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Taunt"], ["Outrage"], ["Earthquake"]]
+ },
+ {
+ "species": "Haxorus",
+ "gender": "M",
+ "item": "Lum Berry",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Outrage"], ["Earthquake"], ["Poison Jab"]]
+ },
+ {
+ "species": "Haxorus",
+ "item": "Life Orb",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Taunt"], ["Outrage"], ["Earthquake"]]
+ }
+ ]
+ },
+ "heliolisk": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Heliolisk",
+ "item": "Choice Specs",
+ "ability": "Dry Skin",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Grass Knot"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Heliolisk",
+ "item": "Life Orb",
+ "ability": "Dry Skin",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Grass Knot"], ["Hidden Power Ice"]]
+ }
+ ]
+ },
+ "honchkrow": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Honchkrow",
+ "item": "Life Orb",
+ "ability": "Moxie",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Roost"], ["Sucker Punch"], ["Brave Bird"], ["Superpower"]]
+ },
+ {
+ "species": "Honchkrow",
+ "item": "Choice Scarf",
+ "ability": "Moxie",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Brave Bird"], ["Night Slash"], ["Superpower"], ["Heat Wave"]]
+ }
+ ]
+ },
+ "infernape": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Infernape",
+ "item": "Focus Sash",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Fake Out"], ["Stealth Rock"], ["Close Combat"], ["Overheat"]]
+ },
+ {
+ "species": "Infernape",
+ "item": "Choice Scarf",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Close Combat"], ["Stone Edge"], ["U-turn"]]
+ },
+ {
+ "species": "Infernape",
+ "item": "Choice Band",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Close Combat"], ["Stone Edge"], ["U-turn"]]
+ },
+ {
+ "species": "Infernape",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Vacuum Wave"], ["Fire Blast"], ["Grass Knot"]]
+ }
+ ]
+ },
+ "kingdra": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kingdra",
+ "item": "Lum Berry",
+ "ability": "Sniper",
+ "evs": {"hp": 24, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 232},
+ "nature": "Adamant",
+ "moves": [["Dragon Dance"], ["Outrage"], ["Waterfall"], ["Iron Head"]]
+ },
+ {
+ "species": "Kingdra",
+ "item": "Leftovers",
+ "ability": "Sniper",
+ "evs": {"hp": 24, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 232},
+ "nature": "Adamant",
+ "moves": [["Iron Head"], ["Dragon Dance"], ["Outrage"], ["Waterfall"]]
+ },
+ {
+ "species": "Kingdra",
+ "item": "Scope Lens",
+ "ability": "Sniper",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Rash",
+ "moves": [["Agility"], ["Focus Energy"], ["Draco Meteor"], ["Waterfall"]]
+ },
+ {
+ "species": "Kingdra",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 60, "def": 0, "spa": 252, "spd": 0, "spe": 196},
+ "nature": "Mild",
+ "moves": [["Rain Dance"], ["Hydro Pump"], ["Draco Meteor"], ["Waterfall"]]
+ }
+ ]
+ },
+ "lucario": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Lucario",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Bullet Punch"], ["Close Combat"], ["Crunch"]]
+ },
+ {
+ "species": "Lucario",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Extreme Speed"], ["Close Combat"], ["Ice Punch"]]
+ },
+ {
+ "species": "Lucario",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Bullet Punch"], ["Close Combat"], ["Ice Punch"]]
+ },
+ {
+ "species": "Lucario",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Extreme Speed"], ["Close Combat"], ["Crunch"]]
+ },
+ {
+ "species": "Lucario",
+ "item": "Life Orb",
+ "ability": "Steadfast",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Vacuum Wave"], ["Aura Sphere"], ["Flash Cannon"]]
+ }
+ ]
+ },
+ "milotic": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Milotic",
+ "item": "Life Orb",
+ "ability": "Competitive",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Recover"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Milotic",
+ "item": "Leftovers",
+ "ability": "Marvel Scale",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Recover"], ["Haze"], ["Scald"], ["Ice Beam"]]
+ },
+ {
+ "species": "Milotic",
+ "item": "Leftovers",
+ "ability": "Marvel Scale",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Recover"], ["Haze"], ["Scald"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "noivern": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Noivern",
+ "item": "Choice Specs",
+ "ability": "Infiltrator",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Switcheroo"], ["Draco Meteor"], ["Hurricane"], ["Flamethrower"]]
+ },
+ {
+ "species": "Noivern",
+ "item": "Life Orb",
+ "ability": "Infiltrator",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Roost"], ["Draco Meteor"], ["Hurricane"], ["Flamethrower"]]
+ },
+ {
+ "species": "Noivern",
+ "item": "Leftovers",
+ "ability": "Infiltrator",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Roost"], ["Taunt"], ["Draco Meteor"], ["Air Slash"]]
+ }
+ ]
+ },
+ "porygonz": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Porygon-Z",
+ "item": "Life Orb",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Tri Attack"], ["Dark Pulse"], ["Hidden Power Fighting"]]
+ },
+ {
+ "species": "Porygon-Z",
+ "item": "Choice Specs",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Trick"], ["Tri Attack"], ["Thunderbolt"], ["Ice Beam"]]
+ },
+ {
+ "species": "Porygon-Z",
+ "item": "Choice Scarf",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Trick"], ["Tri Attack"], ["Thunderbolt"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "porygon2": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Porygon2",
+ "item": "Eviolite",
+ "ability": "Trace",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Recover"], ["Thunder Wave"], ["Thunderbolt"], ["Ice Beam"]]
+ },
+ {
+ "species": "Porygon2",
+ "item": "Eviolite",
+ "ability": "Trace",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Recover"], ["Thunder Wave"], ["Thunderbolt"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "rotomheat": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rotom-Heat",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Trick"], ["Overheat"], ["Volt Switch"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Rotom-Heat",
+ "item": "Choice Specs",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Trick"], ["Overheat"], ["Volt Switch"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Rotom-Heat",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 216, "spa": 0, "spd": 0, "spe": 44},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Pain Split"], ["Will-O-Wisp"], ["Overheat"], ["Volt Switch"]]
+ }
+ ]
+ },
+ "scrafty": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Scrafty",
+ "item": "Leftovers",
+ "ability": "Shed Skin",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Rest"], ["Bulk Up"], ["Drain Punch"], ["Knock Off"]]
+ },
+ {
+ "species": "Scrafty",
+ "item": "Life Orb",
+ "ability": "Moxie",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Drain Punch"], ["Knock Off"], ["Zen Headbutt"]]
+ }
+ ]
+ },
+ "snorlax": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Snorlax",
+ "item": "Choice Band",
+ "ability": "Thick Fat",
+ "evs": {"hp": 0, "atk": 252, "def": 56, "spa": 0, "spd": 200, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Pursuit"], ["Body Slam"], ["Earthquake"], ["Fire Punch"]]
+ },
+ {
+ "species": "Snorlax",
+ "item": "Assault Vest",
+ "ability": "Thick Fat",
+ "evs": {"hp": 0, "atk": 252, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Pursuit"], ["Body Slam"], ["Earthquake"], ["Fire Blast"]]
+ },
+ {
+ "species": "Snorlax",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 144, "atk": 0, "def": 188, "spa": 0, "spd": 176, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Rest"], ["Sleep Talk"], ["Curse"], ["Body Slam"]]
+ }
+ ]
+ },
+ "tentacruel": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tentacruel",
+ "item": "Black Sludge",
+ "ability": "Liquid Ooze",
+ "evs": {"hp": 240, "atk": 0, "def": 244, "spa": 0, "spd": 0, "spe": 24},
+ "nature": "Bold",
+ "moves": [["Toxic Spikes"], ["Rapid Spin"], ["Scald"], ["Knock Off"]]
+ }
+ ]
+ },
+ "toxicroak": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Toxicroak",
+ "item": "Life Orb",
+ "ability": "Dry Skin",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Sucker Punch"], ["Gunk Shot"], ["Drain Punch"]]
+ },
+ {
+ "species": "Toxicroak",
+ "item": "Black Sludge",
+ "ability": "Dry Skin",
+ "evs": {"hp": 248, "atk": 132, "def": 116, "spa": 0, "spd": 0, "spe": 12},
+ "nature": "Adamant",
+ "moves": [["Substitute"], ["Bulk Up"], ["Sucker Punch"], ["Drain Punch"]]
+ }
+ ]
+ },
+ "umbreon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Umbreon",
+ "gender": "M",
+ "item": "Leftovers",
+ "ability": "Synchronize",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Foul Play"]]
+ },
+ {
+ "species": "Umbreon",
+ "gender": "M",
+ "item": "Leftovers",
+ "ability": "Synchronize",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Foul Play"]]
+ }
+ ]
+ },
+ "vaporeon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Vaporeon",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 200, "atk": 0, "def": 252, "spa": 0, "spd": 56, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Protect"], ["Wish"], ["Heal Bell"], ["Scald"]]
+ }
+ ]
+ },
+ "froslass": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Froslass",
+ "gender": "F",
+ "item": "Focus Sash",
+ "ability": "Cursed Body",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Destiny Bond"], ["Spikes"], ["Taunt"], ["Icy Wind"]]
+ }
+ ]
+ },
+ "houndoom": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Houndoom",
+ "item": "Houndoominite",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Taunt"], ["Fire Blast"], ["Dark Pulse"]]
+ },
+ {
+ "species": "Houndoom",
+ "item": "Houndoominite",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Sunny Day"], ["Fire Blast"], ["Dark Pulse"], ["Solar Beam"]]
+ }
+ ]
+ },
+ "kyurem": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kyurem",
+ "item": "Choice Scarf",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Draco Meteor"], ["Ice Beam"], ["Earth Power"], ["Outrage"]]
+ },
+ {
+ "species": "Kyurem",
+ "item": "Choice Specs",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Ice Beam"], ["Earth Power"], ["Flash Cannon"]]
+ },
+ {
+ "species": "Kyurem",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Roost"], ["Draco Meteor"], ["Ice Beam"], ["Earth Power"]]
+ },
+ {
+ "species": "Kyurem",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 56, "atk": 0, "def": 0, "spa": 236, "spd": 0, "spe": 216},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Roost"], ["Substitute"], ["Ice Beam"], ["Earth Power"]]
+ }
+ ]
+ },
+ "shuckle": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Shuckle",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Stealth Rock"], ["Sticky Web"], ["Encore"], ["Knock Off"]]
+ }
+ ]
+ },
+ "tornadus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tornadus",
+ "gender": "M",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Acrobatics"], ["Knock Off"], ["Superpower"], ["U-turn"]]
+ },
+ {
+ "species": "Tornadus",
+ "gender": "M",
+ "item": "Life Orb",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Tailwind"], ["Hurricane"], ["Heat Wave"], ["Grass Knot"]]
+ }
+ ]
+ },
+ "yanmega": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Yanmega",
+ "item": "Choice Specs",
+ "ability": "Tinted Lens",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Sleep Talk"], ["Bug Buzz"], ["Air Slash"], ["Giga Drain"]]
+ },
+ {
+ "species": "Yanmega",
+ "item": "Life Orb",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Protect"], ["Bug Buzz"], ["Air Slash"], ["Giga Drain"]]
+ }
+ ]
+ },
+ "zoroark": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Zoroark",
+ "item": "Choice Specs",
+ "ability": "Illusion",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Trick"], ["Night Daze"], ["Focus Blast"], ["Flamethrower"]]
+ },
+ {
+ "species": "Zoroark",
+ "item": "Life Orb",
+ "ability": "Illusion",
+ "evs": {"hp": 0, "atk": 196, "def": 0, "spa": 96, "spd": 0, "spe": 216},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Naive",
+ "moves": [["Sucker Punch"], ["Knock Off"], ["Flamethrower"], ["Grass Knot"]]
+ },
+ {
+ "species": "Zoroark",
+ "item": "Life Orb",
+ "ability": "Illusion",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Night Daze"], ["Focus Blast"], ["Flamethrower"]]
+ }
+ ]
+ },
+ "cresselia": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Cresselia",
+ "gender": "F",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Moonlight"], ["Thunder Wave"], ["Psyshock"], ["Moonblast"]]
+ },
+ {
+ "species": "Cresselia",
+ "gender": "F",
+ "item": "Light Clay",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Lunar Dance"], ["Reflect"], ["Light Screen"], ["Moonblast"]]
+ },
+ {
+ "species": "Cresselia",
+ "gender": "F",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 116, "spa": 0, "spd": 0, "spe": 144},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Moonlight"], ["Substitute"], ["Calm Mind"], ["Psyshock"]]
+ },
+ {
+ "species": "Cresselia",
+ "item": "Light Clay",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Reflect"], ["Light Screen"], ["Lunar Dance"], ["Psyshock"]]
+ },
+ {
+ "species": "Cresselia",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 136, "spa": 0, "spd": 0, "spe": 120},
+ "nature": "Bold",
+ "moves": [["Substitute"], ["Calm Mind"], ["Moonblast"], ["Moonlight"]]
+ },
+ {
+ "species": "Cresselia",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 116, "spa": 0, "spd": 0, "spe": 144},
+ "nature": "Bold",
+ "moves": [["Substitute"], ["Calm Mind"], ["Psyshock"], ["Moonblast"]]
+ }
+ ]
+ },
+ "gligar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gligar",
+ "item": "Eviolite",
+ "ability": "Hyper Cutter",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Roost"], ["Defog"], ["Toxic"], ["Earthquake"]]
+ },
+ {
+ "species": "Gligar",
+ "item": "Eviolite",
+ "ability": "Hyper Cutter",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Roost"], ["Defog"], ["Stealth Rock"], ["Earthquake"]]
+ },
+ {
+ "species": "Gligar",
+ "item": "Eviolite",
+ "ability": "Hyper Cutter",
+ "evs": {"hp": 248, "atk": 0, "def": 20, "spa": 0, "spd": 240, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Roost"], ["Defog"], ["Toxic"], ["Earthquake"]]
+ }
+ ]
+ },
+ "aromatisse": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Aromatisse",
+ "item": "Leftovers",
+ "ability": "Aroma Veil",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Protect"], ["Wish"], ["Aromatherapy"], ["Moonblast"]]
+ },
+ {
+ "species": "Aromatisse",
+ "item": "Leftovers",
+ "ability": "Aroma Veil",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Protect"], ["Wish"], ["Aromatherapy"], ["Moonblast"]]
+ }
+ ]
+ },
+ "roserade": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Roserade",
+ "item": "Life Orb",
+ "ability": "Natural Cure",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Spikes"], ["Giga Drain"], ["Sludge Bomb"], ["Synthesis"]]
+ },
+ {
+ "species": "Roserade",
+ "item": "Black Sludge",
+ "ability": "Natural Cure",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 244, "spe": 16},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Rest"], ["Spikes"], ["Giga Drain"], ["Sludge Bomb"]]
+ }
+ ]
+ },
+ "cobalion": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Cobalion",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Calm Mind"], ["Focus Blast"], ["Flash Cannon"], ["Hidden Power Ghost"]]
+ },
+ {
+ "species": "Cobalion",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Close Combat"], ["Iron Head"], ["Stone Edge"]]
+ },
+ {
+ "species": "Cobalion",
+ "item": "Leftovers",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Taunt"], ["Close Combat"], ["Iron Head"]]
+ }
+ ]
+ },
+ "dragalge": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Dragalge",
+ "item": "Choice Specs",
+ "ability": "Adaptability",
+ "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 56},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Sludge Wave"], ["Hidden Power Fire"], ["Focus Blast"]]
+ },
+ {
+ "species": "Dragalge",
+ "item": "Choice Specs",
+ "ability": "Adaptability",
+ "evs": {"hp": 200, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 56},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Sludge Wave"], ["Scald"], ["Focus Blast"]]
+ },
+ {
+ "species": "Dragalge",
+ "item": "Black Sludge",
+ "ability": "Adaptability",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Toxic Spikes"], ["Dragon Tail"], ["Sludge Bomb"], ["Scald"]]
+ },
+ {
+ "species": "Dragalge",
+ "item": "Dragon Fang",
+ "ability": "Adaptability",
+ "evs": {"hp": 188, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 68},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Sludge Bomb"], ["Focus Blast"], ["Dragon Pulse"]]
+ },
+ {
+ "species": "Dragalge",
+ "item": "Choice Specs",
+ "ability": "Adaptability",
+ "evs": {"hp": 188, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 68},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Dragon Pulse"], ["Sludge Wave"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "reuniclus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Reuniclus",
+ "item": "Leftovers",
+ "ability": "Magic Guard",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Recover"], ["Calm Mind"], ["Psyshock"], ["Focus Blast"]]
+ },
+ {
+ "species": "Reuniclus",
+ "item": "Life Orb",
+ "ability": "Magic Guard",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Recover"], ["Calm Mind"], ["Psyshock"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "whimsicott": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Whimsicott",
+ "item": "Life Orb",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Encore"], ["Giga Drain"], ["Moonblast"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Whimsicott",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Encore"], ["Taunt"], ["Leech Seed"], ["Moonblast"]]
+ },
+ {
+ "species": "Whimsicott",
+ "item": "Life Orb",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Moonblast"], ["Giga Drain"], ["Hidden Power Fire"], ["Encore"]]
+ },
+ {
+ "species": "Whimsicott",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "evs": {"hp": 248, "atk": 0, "def": 236, "spa": 0, "spd": 0, "spe": 24},
+ "nature": "Bold",
+ "moves": [["Encore"], ["U-turn"], ["Stun Spore"], ["Moonblast"]]
+ }
+ ]
+ },
+ "sharpedo": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sharpedo",
+ "item": "Sharpedonite",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Protect"], ["Waterfall"], ["Crunch"], ["Ice Fang"]]
+ },
+ {
+ "species": "Sharpedo",
+ "item": "Sharpedonite",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Naughty",
+ "moves": [["Protect"], ["Crunch"], ["Ice Fang"], ["Hydro Pump"]]
+ },
+ {
+ "species": "Sharpedo",
+ "item": "Sharpedonite",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Protect"], ["Destiny Bond"], ["Waterfall"], ["Crunch"]]
+ },
+ {
+ "species": "Sharpedo",
+ "item": "Life Orb",
+ "ability": "Speed Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Protect"], ["Destiny Bond"], ["Waterfall"], ["Crunch"]]
+ }
+ ]
+ },
+ "sceptile": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Sceptile",
+ "item": "Sceptilite",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Giga Drain"], ["Dragon Pulse"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Sceptile",
+ "item": "Sceptilite",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Leaf Storm"], ["Giga Drain"], ["Dragon Pulse"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Sceptile",
+ "item": "Sceptilite",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Dragon Pulse"], ["Giga Drain"], ["Focus Blast"], ["Substitute"]]
+ },
+ {
+ "species": "Sceptile",
+ "item": "Sceptilite",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Giga Drain"], ["Dragon Pulse"], ["Focus Blast"], ["Leaf Storm"]]
+ },
+ {
+ "species": "Sceptile",
+ "item": "Sceptilite",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Leaf Blade"], ["Outrage"], ["Earthquake"]]
+ },
+ {
+ "species": "Sceptile",
+ "item": "Sceptilite",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Dragon Pulse"], ["Giga Drain"], ["Focus Blast"], ["Hidden Power Fire"]]
+ }
+ ]
+ },
+ "rhyperior": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rhyperior",
+ "item": "Choice Band",
+ "ability": "Solid Rock",
+ "evs": {"hp": 168, "atk": 248, "def": 0, "spa": 0, "spd": 0, "spe": 92},
+ "nature": "Adamant",
+ "moves": [["Stone Edge"], ["Earthquake"], ["Megahorn"], ["Aqua Tail"]]
+ },
+ {
+ "species": "Rhyperior",
+ "item": "Leftovers",
+ "ability": "Solid Rock",
+ "evs": {"hp": 248, "atk": 16, "def": 244, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Megahorn"]]
+ },
+ {
+ "species": "Rhyperior",
+ "item": "Leftovers",
+ "ability": "Solid Rock",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Megahorn"]]
+ }
+ ]
+ },
+ "bronzong": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Bronzong",
+ "item": "Light Clay",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Reflect"], ["Light Screen"], ["Explosion"]]
+ },
+ {
+ "species": "Bronzong",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Stealth Rock"], ["Toxic"], ["Gyro Ball"], ["Earthquake"]]
+ },
+ {
+ "species": "Bronzong",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0},
+ "nature": "Sassy",
+ "moves": [["Stealth Rock"], ["Toxic"], ["Gyro Ball"], ["Earthquake"]]
+ }
+ ]
+ },
+ "feraligatr": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Feraligatr",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 32, "atk": 248, "def": 0, "spa": 0, "spd": 0, "spe": 228},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Waterfall"], ["Ice Punch"], ["Crunch"]]
+ },
+ {
+ "species": "Feraligatr",
+ "item": "Life Orb",
+ "ability": "Torrent",
+ "evs": {"hp": 52, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 204},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Aqua Jet"], ["Waterfall"], ["Crunch"]]
+ },
+ {
+ "species": "Feraligatr",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Superpower"], ["Aqua Jet"], ["Swords Dance"]]
+ },
+ {
+ "species": "Feraligatr",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Ice Punch"], ["Superpower"], ["Dragon Dance"]]
+ },
+ {
+ "species": "Feraligatr",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Ice Punch"], ["Crunch"], ["Dragon Dance"]]
+ }
+ ]
+ },
+ "slurpuff": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Slurpuff",
+ "item": "Sitrus Berry",
+ "ability": "Unburden",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Belly Drum"], ["Play Rough"], ["Drain Punch"], ["Return"]],
+ "happiness": 255
+ },
+ {
+ "species": "Slurpuff",
+ "item": "Chesto Berry",
+ "ability": "Unburden",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Rest"], ["Calm Mind"], ["Draining Kiss"], ["Flamethrower"]]
+ },
+ {
+ "species": "Slurpuff",
+ "item": "Sitrus Berry",
+ "ability": "Unburden",
+ "evs": {"hp": 52, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 204},
+ "nature": "Adamant",
+ "moves": [["Belly Drum"], ["Play Rough"], ["Return"], ["Aromatherapy"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "pangoro": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Pangoro",
+ "item": "Choice Band",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Knock Off"], ["Superpower"], ["Gunk Shot"], ["Ice Punch"]]
+ },
+ {
+ "species": "Pangoro",
+ "item": "Life Orb",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Drain Punch"], ["Knock Off"], ["Gunk Shot"]]
+ },
+ {
+ "species": "Pangoro",
+ "item": "Lum Berry",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Drain Punch"], ["Knock Off"], ["Gunk Shot"]]
+ }
+ ]
+ },
+ "abomasnow": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Abomasnow",
+ "item": "Abomasite",
+ "ability": "Soundproof",
+ "evs": {"hp": 0, "atk": 128, "def": 0, "spa": 252, "spd": 0, "spe": 128},
+ "nature": "Mild",
+ "moves": [["Blizzard"], ["Giga Drain"], ["Ice Shard"], ["Focus Blast"]]
+ },
+ {
+ "species": "Abomasnow",
+ "item": "Abomasite",
+ "ability": "Soundproof",
+ "evs": {"hp": 128, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 128},
+ "nature": "Adamant",
+ "moves": [["Ice Shard"], ["Wood Hammer"], ["Earthquake"], ["Swords Dance"]]
+ }
+ ]
+ }
+ },
+ "RU": {
+ "venusaur": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Venusaur",
+ "item": "Life Orb",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Leaf Storm"], ["Sludge Bomb"], ["Synthesis"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Venusaur",
+ "item": "Black Sludge",
+ "ability": "Overgrow",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 92, "spd": 0, "spe": 164},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Hidden Power Fire"]]
+ }
+ ]
+ },
+ "diancie": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Diancie",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Sassy",
+ "moves": [["Stealth Rock"], ["Heal Bell"], ["Moonblast"], ["Diamond Storm"]]
+ },
+ {
+ "species": "Diancie",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Rest"], ["Sleep Talk"], ["Moonblast"]]
+ },
+ {
+ "species": "Diancie",
+ "item": "Life Orb",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 0},
+ "ivs": {"hp": 31, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 0},
+ "nature": "Quiet",
+ "moves": [["Trick Room"], ["Moonblast"], ["Earth Power"], ["Psychic", "Diamond Storm", "Explosion"]]
+ }
+ ]
+ },
+ "manectric": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Manectric",
+ "item": "Life Orb",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Flamethrower", "Overheat"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Manectric",
+ "item": "Choice Scarf",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Hidden Power Ice"], ["Overheat", "Switcheroo"]]
+ }
+ ]
+ },
+ "hoopa": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hoopa",
+ "item": "Life Orb",
+ "ability": "Magician",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute", "Nasty Plot"], ["Shadow Ball"], ["Psyshock"], ["Focus Blast"]]
+ },
+ {
+ "species": "Hoopa",
+ "item": "Life Orb",
+ "ability": "Magician",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Mild",
+ "moves": [["Knock Off"], ["Shadow Ball"], ["Psyshock"], ["Focus Blast"]]
+ },
+ {
+ "species": "Hoopa",
+ "item": "Leftovers",
+ "ability": "Magician",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Nasty Plot"], ["Shadow Ball"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "banette": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Banette",
+ "item": "Banettite",
+ "ability": "Insomnia",
+ "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84},
+ "nature": "Adamant",
+ "moves": [["Destiny Bond", "Gunk Shot"], ["Knock Off"], ["Sucker Punch"], ["Will-O-Wisp", "Taunt", "Thunder Wave"]]
+ }
+ ]
+ },
+ "jellicent": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Jellicent",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 252, "atk": 0, "def": 212, "spa": 0, "spd": 0, "spe": 44},
+ "nature": "Bold",
+ "moves": [["Scald", "Hex"], ["Will-O-Wisp"], ["Recover"], ["Taunt"]]
+ }
+ ]
+ },
+ "sigilyph": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sigilyph",
+ "item": "Life Orb",
+ "ability": "Magic Guard",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Air Slash"], ["Heat Wave"], ["Roost"], ["Psychic"]]
+ },
+ {
+ "species": "Sigilyph",
+ "item": "Flame Orb",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Roost"], ["Psycho Shift"], ["Air Slash"]]
+ }
+ ]
+ },
+ "gastrodon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gastrodon",
+ "item": "Leftovers",
+ "ability": "Storm Drain",
+ "evs": {"hp": 252, "atk": 0, "def": 244, "spa": 0, "spd": 0, "spe": 12},
+ "nature": "Bold",
+ "moves": [["Scald"], ["Recover"], ["Toxic"], ["Earth Power"]]
+ }
+ ]
+ },
+ "delphox": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Delphox",
+ "item": "Choice Scarf",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Psyshock"], ["Dazzling Gleam"], ["Trick", "Overheat"]]
+ },
+ {
+ "species": "Delphox",
+ "item": "Choice Specs",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Psychic"], ["Grass Knot"], ["Flamethrower"]]
+ },
+ {
+ "species": "Delphox",
+ "item": "Choice Specs",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Psychic"], ["Grass Knot"], ["Hidden Power Water"]]
+ },
+ {
+ "species": "Delphox",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Fire Blast"], ["Psychic"], ["Grass Knot"]]
+ },
+ {
+ "species": "Delphox",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Fire Blast"], ["Psychic"], ["Hidden Power Water"]]
+ },
+ {
+ "species": "Delphox",
+ "item": "Leftovers",
+ "ability": "Blaze",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Calm Mind"], ["Flamethrower"], ["Psyshock"]]
+ }
+ ]
+ },
+ "clawitzer": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Clawitzer",
+ "item": "Life Orb",
+ "ability": "Mega Launcher",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Scald"], ["Dark Pulse"], ["Ice Beam"], ["Aura Sphere"]]
+ }
+ ]
+ },
+ "rotommow": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rotom-Mow",
+ "item": "Choice Specs",
+ "ability": "Levitate",
+ "evs": {"hp": 48, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 208},
+ "nature": "Timid",
+ "moves": [["Leaf Storm"], ["Volt Switch"], ["Thunderbolt"], ["Trick"]]
+ }
+ ]
+ },
+ "rotom": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rotom",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 124, "atk": 0, "def": 0, "spa": 132, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Will-O-Wisp"], ["Discharge"], ["Hex"]]
+ }
+ ]
+ },
+ "hitmontop": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hitmontop",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Rapid Spin"], ["Close Combat"], ["Foresight"], ["Toxic"]]
+ }
+ ]
+ },
+ "braviary": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Braviary",
+ "item": "Choice Scarf",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Return"], ["Superpower"], ["U-turn"]],
+ "happiness": 255
+ },
+ {
+ "species": "Braviary",
+ "item": "Life Orb",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Brave Bird"], ["Return"], ["Superpower"], ["Roost"]],
+ "happiness": 255
+ },
+ {
+ "species": "Braviary",
+ "item": "Leftovers",
+ "ability": "Defiant",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 212, "spe": 44},
+ "nature": "Careful",
+ "moves": [["Substitute"], ["Bulk Up"], ["Roost"], ["Brave Bird"]]
+ }
+ ]
+ },
+ "registeel": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Registeel",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Curse"], ["Iron Head"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Registeel",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Seismic Toss"], ["Protect"], ["Thunder Wave", "Toxic"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "omastar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Omastar",
+ "item": "Focus Sash",
+ "ability": "Weak Armor",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Stealth Rock"], ["Spikes"], ["Scald"], ["Ice Beam"]]
+ },
+ {
+ "species": "Omastar",
+ "item": "Choice Specs",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Scald"], ["Hidden Power Grass"]]
+ }
+ ]
+ },
+ "magneton": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Magneton",
+ "item": "Eviolite",
+ "ability": "Magnet Pull",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Magnet Rise"], ["Thunderbolt"], ["Flash Cannon"], ["Hidden Power Water"]]
+ },
+ {
+ "species": "Magneton",
+ "item": "Choice Specs",
+ "ability": "Analytic",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Flash Cannon"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Magneton",
+ "item": "Eviolite",
+ "ability": "Analytic",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Flash Cannon"], ["Hidden Power Grass"]]
+ }
+ ]
+ },
+ "jolteon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Jolteon",
+ "item": "Choice Specs",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Choice Specs",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Water"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Choice Specs",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Grass"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Life Orb",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Life Orb",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Water"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Life Orb",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Grass"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Expert Belt",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Ice"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Expert Belt",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Water"], ["Volt Switch"]]
+ },
+ {
+ "species": "Jolteon",
+ "item": "Expert Belt",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Shadow Ball"], ["Hidden Power Grass"], ["Volt Switch"]]
+ }
+ ]
+ },
+ "golbat": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Golbat",
+ "item": "Eviolite",
+ "ability": "Infiltrator",
+ "evs": {"hp": 248, "atk": 0, "def": 180, "spa": 0, "spd": 0, "spe": 80},
+ "nature": "Impish",
+ "moves": [["Taunt"], ["Roost"], ["Brave Bird"], ["Super Fang", "Toxic"]]
+ }
+ ]
+ },
+ "exploud": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Exploud",
+ "item": "Choice Specs",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Boomburst"], ["Fire Blast"], ["Sleep Talk"], ["Focus Blast"]]
+ },
+ {
+ "species": "Exploud",
+ "item": "Life Orb",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Boomburst"], ["Fire Blast"], ["Surf"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "eelektross": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Eelektross",
+ "item": "Assault Vest",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Volt Switch"], ["Giga Drain"], ["Flamethrower"], ["Knock Off"]]
+ }
+ ]
+ },
+ "druddigon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Druddigon",
+ "item": "Rocky Helmet",
+ "ability": "Rough Skin",
+ "evs": {"hp": 236, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 20},
+ "nature": "Impish",
+ "moves": [["Dragon Tail"], ["Stealth Rock"], ["Fire Punch"], ["Glare", "Gunk Shot"]]
+ },
+ {
+ "species": "Druddigon",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 236, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 20},
+ "nature": "Adamant",
+ "moves": [["Outrage", "Dragon Claw"], ["Sucker Punch"], ["Fire Punch"], ["Gunk Shot"]]
+ }
+ ]
+ },
+ "accelgor": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Accelgor",
+ "item": "Focus Sash",
+ "ability": "Sticky Hold",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Spikes"], ["Final Gambit"], ["Encore"], ["Bug Buzz"]]
+ },
+ {
+ "species": "Accelgor",
+ "item": "Life Orb",
+ "ability": "Sticky Hold",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Bug Buzz"], ["Focus Blast"], ["Spikes"], ["Sludge Bomb"]]
+ },
+ {
+ "species": "Accelgor",
+ "item": "Life Orb",
+ "ability": "Sticky Hold",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Bug Buzz"], ["Focus Blast"], ["Spikes"], ["Hidden Power Ice"]]
+ }
+ ]
+ },
+ "spiritomb": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Spiritomb",
+ "item": "Leftovers",
+ "ability": "Infiltrator",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Dark Pulse"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Spiritomb",
+ "item": "Leftovers",
+ "ability": "Infiltrator",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Will-O-Wisp"], ["Foul Play"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Spiritomb",
+ "item": "Black Glasses",
+ "ability": "Infiltrator",
+ "evs": {"hp": 212, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 44},
+ "nature": "Adamant",
+ "moves": [["Sucker Punch"], ["Pursuit"], ["Will-O-Wisp"], ["Foul Play", "Taunt"]]
+ }
+ ]
+ },
+ "drapion": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Drapion",
+ "item": "Black Sludge",
+ "ability": "Battle Armor",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 216, "spe": 44},
+ "nature": "Careful",
+ "moves": [["Knock Off"], ["Taunt"], ["Toxic Spikes"], ["Poison Jab"]]
+ },
+ {
+ "species": "Drapion",
+ "item": "Shuca Berry",
+ "ability": "Battle Armor",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Knock Off"], ["Pursuit"], ["Poison Jab"]]
+ },
+ {
+ "species": "Drapion",
+ "item": "Shuca Berry",
+ "ability": "Battle Armor",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Knock Off"], ["Aqua Tail"], ["Poison Jab"]]
+ }
+ ]
+ },
+ "camerupt": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Camerupt",
+ "item": "Cameruptite",
+ "ability": "Solid Rock",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Fire Blast", "Flamethrower"], ["Earth Power"], ["Hidden Power Ice"], ["Toxic"]]
+ }
+ ]
+ },
+ "bronzong": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Bronzong",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Brave",
+ "moves": [["Trick Room"], ["Stealth Rock"], ["Earthquake"], ["Explosion"]]
+ },
+ {
+ "species": "Bronzong",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Sassy",
+ "moves": [["Hidden Power Fire"], ["Gyro Ball"], ["Earthquake"], ["Toxic"]]
+ },
+ {
+ "species": "Bronzong",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Sassy",
+ "moves": [["Stealth Rock"], ["Gyro Ball"], ["Psywave"], ["Toxic"]]
+ }
+ ]
+ },
+ "rhyperior": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rhyperior",
+ "item": "Choice Band",
+ "ability": "Solid Rock",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Earthquake"], ["Stone Edge"], ["Ice Punch"], ["Megahorn"]]
+ },
+ {
+ "species": "Rhyperior",
+ "item": "Life Orb",
+ "ability": "Solid Rock",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Rock Polish"], ["Earthquake"], ["Stone Edge"], ["Ice Punch", "Swords Dance"]]
+ },
+ {
+ "species": "Rhyperior",
+ "item": "Leftovers",
+ "ability": "Solid Rock",
+ "evs": {"hp": 248, "atk": 16, "def": 0, "spa": 0, "spd": 244, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Ice Punch", "Megahorn"]]
+ }
+ ]
+ },
+ "hitmonlee": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hitmonlee",
+ "item": "Choice Scarf",
+ "ability": "Reckless",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["High Jump Kick"], ["Knock Off"], ["Rapid Spin"], ["Close Combat"]]
+ },
+ {
+ "species": "Hitmonlee",
+ "item": "Life Orb",
+ "ability": "Reckless",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["High Jump Kick"], ["Knock Off"], ["Mach Punch"], ["Rapid Spin"]]
+ },
+ {
+ "species": "Hitmonlee",
+ "item": "Liechi Berry",
+ "ability": "Unburden",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Endure"], ["Reversal"], ["Knock Off"], ["Mach Punch"]]
+ }
+ ]
+ },
+ "glalie": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Glalie",
+ "item": "Glalitite",
+ "ability": "Inner Focus",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Spikes"], ["Double-Edge"], ["Explosion"], ["Ice Shard"]]
+ },
+ {
+ "species": "Glalie",
+ "item": "Glalitite",
+ "ability": "Inner Focus",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Double-Edge"], ["Freeze-Dry"], ["Earthquake"], ["Explosion"]]
+ }
+ ]
+ },
+ "fletchinder": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Fletchinder",
+ "ability": "Gale Wings",
+ "evs": {"hp": 160, "atk": 252, "def": 72, "spa": 0, "spd": 24, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Acrobatics"], ["Swords Dance"], ["Will-O-Wisp"], ["Roost"]]
+ }
+ ]
+ },
+ "escavalier": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Escavalier",
+ "item": "Assault Vest",
+ "ability": "Overcoat",
+ "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84},
+ "nature": "Adamant",
+ "moves": [["Megahorn"], ["Iron Head"], ["Knock Off"], ["Drill Run", "Pursuit"]]
+ },
+ {
+ "species": "Escavalier",
+ "item": "Choice Band",
+ "ability": "Overcoat",
+ "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84},
+ "nature": "Adamant",
+ "moves": [["Megahorn"], ["Iron Head"], ["Knock Off"], ["Drill Run"]]
+ }
+ ]
+ },
+ "aromatisse": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Aromatisse",
+ "item": "Leftovers",
+ "ability": "Aroma Veil",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Wish"], ["Protect"], ["Moonblast"], ["Aromatherapy"]]
+ }
+ ]
+ },
+ "meloetta": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Meloetta",
+ "item": "Assault Vest",
+ "ability": "Serene Grace",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psyshock"], ["Hyper Voice"], ["Focus Blast"], ["Shadow Ball", "Grass Knot", "Dazzling Gleam"]]
+ },
+ {
+ "species": "Meloetta",
+ "item": "Choice Scarf",
+ "ability": "Serene Grace",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hyper Voice"], ["Psyshock"], ["Focus Blast"], ["Dazzling Gleam", "Shadow Ball", "Trick", "U-turn"]]
+ },
+ {
+ "species": "Meloetta",
+ "item": "Choice Specs",
+ "ability": "Serene Grace",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hyper Voice"], ["Psychic"], ["Focus Blast"], ["U-turn", "Dazzling Gleam", "Shadow Ball"]]
+ },
+ {
+ "species": "Meloetta",
+ "item": "Life Orb",
+ "ability": "Serene Grace",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Relic Song"], ["Return"], ["Close Combat"], ["Knock Off"]],
+ "happiness": 255
+ },
+ {
+ "species": "Meloetta",
+ "item": "Colbur Berry",
+ "ability": "Serene Grace",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Hyper Voice", "Psychic"], ["Shadow Ball"], ["Focus Blast"]]
+ },
+ {
+ "species": "Meloetta",
+ "item": "Leftovers",
+ "ability": "Serene Grace",
+ "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Perish Song"], ["Knock Off"], ["Heal Bell"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Meloetta",
+ "item": "Leftovers",
+ "ability": "Serene Grace",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Modest",
+ "moves": [["Substitute"], ["Calm Mind"], ["Hyper Voice"], ["Shadow Ball"]]
+ }
+ ]
+ },
+ "alomomola": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Alomomola",
+ "item": "Leftovers",
+ "ability": "Regenerator",
+ "evs": {"hp": 120, "atk": 0, "def": 136, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Scald"], ["Wish"], ["Protect"], ["Toxic"]]
+ }
+ ]
+ },
+ "emboar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Emboar",
+ "item": "Choice Band",
+ "ability": "Reckless",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Flare Blitz"], ["Superpower"], ["Wild Charge"], ["Sucker Punch"]]
+ },
+ {
+ "species": "Emboar",
+ "item": "Expert Belt",
+ "ability": "Reckless",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Flare Blitz"], ["Superpower"], ["Wild Charge"], ["Sucker Punch"]]
+ },
+ {
+ "species": "Emboar",
+ "item": "Choice Scarf",
+ "ability": "Reckless",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Superpower"], ["Wild Charge"], ["Toxic"]]
+ }
+ ]
+ },
+ "seismitoad": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Seismitoad",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 200, "atk": 0, "def": 252, "spa": 0, "spd": 56, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Stealth Rock"], ["Scald"], ["Earthquake"], ["Knock Off"]]
+ },
+ {
+ "species": "Seismitoad",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Rain Dance"], ["Hydro Pump"], ["Earth Power"], ["Sludge Bomb"]]
+ },
+ {
+ "species": "Seismitoad",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 164, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 92},
+ "nature": "Modest",
+ "moves": [["Stealth Rock"], ["Hydro Pump"], ["Earth Power"], ["Grass Knot"]]
+ }
+ ]
+ },
+ "qwilfish": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Qwilfish",
+ "item": "Black Sludge",
+ "ability": "Intimidate",
+ "evs": {"hp": 252, "atk": 0, "def": 232, "spa": 0, "spd": 0, "spe": 24},
+ "nature": "Bold",
+ "moves": [["Spikes"], ["Pain Split"], ["Scald"], ["Taunt"]]
+ },
+ {
+ "species": "Qwilfish",
+ "item": "Focus Sash",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Spikes"], ["Taunt"], ["Toxic Spikes"], ["Explosion"]]
+ }
+ ]
+ },
+ "granbull": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Granbull",
+ "item": "Leftovers",
+ "ability": "Intimidate",
+ "evs": {"hp": 252, "atk": 0, "def": 232, "spa": 0, "spd": 0, "spe": 24},
+ "nature": "Impish",
+ "moves": [["Play Rough"], ["Earthquake"], ["Heal Bell"], ["Roar"]]
+ },
+ {
+ "species": "Granbull",
+ "item": "Choice Band",
+ "ability": "Intimidate",
+ "evs": {"hp": 212, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 44},
+ "nature": "Adamant",
+ "moves": [["Play Rough"], ["Fire Punch"], ["Thunder Punch"], ["Close Combat"]]
+ }
+ ]
+ },
+ "medicham": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Medicham",
+ "item": "Life Orb",
+ "ability": "Pure Power",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["High Jump Kick"], ["Zen Headbutt"], ["Thunder Punch"], ["Drain Punch"]]
+ },
+ {
+ "species": "Medicham",
+ "item": "Choice Scarf",
+ "ability": "Pure Power",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["High Jump Kick"], ["Zen Headbutt"], ["Rock Slide", "Poison Jab"], ["Drain Punch", "Trick"]]
+ }
+ ]
+ },
+ "smeargle": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Smeargle",
+ "item": "Focus Sash",
+ "ability": "Own Tempo",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Spore", "Dark Void"], ["Sticky Web"], ["Stealth Rock"], ["Explosion"]]
+ }
+ ]
+ },
+ "absol": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Absol",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Knock Off"], ["Superpower"], ["Sucker Punch"], ["Iron Tail", "Pursuit"]]
+ },
+ {
+ "species": "Absol",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Knock Off"], ["Superpower"], ["Sucker Punch"], ["Swords Dance"]]
+ }
+ ]
+ },
+ "aerodactyl": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Aerodactyl",
+ "item": "Life Orb",
+ "ability": "Unnerve",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stone Edge"], ["Fire Fang", "Earthquake"], ["Aerial Ace"], ["Roost"]]
+ }
+ ]
+ },
+ "aggron": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Aggron",
+ "item": "Choice Band",
+ "ability": "Rock Head",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Head Smash"], ["Heavy Slam"], ["Sleep Talk", "Fire Punch"], ["Low Kick"]]
+ }
+ ]
+ },
+ "blastoise": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Blastoise",
+ "item": "Leftovers",
+ "ability": "Torrent",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Bold",
+ "moves": [["Scald"], ["Rapid Spin"], ["Toxic"], ["Foresight", "Refresh"]]
+ }
+ ]
+ },
+ "slowking": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Slowking",
+ "item": "Leftovers",
+ "ability": "Regenerator",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Bold",
+ "moves": [["Scald"], ["Psyshock"], ["Calm Mind", "Thunder Wave"], ["Slack Off"]]
+ },
+ {
+ "species": "Slowking",
+ "item": "Choice Specs",
+ "ability": "Regenerator",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8},
+ "nature": "Modest",
+ "moves": [["Scald"], ["Psyshock"], ["Fire Blast"], ["Trick"]]
+ },
+ {
+ "species": "Slowking",
+ "item": "Colbur Berry",
+ "ability": "Regenerator",
+ "evs": {"hp": 160, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 96},
+ "nature": "Bold",
+ "moves": [["Scald"], ["Psyshock"], ["Fire Blast"], ["Thunder Wave"]]
+ }
+ ]
+ },
+ "abomasnow": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Abomasnow",
+ "item": "Life Orb",
+ "ability": "Snow Warning",
+ "evs": {"hp": 0, "atk": 132, "def": 0, "spa": 252, "spd": 0, "spe": 124},
+ "nature": "Mild",
+ "moves": [["Blizzard"], ["Giga Drain"], ["Ice Shard"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "flygon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Flygon",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Earth Power"], ["Roost"], ["Fire Blast"]]
+ },
+ {
+ "species": "Flygon",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Draco Meteor"], ["Earth Power"], ["Roost"], ["Defog"]]
+ },
+ {
+ "species": "Flygon",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 116, "spa": 0, "spd": 116, "spe": 24},
+ "nature": "Careful",
+ "moves": [["Defog"], ["Roost"], ["Earthquake"], ["U-turn"]]
+ },
+ {
+ "species": "Flygon",
+ "item": "Choice Band",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Outrage"], ["Earthquake"], ["U-turn"], ["Iron Tail"]]
+ }
+ ]
+ },
+ "scrafty": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Scrafty",
+ "item": "Choice Band",
+ "ability": "Intimidate",
+ "evs": {"hp": 152, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 104},
+ "nature": "Adamant",
+ "moves": [["Knock Off"], ["High Jump Kick"], ["Drain Punch"], ["Poison Jab"]]
+ },
+ {
+ "species": "Scrafty",
+ "item": "Chople Berry",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Knock Off"], ["High Jump Kick"], ["Poison Jab", "Iron Head"], ["Dragon Dance"]]
+ },
+ {
+ "species": "Scrafty",
+ "item": "Coba Berry",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Knock Off"], ["High Jump Kick"], ["Head Smash"], ["Dragon Dance"]]
+ }
+ ]
+ },
+ "houndoom": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Houndoom",
+ "item": "Life Orb",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Fire Blast"], ["Dark Pulse"], ["Sucker Punch"], ["Nasty Plot"]]
+ },
+ {
+ "species": "Houndoom",
+ "item": "Life Orb",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 220, "def": 0, "spa": 36, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Fire Blast"], ["Crunch"], ["Sucker Punch"], ["Pursuit"]]
+ }
+ ]
+ },
+ "togetic": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Togetic",
+ "item": "Eviolite",
+ "ability": "Serene Grace",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Bold",
+ "moves": [["Dazzling Gleam"], ["Roost"], ["Flamethrower"], ["Thunder Wave"]]
+ }
+ ]
+ },
+ "gallade": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gallade",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Zen Headbutt"], ["Knock Off"], ["Swords Dance"]]
+ },
+ {
+ "species": "Gallade",
+ "item": "Choice Band",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Zen Headbutt"], ["Knock Off"], ["Drain Punch"]]
+ }
+ ]
+ },
+ "virizion": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Virizion",
+ "item": "Lum Berry",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Leaf Blade"], ["Close Combat"], ["Stone Edge", "Zen Headbutt"], ["Swords Dance"]]
+ },
+ {
+ "species": "Virizion",
+ "item": "Life Orb",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Giga Drain"], ["Focus Blast"], ["Hidden Power Ice"], ["Calm Mind"]]
+ },
+ {
+ "species": "Virizion",
+ "item": "Leftovers",
+ "ability": "Justified",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Giga Drain"], ["Focus Blast"], ["Substitute"], ["Calm Mind"]]
+ }
+ ]
+ },
+ "uxie": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Uxie",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 64, "spa": 0, "spd": 0, "spe": 192},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Psyshock"], ["Thunder Wave"], ["U-turn"]]
+ }
+ ]
+ },
+ "sneasel": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sneasel",
+ "item": "Life Orb",
+ "ability": "Pickpocket",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Knock Off"], ["Icicle Crash"], ["Ice Shard"], ["Low Kick", "Pursuit"]]
+ }
+ ]
+ },
+ "samurott": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Samurott",
+ "item": "Lum Berry",
+ "ability": "Shell Armor",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Waterfall"], ["Megahorn"], ["Aqua Jet"]]
+ }
+ ]
+ },
+ "gurdurr": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gurdurr",
+ "item": "Eviolite",
+ "ability": "Guts",
+ "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Bulk Up"], ["Drain Punch"], ["Knock Off"], ["Mach Punch"]]
+ }
+ ]
+ },
+ "poliwrath": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Poliwrath",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Scald"], ["Circle Throw"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Poliwrath",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8},
+ "nature": "Modest",
+ "moves": [["Hydro Pump", "Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]]
+ },
+ {
+ "species": "Poliwrath",
+ "item": "Life Orb",
+ "ability": "Water Absorb",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8},
+ "nature": "Modest",
+ "moves": [["Hydro Pump", "Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]]
+ },
+ {
+ "species": "Poliwrath",
+ "item": "Choice Specs",
+ "ability": "Water Absorb",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8},
+ "nature": "Modest",
+ "moves": [["Hydro Pump", "Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]]
+ }
+ ]
+ },
+ "vivillon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Vivillon",
+ "item": "Leftovers",
+ "ability": "Compound Eyes",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Sleep Powder"], ["Quiver Dance"], ["Hurricane"], ["Substitute"]]
+ }
+ ]
+ },
+ "audino": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Audino",
+ "item": "Audinite",
+ "ability": "Regenerator",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 8},
+ "nature": "Modest",
+ "moves": [["Dazzling Gleam"], ["Fire Blast"], ["Surf"], ["Healing Wish"]]
+ }
+ ]
+ },
+ "mesprit": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mesprit",
+ "item": "Colbur Berry",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Dazzling Gleam", "Ice Beam"], ["Stealth Rock"], ["Healing Wish"]]
+ }
+ ]
+ },
+ "archeops": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Archeops",
+ "item": "Focus Sash",
+ "ability": "Defeatist",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Stealth Rock"], ["Taunt"], ["Endeavor"], ["Head Smash"]]
+ }
+ ]
+ },
+ "malamar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Malamar",
+ "item": "Leftovers",
+ "ability": "Contrary",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 108, "spe": 152},
+ "nature": "Jolly",
+ "moves": [["Superpower"], ["Knock Off"], ["Rest"], ["Sleep Talk"]]
+ }
+ ]
+ },
+ "roselia": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 248, "atk": 0, "def": 172, "spa": 0, "spd": 88, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Spikes"], ["Synthesis"], ["Giga Drain"], ["Sludge Bomb"]]
+ }
+ ]
+ },
+ "piloswine": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Piloswine",
+ "item": "Eviolite",
+ "ability": "Thick Fat",
+ "evs": {"hp": 240, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Ice Shard"], ["Earthquake"], ["Icicle Crash"]]
+ }
+ ]
+ },
+ "sawk": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sawk",
+ "item": "Choice Band",
+ "ability": "Sturdy",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Knock Off"], ["Zen Headbutt"], ["Stone Edge"]]
+ },
+ {
+ "species": "Sawk",
+ "item": "Expert Belt",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Knock Off"], ["Stone Edge"], ["Zen Headbutt"]]
+ },
+ {
+ "species": "Sawk",
+ "item": "Lum Berry",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Knock Off"], ["Earthquake"], ["Stone Edge"]]
+ },
+ {
+ "species": "Sawk",
+ "item": "Choice Scarf",
+ "ability": "Sturdy",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Knock Off"], ["Stone Edge"], ["Zen Headbutt"]]
+ }
+ ]
+ }
+ },
+ "NU": {
+ "dodrio": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Dodrio",
+ "item": "Choice Band",
+ "ability": "Early Bird",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Return"], ["Knock Off"], ["Quick Attack"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "chatot": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Chatot",
+ "item": "Choice Scarf",
+ "ability": "Keen Eye",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Boomburst"], ["Chatter"], ["U-turn"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Chatot",
+ "item": "Choice Specs",
+ "ability": "Keen Eye",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Boomburst"], ["Chatter"], ["U-turn"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Chatot",
+ "item": "Leftovers",
+ "ability": "Tangled Feet",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Boomburst"], ["Chatter"], ["Nasty Plot"], ["Encore"]]
+ }
+ ]
+ },
+ "carracosta": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Carracosta",
+ "item": "Life Orb",
+ "ability": "Solid Rock",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Shell Smash"], ["Waterfall"], ["Stone Edge"], ["Aqua Jet"]]
+ },
+ {
+ "species": "Carracosta",
+ "item": "Leftovers",
+ "ability": "Solid Rock",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Stealth Rock"], ["Scald"], ["Rock Slide"], ["Knock Off", "Toxic"]]
+ },
+ {
+ "species": "Carracosta",
+ "item": "Life Orb",
+ "ability": "Solid Rock",
+ "evs": {"hp": 0, "atk": 28, "def": 0, "spa": 228, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Shell Smash"], ["Hydro Pump"], ["Stone Edge"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "beheeyem": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Beheeyem",
+ "item": "Life Orb",
+ "ability": "Analytic",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 252, "spd": 0, "spe": 0},
+ "nature": "Quiet",
+ "moves": [["Trick Room"], ["Psychic"], ["Thunderbolt"], ["Hidden Power Fighting"]]
+ },
+ {
+ "species": "Beheeyem",
+ "item": "Choice Specs",
+ "ability": "Analytic",
+ "evs": {"hp": 132, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 124},
+ "nature": "Modest",
+ "moves": [["Psychic", "Psyshock"], ["Signal Beam"], ["Hidden Power Ground"], ["Trick", "Thunderbolt"]]
+ }
+ ]
+ },
+ "basculin": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Basculin",
+ "item": "Choice Band",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Waterfall"], ["Aqua Jet"], ["Zen Headbutt"], ["Superpower"]]
+ },
+ {
+ "species": "Basculin",
+ "item": "Splash Plate",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Aqua Jet"], ["Double-Edge"], ["Superpower"]]
+ }
+ ]
+ },
+ "barbaracle": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Barbaracle",
+ "item": "Shuca Berry",
+ "ability": "Tough Claws",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Shell Smash"], ["Razor Shell"], ["Return"], ["Earthquake", "Substitute"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "aurorus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Aurorus",
+ "item": "Choice Specs",
+ "ability": "Refrigerate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Hyper Voice"], ["Freeze-Dry"], ["Psychic", "Frost Breath"], ["Earth Power"]]
+ },
+ {
+ "species": "Aurorus",
+ "item": "Focus Sash",
+ "ability": "Snow Warning",
+ "evs": {"hp": 0, "atk": 32, "def": 0, "spa": 224, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Stealth Rock"], ["Blizzard"], ["Freeze-Dry"], ["Rock Tomb"]]
+ }
+ ]
+ },
+ "articuno": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Articuno",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Ice Beam"], ["Roost"], ["Hurricane"], ["Freeze-Dry"]]
+ },
+ {
+ "species": "Articuno",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hidden Power Fire"], ["Roost"], ["Hurricane"], ["Freeze-Dry"]]
+ },
+ {
+ "species": "Articuno",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Roost"], ["Hurricane"], ["Freeze-Dry"]]
+ }
+ ]
+ },
+ "zangoose": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Zangoose",
+ "item": "Toxic Orb",
+ "ability": "Toxic Boost",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Facade"], ["Knock Off"], ["Quick Attack"], ["Close Combat"]]
+ }
+ ]
+ },
+ "xatu": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Xatu",
+ "item": "Colbur Berry",
+ "ability": "Magic Bounce",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Timid",
+ "moves": [["Psychic", "Psyshock"], ["Roost"], ["Heat Wave"], ["U-turn", "Thunder Wave"]]
+ },
+ {
+ "species": "Xatu",
+ "item": "Leftovers",
+ "ability": "Magic Bounce",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Timid",
+ "moves": [["Calm Mind"], ["Roost"], ["Psyshock"], ["Heat Wave", "Signal Beam"]]
+ },
+ {
+ "species": "Xatu",
+ "item": "Life Orb",
+ "ability": "Magic Bounce",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic", "Psyshock"], ["Grass Knot"], ["Heat Wave"], ["Roost"]]
+ }
+ ]
+ },
+ "weezing": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Weezing",
+ "item": "Black Sludge",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 0, "spd": 0, "spe": 108},
+ "nature": "Bold",
+ "moves": [["Will-O-Wisp"], ["Sludge Bomb"], ["Taunt"], ["Pain Split"]]
+ },
+ {
+ "species": "Weezing",
+ "item": "Black Sludge",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 148, "spa": 0, "spd": 0, "spe": 108},
+ "nature": "Bold",
+ "moves": [["Will-O-Wisp"], ["Sludge Bomb"], ["Taunt"], ["Toxic Spikes"]]
+ }
+ ]
+ },
+ "vivillon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Vivillon",
+ "item": "Leftovers",
+ "ability": "Compound Eyes",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Quiver Dance"], ["Sleep Powder"], ["Hurricane"], ["Substitute"]]
+ },
+ {
+ "species": "Vivillon",
+ "item": "Focus Sash",
+ "ability": "Compound Eyes",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Sleep Powder"], ["Quiver Dance"], ["Hurricane"], ["Energy Ball"]]
+ }
+ ]
+ },
+ "vileplume": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Vileplume",
+ "item": "Black Sludge",
+ "ability": "Effect Spore",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Aromatherapy", "Sleep Powder"]]
+ },
+ {
+ "species": "Vileplume",
+ "item": "Black Sludge",
+ "ability": "Effect Spore",
+ "evs": {"hp": 112, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 144},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fire"], ["Synthesis"]]
+ },
+ {
+ "species": "Vileplume",
+ "item": "Black Sludge",
+ "ability": "Effect Spore",
+ "evs": {"hp": 112, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 144},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Ground"], ["Synthesis"]]
+ }
+ ]
+ },
+ "swellow": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Swellow",
+ "item": "Choice Specs",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Boomburst"], ["U-turn"], ["Heat Wave"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Swellow",
+ "item": "Choice Specs",
+ "ability": "Scrappy",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Boomburst"], ["U-turn"], ["Heat Wave"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Swellow",
+ "item": "Toxic Orb",
+ "ability": "Guts",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Facade"], ["Brave Bird"], ["U-turn"], ["Quick Attack"]]
+ }
+ ]
+ },
+ "sandslash": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sandslash",
+ "item": "Lum Berry",
+ "ability": "Sand Rush",
+ "evs": {"hp": 172, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 84},
+ "nature": "Adamant",
+ "moves": [["Rapid Spin"], ["Knock Off"], ["Earthquake"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "samurott": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Samurott",
+ "item": "Life Orb",
+ "ability": "Torrent",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Rash",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Aqua Jet"], ["Megahorn", "Taunt"]]
+ },
+ {
+ "species": "Samurott",
+ "item": "Life Orb",
+ "ability": "Torrent",
+ "evs": {"hp": 120, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 136},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Waterfall"], ["Aqua Jet"], ["Megahorn"]]
+ },
+ {
+ "species": "Samurott",
+ "item": "Lum Berry",
+ "ability": "Torrent",
+ "evs": {"hp": 120, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 136},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Waterfall"], ["Aqua Jet"], ["Megahorn"]]
+ }
+ ]
+ },
+ "rotomfan": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rotom-Fan",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Air Slash"], ["Volt Switch"], ["Trick"], ["Thunderbolt"]]
+ },
+ {
+ "species": "Rotom-Fan",
+ "item": "Expert Belt",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Air Slash"], ["Hidden Power Water"], ["Will-O-Wisp"]]
+ },
+ {
+ "species": "Rotom-Fan",
+ "item": "Expert Belt",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Air Slash"], ["Hidden Power Grass"], ["Will-O-Wisp"]]
+ }
+ ]
+ },
+ "rotom": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rotom",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Shadow Ball"], ["Thunderbolt"], ["Trick"]]
+ },
+ {
+ "species": "Rotom",
+ "item": "Choice Specs",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Shadow Ball"], ["Thunderbolt"], ["Trick"]]
+ },
+ {
+ "species": "Rotom",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 108, "spa": 0, "spd": 0, "spe": 148},
+ "nature": "Timid",
+ "moves": [["Will-O-Wisp"], ["Shadow Ball"], ["Volt Switch"], ["Pain Split"]]
+ },
+ {
+ "species": "Rotom",
+ "item": "Spell Tag",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Will-O-Wisp"], ["Hex"], ["Volt Switch"], ["Discharge", "Shadow Ball"]]
+ }
+ ]
+ },
+ "rhydon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rhydon",
+ "item": "Eviolite",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Earthquake"], ["Stone Edge"], ["Rock Polish"]]
+ },
+ {
+ "species": "Rhydon",
+ "item": "Eviolite",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 252, "atk": 16, "def": 0, "spa": 0, "spd": 240, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Rock Blast"], ["Megahorn"]]
+ }
+ ]
+ },
+ "regirock": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Regirock",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 44, "def": 16, "spa": 0, "spd": 196, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Stone Edge", "Rock Slide"], ["Thunder Wave", "Toxic"], ["Drain Punch", "Earthquake"]]
+ }
+ ]
+ },
+ "pyroar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Pyroar",
+ "item": "Life Orb",
+ "ability": "Unnerve",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Hyper Voice"], ["Hidden Power Grass"], ["Will-O-Wisp"]]
+ },
+ {
+ "species": "Pyroar",
+ "item": "Choice Specs",
+ "ability": "Unnerve",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Hyper Voice"], ["Hidden Power Grass"], ["Flamethrower", "Overheat"]]
+ }
+ ]
+ },
+ "primeape": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Primeape",
+ "item": "Choice Band",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Close Combat"], ["U-turn"], ["Stone Edge"], ["Earthquake", "Gunk Shot"]]
+ },
+ {
+ "species": "Primeape",
+ "item": "Expert Belt",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Close Combat"], ["U-turn"], ["Stone Edge"], ["Encore"]]
+ }
+ ]
+ },
+ "pawniard": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Pawniard",
+ "item": "Eviolite",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Knock Off"], ["Iron Head"], ["Sucker Punch"]]
+ }
+ ]
+ },
+ "musharna": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Musharna",
+ "item": "Leftovers",
+ "ability": "Synchronize",
+ "evs": {"hp": 240, "atk": 0, "def": 252, "spa": 0, "spd": 16, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Psyshock"], ["Heal Bell", "Signal Beam"], ["Moonlight"]]
+ },
+ {
+ "species": "Musharna",
+ "item": "Leftovers",
+ "ability": "Synchronize",
+ "evs": {"hp": 240, "atk": 0, "def": 252, "spa": 0, "spd": 16, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Barrier"], ["Moonlight"], ["Stored Power"]]
+ }
+ ]
+ },
+ "muk": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Muk",
+ "item": "Assault Vest",
+ "ability": "Poison Touch",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Gunk Shot"], ["Poison Jab"], ["Fire Punch"], ["Ice Punch"]]
+ },
+ {
+ "species": "Muk",
+ "item": "Choice Band",
+ "ability": "Poison Touch",
+ "evs": {"hp": 220, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 36},
+ "nature": "Adamant",
+ "moves": [["Gunk Shot"], ["Shadow Sneak"], ["Focus Punch"], ["Ice Punch"]]
+ }
+ ]
+ },
+ "mismagius": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mismagius",
+ "item": "Colbur Berry",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Taunt"], ["Shadow Ball"], ["Dazzling Gleam"], ["Destiny Bond"]]
+ },
+ {
+ "species": "Mismagius",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Taunt"], ["Shadow Ball"], ["Dazzling Gleam"], ["Nasty Plot"]]
+ },
+ {
+ "species": "Mismagius",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Taunt"], ["Will-O-Wisp"], ["Hex"], ["Pain Split"]]
+ }
+ ]
+ },
+ "miltank": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Miltank",
+ "item": "Leftovers",
+ "ability": "Scrappy",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Curse"], ["Body Slam"], ["Milk Drink"], ["Heal Bell"]]
+ },
+ {
+ "species": "Miltank",
+ "item": "Leftovers",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Impish",
+ "moves": [["Body Slam"], ["Milk Drink"], ["Toxic", "Thunder Wave"], ["Heal Bell"]]
+ },
+ {
+ "species": "Miltank",
+ "item": "Leftovers",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Impish",
+ "moves": [["Body Slam"], ["Milk Drink"], ["Toxic", "Thunder Wave"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "mesprit": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mesprit",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Psychic", "Psyshock"], ["Signal Beam", "Ice Beam"], ["Energy Ball"], ["Healing Wish", "Calm Mind"]]
+ },
+ {
+ "species": "Mesprit",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Psychic", "Psyshock"], ["Signal Beam", "Ice Beam"], ["Hidden Power Ground"], ["Healing Wish", "Calm Mind"]]
+ },
+ {
+ "species": "Mesprit",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Ice Beam", "Signal Beam"], ["U-turn"], ["Healing Wish"]]
+ },
+ {
+ "species": "Mesprit",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Psychic"], ["U-turn"], ["Thunder Wave", "Healing Wish"]]
+ }
+ ]
+ },
+ "mantine": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mantine",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 16, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Defog"], ["Scald"], ["Air Slash"], ["Toxic"]]
+ },
+ {
+ "species": "Mantine",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 32, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 224},
+ "nature": "Modest",
+ "moves": [["Air Slash"], ["Hydro Pump"], ["Ice Beam"], ["Rain Dance"]]
+ }
+ ]
+ },
+ "malamar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Malamar",
+ "item": "Leftovers",
+ "ability": "Contrary",
+ "evs": {"hp": 252, "atk": 4, "def": 0, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Rest"], ["Sleep Talk"], ["Superpower"], ["Knock Off"]]
+ },
+ {
+ "species": "Malamar",
+ "item": "Choice Scarf",
+ "ability": "Contrary",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Superpower"], ["Knock Off"], ["Psycho Cut"], ["Switcheroo"]]
+ }
+ ]
+ },
+ "magmortar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Magmortar",
+ "item": "Assault Vest",
+ "ability": "Vital Spirit",
+ "evs": {"hp": 64, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 192},
+ "nature": "Modest",
+ "moves": [["Fire Blast"], ["Thunderbolt"], ["Focus Blast"], ["Flame Charge", "Earthquake"]]
+ },
+ {
+ "species": "Magmortar",
+ "item": "Assault Vest",
+ "ability": "Vital Spirit",
+ "evs": {"hp": 64, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 192},
+ "nature": "Modest",
+ "moves": [["Fire Blast"], ["Thunderbolt"], ["Hidden Power Grass"], ["Flame Charge", "Earthquake"]]
+ },
+ {
+ "species": "Magmortar",
+ "item": "Life Orb",
+ "ability": "Vital Spirit",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Mild",
+ "moves": [["Fire Blast"], ["Thunderbolt"], ["Earthquake"], ["Focus Blast"]]
+ },
+ {
+ "species": "Magmortar",
+ "item": "Life Orb",
+ "ability": "Vital Spirit",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Mild",
+ "moves": [["Fire Blast"], ["Thunderbolt"], ["Earthquake"], ["Hidden Power Grass"]]
+ }
+ ]
+ },
+ "ludicolo": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ludicolo",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Hydro Pump"], ["Giga Drain"], ["Ice Beam"], ["Rain Dance"]]
+ }
+ ]
+ },
+ "lilligant": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Lilligant",
+ "item": "Life Orb",
+ "ability": "Own Tempo",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Quiver Dance"], ["Sleep Powder"], ["Giga Drain"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Lilligant",
+ "item": "Life Orb",
+ "ability": "Own Tempo",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Quiver Dance"], ["Sleep Powder"], ["Giga Drain"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Lilligant",
+ "item": "Choice Scarf",
+ "ability": "Own Tempo",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Sleep Powder"], ["Leaf Storm"], ["Hidden Power Rock"], ["Healing Wish"]]
+ }
+ ]
+ },
+ "liepard": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Liepard",
+ "item": "Black Glasses",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Dark Pulse"], ["Copycat"], ["Encore"]]
+ },
+ {
+ "species": "Liepard",
+ "item": "Black Glasses",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Knock Off"], ["Encore"], ["Sucker Punch"], ["U-turn"]]
+ }
+ ]
+ },
+ "lanturn": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Lanturn",
+ "item": "Choice Specs",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 72, "spe": 184},
+ "nature": "Modest",
+ "moves": [["Hydro Pump", "Scald"], ["Volt Switch"], ["Ice Beam", "Signal Beam"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Lanturn",
+ "item": "Choice Specs",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 72, "spe": 184},
+ "nature": "Modest",
+ "moves": [["Hydro Pump", "Scald"], ["Volt Switch"], ["Ice Beam", "Signal Beam"], ["Hidden Power Grass"]]
+ },
+ {
+ "species": "Lanturn",
+ "item": "Leftovers",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 40, "atk": 0, "def": 152, "spa": 0, "spd": 208, "spe": 108},
+ "nature": "Calm",
+ "moves": [["Scald"], ["Volt Switch"], ["Heal Bell"], ["Toxic", "Thunder Wave", "Protect"]]
+ },
+ {
+ "species": "Lanturn",
+ "item": "Assault Vest",
+ "ability": "Volt Absorb",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 144, "spe": 112},
+ "nature": "Modest",
+ "moves": [["Scald"], ["Volt Switch"], ["Ice Beam"], ["Hidden Power Fire"]]
+ }
+ ]
+ },
+ "klinklang": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Klinklang",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 92, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 164},
+ "nature": "Adamant",
+ "moves": [["Shift Gear"], ["Gear Grind"], ["Return"], ["Substitute"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "kangaskhan": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kangaskhan",
+ "gender": "F",
+ "item": "Silk Scarf",
+ "ability": "Scrappy",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Fake Out"], ["Double-Edge"], ["Sucker Punch"], ["Earthquake"]]
+ }
+ ]
+ },
+ "kabutops": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kabutops",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Rapid Spin"], ["Stone Edge"], ["Aqua Jet"], ["Waterfall"]]
+ },
+ {
+ "species": "Kabutops",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Stone Edge"], ["Aqua Jet"], ["Superpower", "Waterfall"]]
+ }
+ ]
+ },
+ "jynx": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Jynx",
+ "item": "Choice Scarf",
+ "ability": "Dry Skin",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Ice Beam"], ["Psychic"], ["Focus Blast"], ["Trick"]]
+ },
+ {
+ "species": "Jynx",
+ "item": "Focus Sash",
+ "ability": "Dry Skin",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Lovely Kiss"], ["Ice Beam"], ["Psychic"], ["Focus Blast", "Nasty Plot"]]
+ },
+ {
+ "species": "Jynx",
+ "item": "Life Orb",
+ "ability": "Dry Skin",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Lovely Kiss"], ["Nasty Plot"], ["Psychic"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "hariyama": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hariyama",
+ "item": "Assault Vest",
+ "ability": "Thick Fat",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Knock Off"], ["Bullet Punch"], ["Fake Out", "Earthquake"]]
+ },
+ {
+ "species": "Hariyama",
+ "item": "Choice Band",
+ "ability": "Guts",
+ "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Close Combat"], ["Knock Off"], ["Earthquake"], ["Bullet Punch"]]
+ }
+ ]
+ },
+ "golurk": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Golurk",
+ "item": "Choice Band",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Shadow Punch"], ["Earthquake"], ["Ice Punch"], ["Zen Headbutt", "Thunder Punch"]]
+ },
+ {
+ "species": "Golurk",
+ "item": "Colbur Berry",
+ "ability": "No Guard",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Earthquake"], ["Shadow Punch"], ["Dynamic Punch"]]
+ },
+ {
+ "species": "Golurk",
+ "item": "Life Orb",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Rock Polish"], ["Earthquake"], ["Shadow Punch"], ["Ice Punch"]]
+ }
+ ]
+ },
+ "garbodor": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Garbodor",
+ "item": "Rocky Helmet",
+ "ability": "Aftermath",
+ "evs": {"hp": 252, "atk": 0, "def": 160, "spa": 0, "spd": 0, "spe": 96},
+ "nature": "Impish",
+ "moves": [["Spikes"], ["Gunk Shot"], ["Drain Punch"], ["Toxic Spikes"]]
+ },
+ {
+ "species": "Garbodor",
+ "item": "Rocky Helmet",
+ "ability": "Aftermath",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Spikes"], ["Gunk Shot"], ["Drain Punch"], ["Seed Bomb"]]
+ }
+ ]
+ },
+ "ferroseed": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ferroseed",
+ "item": "Eviolite",
+ "ability": "Iron Barbs",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Relaxed",
+ "moves": [["Spikes"], ["Gyro Ball", "Knock Off"], ["Leech Seed"], ["Protect"]]
+ },
+ {
+ "species": "Ferroseed",
+ "item": "Eviolite",
+ "ability": "Iron Barbs",
+ "evs": {"hp": 252, "atk": 0, "def": 112, "spa": 0, "spd": 144, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Seed Bomb"], ["Leech Seed"], ["Thunder Wave"]]
+ }
+ ]
+ },
+ "exeggutor": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Exeggutor",
+ "item": "Life Orb",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Psychic"], ["Hidden Power Fire"], ["Sleep Powder"]]
+ },
+ {
+ "species": "Exeggutor",
+ "item": "Choice Specs",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Leaf Storm"], ["Giga Drain"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Exeggutor",
+ "item": "Lum Berry",
+ "ability": "Harvest",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 176, "spd": 0, "spe": 84},
+ "nature": "Modest",
+ "moves": [["Sleep Powder"], ["Giga Drain"], ["Psychic"], ["Rest"]]
+ }
+ ]
+ },
+ "electivire": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Electivire",
+ "item": "Life Orb",
+ "ability": "Motor Drive",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Wild Charge"], ["Earthquake"], ["Ice Punch"], ["Hidden Power Grass"]]
+ }
+ ]
+ },
+ "cryogonal": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Cryogonal",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Rapid Spin"], ["Freeze-Dry"], ["Frost Breath"], ["Recover"]]
+ },
+ {
+ "species": "Cryogonal",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Rapid Spin"], ["Freeze-Dry"], ["Hidden Power Ground"], ["Recover"]]
+ }
+ ]
+ },
+ "crustle": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Crustle",
+ "item": "Custap Berry",
+ "ability": "Sturdy",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Spikes"], ["Rock Blast"], ["Knock Off"]]
+ }
+ ]
+ },
+ "cacturne": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Cacturne",
+ "item": "Life Orb",
+ "ability": "Water Absorb",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Rash",
+ "moves": [["Dark Pulse"], ["Giga Drain"], ["Sucker Punch"], ["Destiny Bond"]]
+ }
+ ]
+ },
+ "audino": {
+ "flags": {
+ "megaOnly": 1
+ },
+ "sets": [
+ {
+ "species": "Audino",
+ "item": "Audinite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 208, "spa": 48, "spd": 0, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Dazzling Gleam"], ["Wish"], ["Protect"]]
+ },
+ {
+ "species": "Audino",
+ "item": "Audinite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 208, "spa": 48, "spd": 0, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Dazzling Gleam"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Audino",
+ "item": "Audinite",
+ "ability": "Regenerator",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Calm Mind", "Healing Wish"], ["Dazzling Gleam"], ["Fire Blast"], ["Surf", "Thunder Wave", "Psychic"]]
+ },
+ {
+ "species": "Audino",
+ "item": "Audinite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 128, "spa": 0, "spd": 128, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Wish"], ["Protect"], ["Heal Bell"], ["Dazzling Gleam"]]
+ }
+ ]
+ },
+ "archeops": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Archeops",
+ "ability": "Defeatist",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Taunt"], ["Roost"], ["Acrobatics"], ["Earth Power"]]
+ },
+ {
+ "species": "Archeops",
+ "ability": "Defeatist",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Taunt"], ["Roost"], ["Acrobatics"], ["Defog"]]
+ },
+ {
+ "species": "Archeops",
+ "ability": "Defeatist",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Defog"], ["Roost"], ["Acrobatics"], ["Earth Power"]]
+ },
+ {
+ "species": "Archeops",
+ "item": "Focus Sash",
+ "ability": "Defeatist",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Stealth Rock"], ["Taunt"], ["Endeavor"], ["Head Smash"]]
+ },
+ {
+ "species": "Archeops",
+ "ability": "Defeatist",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Acrobatics"], ["Stone Edge"], ["Earth Power"], ["Roost"]]
+ }
+ ]
+ },
+ "claydol": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Claydol",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Rapid Spin"], ["Earth Power"], ["Shadow Ball"], ["Psychic", "Psyshock"]]
+ }
+ ]
+ },
+ "tauros": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tauros",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Rock Climb"], ["Earthquake"], ["Fire Blast"], ["Iron Tail", "Zen Headbutt"]]
+ }
+ ]
+ },
+ "mawile": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mawile",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naughty",
+ "moves": [["Play Rough"], ["Iron Head"], ["Fire Blast"], ["Sucker Punch"]]
+ }
+ ]
+ },
+ "scyther": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Scyther",
+ "item": "Eviolite",
+ "ability": "Technician",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Aerial Ace"], ["U-turn"], ["Roost"]]
+ },
+ {
+ "species": "Scyther",
+ "item": "Choice Band",
+ "ability": "Technician",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["U-turn"], ["Aerial Ace"], ["Knock Off", "Pursuit"], ["Quick Attack"]]
+ },
+ {
+ "species": "Scyther",
+ "item": "Choice Scarf",
+ "ability": "Technician",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["U-turn"], ["Aerial Ace"], ["Knock Off"], ["Bug Bite"]]
+ }
+ ]
+ },
+ "torterra": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Torterra",
+ "item": "Leftovers",
+ "ability": "Overgrow",
+ "evs": {"hp": 252, "atk": 128, "def": 128, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Wood Hammer"], ["Earthquake"], ["Stealth Rock"], ["Synthesis"]]
+ },
+ {
+ "species": "Torterra",
+ "item": "Soft Sand",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Rock Polish"], ["Wood Hammer"], ["Earthquake"], ["Stone Edge"]]
+ }
+ ]
+ },
+ "haunter": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Haunter",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shadow Ball"], ["Sludge Bomb"], ["Destiny Bond"], ["Trick"]]
+ },
+ {
+ "species": "Haunter",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shadow Ball"], ["Sludge Bomb"], ["Taunt"], ["Destiny Bond", "Will-O-Wisp"]]
+ },
+ {
+ "species": "Haunter",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shadow Ball"], ["Sludge Bomb"], ["Substitute"], ["Pain Split"]]
+ }
+ ]
+ },
+ "prinplup": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Prinplup",
+ "item": "Eviolite",
+ "ability": "Torrent",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Defog"], ["Scald"], ["Stealth Rock"], ["Toxic"]]
+ }
+ ]
+ },
+ "tangela": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tangela",
+ "item": "Eviolite",
+ "ability": "Regenerator",
+ "evs": {"hp": 236, "atk": 0, "def": 48, "spa": 224, "spd": 0, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Leaf Storm"], ["Giga Drain", "Ancient Power"], ["Sleep Powder"], ["Hidden Power Fire"]]
+ },
+ {
+ "species": "Tangela",
+ "item": "Eviolite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Giga Drain"], ["Hidden Power Fire"], ["Sleep Powder"], ["Leech Seed"]]
+ }
+ ]
+ },
+ "pelipper": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Pelipper",
+ "item": "Leftovers",
+ "ability": "Keen Eye",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Defog"], ["Scald"], ["Roost"], ["U-turn", "Hurricane"]]
+ }
+ ]
+ },
+ "piloswine": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Piloswine",
+ "item": "Eviolite",
+ "ability": "Thick Fat",
+ "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Earthquake"], ["Stealth Rock"], ["Icicle Crash"], ["Ice Shard"]]
+ }
+ ]
+ },
+ "poliwrath": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Poliwrath",
+ "item": "Choice Specs",
+ "ability": "Water Absorb",
+ "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160},
+ "nature": "Modest",
+ "moves": [["Hydro Pump"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]]
+ },
+ {
+ "species": "Poliwrath",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 96, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 160},
+ "nature": "Modest",
+ "moves": [["Scald"], ["Focus Blast"], ["Ice Beam"], ["Vacuum Wave"]]
+ }
+ ]
+ },
+ "shiftry": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Shiftry",
+ "item": "Life Orb",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Lonely",
+ "moves": [["Knock Off"], ["Leaf Storm"], ["Sucker Punch"], ["Explosion"]]
+ },
+ {
+ "species": "Shiftry",
+ "item": "Life Orb",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Lonely",
+ "moves": [["Knock Off"], ["Leaf Storm"], ["Sucker Punch"], ["Defog"]]
+ },
+ {
+ "species": "Shiftry",
+ "item": "Black Glasses",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Knock Off"], ["Seed Bomb"], ["Sucker Punch"]]
+ }
+ ]
+ },
+ "charizard": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Charizard",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Air Slash"], ["Focus Blast"], ["Roost"]]
+ },
+ {
+ "species": "Charizard",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Fire Blast"], ["Air Slash"], ["Hidden Power Grass"], ["Roost"]]
+ },
+ {
+ "species": "Charizard",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Fire Blast"], ["Air Slash"], ["Earthquake"], ["Roost"]]
+ },
+ {
+ "species": "Charizard",
+ "ability": "Blaze",
+ "evs": {"hp": 248, "atk": 8, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Acrobatics"], ["Roost"], ["Will-O-Wisp"]]
+ }
+ ]
+ },
+ "floatzel": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Floatzel",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Focus Blast"], ["Taunt"]]
+ }
+ ]
+ },
+ "abomasnow": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Abomasnow",
+ "item": "Life Orb",
+ "ability": "Snow Warning",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Blizzard"], ["Giga Drain"], ["Earthquake"], ["Ice Shard"]]
+ },
+ {
+ "species": "Abomasnow",
+ "item": "Life Orb",
+ "ability": "Snow Warning",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Ice Shard"], ["Seed Bomb"], ["Earthquake"]]
+ }
+ ]
+ },
+ "hitmonchan": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Hitmonchan",
+ "item": "Life Orb",
+ "ability": "Iron Fist",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Drain Punch", "Close Combat"], ["Mach Punch"], ["Ice Punch", "Stone Edge"], ["Rapid Spin"]]
+ }
+ ]
+ },
+ "skuntank": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Skuntank",
+ "item": "Lum Berry",
+ "ability": "Aftermath",
+ "evs": {"hp": 0, "atk": 232, "def": 0, "spa": 0, "spd": 132, "spe": 144},
+ "nature": "Adamant",
+ "moves": [["Sucker Punch"], ["Pursuit"], ["Poison Jab"], ["Taunt"]]
+ },
+ {
+ "species": "Skuntank",
+ "item": "Expert Belt",
+ "ability": "Aftermath",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Dark Pulse"], ["Fire Blast"], ["Hidden Power Grass"], ["Defog"]]
+ }
+ ]
+ },
+ "omastar": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Omastar",
+ "item": "White Herb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Shell Smash"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"]]
+ },
+ {
+ "species": "Omastar",
+ "item": "Leftovers",
+ "ability": "Shell Armor",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Spikes"], ["Stealth Rock"], ["Scald"], ["Icy Wind"]]
+ },
+ {
+ "species": "Omastar",
+ "item": "Leftovers",
+ "ability": "Shell Armor",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Spikes"], ["Stealth Rock"], ["Scald"], ["Hidden Power Electric"]]
+ },
+ {
+ "species": "Omastar",
+ "item": "Focus Sash",
+ "ability": "Weak Armor",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Stealth Rock"], ["Spikes"], ["Scald"], ["Ice Beam"]]
+ }
+ ]
+ },
+ "pinsir": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Pinsir",
+ "item": "Life Orb",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["X-Scissor"], ["Earthquake"], ["Stone Edge"]]
+ },
+ {
+ "species": "Pinsir",
+ "item": "Choice Band",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["X-Scissor"], ["Earthquake"], ["Stone Edge"], ["Close Combat"]]
+ },
+ {
+ "species": "Pinsir",
+ "item": "Focus Sash",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["X-Scissor"], ["Rock Tomb"], ["Earthquake"]]
+ }
+ ]
+ },
+ "grumpig": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Calm Mind"], ["Psyshock"], ["Focus Blast"], ["Signal Beam"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 160, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic", "Psyshock"], ["Focus Blast"], ["Taunt"], ["Thunder Wave", "Toxic"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Psychic"], ["Heal Bell"], ["Thunder Wave"], ["Whirlwind"]]
+ }
+ ]
+ },
+ "sliggoo": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sliggoo",
+ "item": "Eviolite",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 252, "atk": 0, "def": 168, "spa": 0, "spd": 88, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Curse"], ["Outrage"], ["Rest"], ["Sleep Talk"]]
+ },
+ {
+ "species": "Sliggoo",
+ "item": "Eviolite",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 92, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 164},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Sludge Bomb"], ["Muddy Water"], ["Thunderbolt"]]
+ }
+ ]
+ },
+ "camerupt": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Camerupt",
+ "item": "Leftovers",
+ "ability": "Solid Rock",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 252, "spe": 0},
+ "nature": "Sassy",
+ "moves": [["Stealth Rock"], ["Lava Plume"], ["Earthquake"], ["Toxic"]]
+ },
+ {
+ "species": "Camerupt",
+ "item": "Choice Specs",
+ "ability": "Solid Rock",
+ "evs": {"hp": 140, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 116},
+ "nature": "Modest",
+ "moves": [["Fire Blast"], ["Earth Power"], ["Lava Plume"], ["Hidden Power Electric"]]
+ }
+ ]
+ },
+ "ninetales": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ninetales",
+ "item": "Life Orb",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Fire Blast"], ["Psyshock"], ["Energy Ball"]]
+ }
+ ]
+ },
+ "manectric": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Manectric",
+ "item": "Life Orb",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Hidden Power Grass"], ["Overheat"]]
+ }
+ ]
+ },
+ "roselia": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Spikes"], ["Giga Drain"], ["Synthesis"], ["Sludge Bomb"]]
+ },
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 80, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 176},
+ "nature": "Modest",
+ "moves": [["Spikes"], ["Leaf Storm"], ["Sludge Bomb"], ["Sleep Powder"]]
+ }
+ ]
+ },
+ "misdreavus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Misdreavus",
+ "item": "Eviolite",
+ "ability": "Levitate",
+ "evs": {"hp": 252, "atk": 0, "def": 240, "spa": 0, "spd": 0, "spe": 16},
+ "nature": "Bold",
+ "moves": [["Hex"], ["Will-O-Wisp"], ["Taunt"], ["Pain Split"]]
+ }
+ ]
+ },
+ "clefairy": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Clefairy",
+ "item": "Eviolite",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Moonblast"], ["Soft-Boiled"], ["Thunder Wave"], ["Healing Wish"]]
+ },
+ {
+ "species": "Clefairy",
+ "item": "Eviolite",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Moonblast"], ["Soft-Boiled"], ["Thunder Wave"], ["Stealth Rock"]]
+ }
+ ]
+ }
+ },
+ "PU": {
+ "prinplup": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Prinplup",
+ "item": "Eviolite",
+ "ability": "Torrent",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Scald"], ["Toxic"], ["Defog"]]
+ }
+ ]
+ },
+ "ampharos": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ampharos",
+ "item": "Life Orb",
+ "ability": "Static",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Agility"], ["Thunderbolt"], ["Focus Blast"], ["Hidden Power Ice"]]
+ }
+ ]
+ },
+ "cryogonal": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Cryogonal",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Freeze-Dry"], ["Hidden Power Fighting"], ["Recover"], ["Rapid Spin"]]
+ },
+ {
+ "species": "Cryogonal",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 156, "spa": 0, "spd": 104, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Freeze-Dry"], ["Rapid Spin"], ["Recover"], ["Hidden Power Fighting"]]
+ }
+ ]
+ },
+ "glalie": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Glalie",
+ "item": "Focus Sash",
+ "ability": "Inner Focus",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Spikes"], ["Taunt"], ["Ice Beam", "Freeze-Dry"], ["Explosion"]]
+ }
+ ]
+ },
+ "camerupt": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Camerupt",
+ "item": "Leftovers",
+ "ability": "Solid Rock",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 252, "spe": 0},
+ "nature": "Timid",
+ "moves": [["Stealth Rock"], ["Lava Plume", "Fire Blast"], ["Earth Power"], ["Roar", "Toxic"]]
+ }
+ ]
+ },
+ "altaria": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Altaria",
+ "item": "Leftovers",
+ "ability": "Natural Cure",
+ "evs": {"hp": 116, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 140},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Dragon Claw"], ["Substitute", "Earthquake"], ["Roost"]]
+ },
+ {
+ "species": "Altaria",
+ "item": "Life Orb",
+ "ability": "Natural Cure",
+ "evs": {"hp": 116, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 140},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Roost"], ["Fire Blast"], ["Toxic"]]
+ },
+ {
+ "species": "Altaria",
+ "item": "Life Orb",
+ "ability": "Natural Cure",
+ "evs": {"hp": 116, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 140},
+ "nature": "Modest",
+ "moves": [["Draco Meteor"], ["Roost"], ["Fire Blast"], ["Hidden Power Fighting"]]
+ }
+ ]
+ },
+ "audino": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Audino",
+ "item": "Leftovers",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Knock Off"], ["Wish"], ["Protect"], ["Encore", "Toxic", "Double-Edge", "Thunder Wave"]]
+ }
+ ]
+ },
+ "bouffalant": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Bouffalant",
+ "item": "Leftovers",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 252, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Substitute"], ["Swords Dance"], ["Return"], ["Earthquake"]],
+ "happiness": 255
+ },
+ {
+ "species": "Bouffalant",
+ "item": "Assault Vest",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 252, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Return"], ["Earthquake"], ["Megahorn"], ["Pursuit", "Head Charge"]],
+ "happiness": 255
+ },
+ {
+ "species": "Bouffalant",
+ "item": "Choice Band",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 252, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Head Charge"], ["Earthquake"], ["Megahorn"], ["Pursuit"]]
+ }
+ ]
+ },
+ "gorebyss": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gorebyss",
+ "item": "White Herb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Shell Smash"], ["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"]]
+ }
+ ]
+ },
+ "pawniard": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Pawniard",
+ "item": "Eviolite",
+ "ability": "Defiant",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Knock Off"], ["Iron Head"], ["Sucker Punch"], ["Swords Dance"]]
+ }
+ ]
+ },
+ "gothitelle": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gothitelle",
+ "item": "Leftovers",
+ "ability": "Competitive",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Mean Look"], ["Rest"], ["Psychic"]]
+ }
+ ]
+ },
+ "roselia": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 252, "atk": 0, "def": 128, "spa": 0, "spd": 128, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Spikes"]]
+ },
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 252, "atk": 0, "def": 128, "spa": 0, "spd": 128, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Synthesis"], ["Toxic Spikes"]]
+ },
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fighting"], ["Sleep Powder"]]
+ },
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fighting"], ["Spikes"]]
+ },
+ {
+ "species": "Roselia",
+ "item": "Eviolite",
+ "ability": "Natural Cure",
+ "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220},
+ "nature": "Modest",
+ "moves": [["Giga Drain"], ["Sludge Bomb"], ["Hidden Power Fighting"], ["Toxic Spikes"]]
+ }
+ ]
+ },
+ "floatzel": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Floatzel",
+ "item": "Choice Specs",
+ "ability": "Water Veil",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"], ["Surf", "Switcheroo"]]
+ },
+ {
+ "species": "Floatzel",
+ "item": "Choice Band",
+ "ability": "Water Veil",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Waterfall"], ["Ice Punch"], ["Return"], ["Aqua Jet"]],
+ "happiness": 255
+ },
+ {
+ "species": "Floatzel",
+ "item": "Life Orb",
+ "ability": "Water Veil",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Ice Punch"], ["Hidden Power Electric"]]
+ },
+ {
+ "species": "Floatzel",
+ "item": "Choice Scarf",
+ "ability": "Water Veil",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"], ["Surf", "Switcheroo"]]
+ }
+ ]
+ },
+ "stoutland": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Stoutland",
+ "item": "Choice Band",
+ "ability": "Scrappy",
+ "evs": {"hp": 4, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Return"], ["Superpower"], ["Facade"], ["Pursuit", "Crunch"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "dodrio": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Dodrio",
+ "item": "Choice Band",
+ "ability": "Early Bird",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Return"], ["Knock Off"], ["Quick Attack", "Pursuit"]],
+ "happiness": 255
+ },
+ {
+ "species": "Dodrio",
+ "item": "Choice Scarf",
+ "ability": "Early Bird",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Return"], ["Knock Off"], ["Pursuit"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "zebstrika": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Zebstrika",
+ "item": "Life Orb",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Overheat"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Zebstrika",
+ "item": "Life Orb",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Volt Switch"], ["Thunderbolt"], ["Overheat"], ["Hidden Power Ice"]]
+ }
+ ]
+ },
+ "jumpluff": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Jumpluff",
+ "ability": "Infiltrator",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Acrobatics"], ["Sleep Powder"], ["U-turn", "Seed Bomb"], ["Memento"]]
+ },
+ {
+ "species": "Jumpluff",
+ "ability": "Infiltrator",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Acrobatics"], ["Sleep Powder"], ["Seed Bomb"], ["Swords Dance"]]
+ }
+ ]
+ },
+ "grumpig": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Grumpig",
+ "item": "Colbur Berry",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Toxic"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Colbur Berry",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Shadow Ball"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Colbur Berry",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Colbur Berry",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Toxic"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Colbur Berry",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Shadow Ball"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Colbur Berry",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Toxic"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Colbur Berry",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Toxic"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Shadow Ball"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Taunt"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Toxic"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Thunder Wave"], ["Shadow Ball"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Toxic"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Shadow Ball"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 160, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 96},
+ "nature": "Modest",
+ "moves": [["Psychic"], ["Focus Blast"], ["Calm Mind"], ["Shadow Ball", "Taunt"]]
+ },
+ {
+ "species": "Grumpig",
+ "item": "Leftovers",
+ "ability": "Thick Fat",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 4, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Psychic"], ["Thunder Wave", "Toxic"], ["Focus Blast", "Whirlwind"], ["Protect"]]
+ }
+ ]
+ },
+ "stunfisk": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Stunfisk",
+ "item": "Leftovers",
+ "ability": "Static",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Protect"]]
+ },
+ {
+ "species": "Stunfisk",
+ "item": "Leftovers",
+ "ability": "Static",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Hidden Power Bug"]]
+ },
+ {
+ "species": "Stunfisk",
+ "item": "Passho Berry",
+ "ability": "Static",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Toxic"]]
+ },
+ {
+ "species": "Stunfisk",
+ "item": "Passho Berry",
+ "ability": "Static",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Hidden Power Bug"]]
+ },
+ {
+ "species": "Stunfisk",
+ "item": "Leftovers",
+ "ability": "Static",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Protect"]]
+ },
+ {
+ "species": "Stunfisk",
+ "item": "Leftovers",
+ "ability": "Static",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Stealth Rock"], ["Discharge"], ["Earth Power"], ["Hidden Power Bug"]]
+ }
+ ]
+ },
+ "rapidash": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rapidash",
+ "item": "Leftovers",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Wild Charge"], ["Will-O-Wisp"], ["Morning Sun"]]
+ },
+ {
+ "species": "Rapidash",
+ "item": "Charcoal",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Flare Blitz"], ["Wild Charge"], ["Will-O-Wisp"], ["Morning Sun"]]
+ }
+ ]
+ },
+ "tangela": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Tangela",
+ "item": "Eviolite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Bold",
+ "moves": [["Giga Drain"], ["Synthesis"], ["Hidden Power Fire"], ["Sleep Powder", "Knock Off"]]
+ },
+ {
+ "species": "Tangela",
+ "item": "Eviolite",
+ "ability": "Regenerator",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Leaf Storm"], ["Giga Drain"], ["Hidden Power Fire"], ["Sleep Powder"]]
+ }
+ ]
+ },
+ "simipour": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Simipour",
+ "item": "Life Orb",
+ "ability": "Torrent",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Grass Knot"], ["Knock Off", "Low Kick", "Nasty Plot"]]
+ },
+ {
+ "species": "Simipour",
+ "item": "Life Orb",
+ "ability": "Torrent",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Hidden Power Electric"], ["Knock Off", "Low Kick", "Nasty Plot"]]
+ },
+ {
+ "species": "Simipour",
+ "item": "Choice Scarf",
+ "ability": "Torrent",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Hasty",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Grass Knot"], ["Superpower", "Knock Off"]]
+ },
+ {
+ "species": "Simipour",
+ "item": "Salac Berry",
+ "ability": "Torrent",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Hydro Pump"], ["Ice Beam"], ["Substitute"], ["Nasty Plot"]]
+ }
+ ]
+ },
+ "kadabra": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Kadabra",
+ "item": "Focus Sash",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Shadow Ball", "Signal Beam"], ["Thunder Wave"], ["Encore"]]
+ },
+ {
+ "species": "Kadabra",
+ "item": "Focus Sash",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Hidden Power Fighting"], ["Thunder Wave"], ["Encore"]]
+ },
+ {
+ "species": "Kadabra",
+ "item": "Focus Sash",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Shadow Ball"], ["Thunder Wave"], ["Encore"]]
+ },
+ {
+ "species": "Kadabra",
+ "item": "Life Orb",
+ "ability": "Magic Guard",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Hidden Power Fighting"], ["Shadow Ball"], ["Substitute", "Encore"]]
+ }
+ ]
+ },
+ "raichu": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Raichu",
+ "item": "Life Orb",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Thunderbolt"], ["Hidden Power Ice"], ["Focus Blast"]]
+ },
+ {
+ "species": "Raichu",
+ "item": "Life Orb",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 29, "atk": 0, "def": 30, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Focus Blast"], ["Signal Beam"]]
+ },
+ {
+ "species": "Raichu",
+ "item": "Life Orb",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Focus Blast"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Raichu",
+ "item": "Life Orb",
+ "ability": "Static",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Signal Beam", "Focus Blast"], ["Surf"]]
+ },
+ {
+ "species": "Raichu",
+ "item": "Choice Scarf",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 30, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Signal Beam"], ["Focus Blast"]]
+ },
+ {
+ "species": "Raichu",
+ "item": "Choice Scarf",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Hidden Power Ice"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "regice": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Regice",
+ "item": "Life Orb",
+ "ability": "Clear Body",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Ice Beam"], ["Focus Blast"], ["Thunderbolt"], ["Rock Polish"]]
+ },
+ {
+ "species": "Regice",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Thunder Wave"], ["Ice Beam"], ["Thunderbolt"], ["Focus Blast"]]
+ }
+ ]
+ },
+ "relicanth": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Relicanth",
+ "item": "Stone Plate",
+ "ability": "Rock Head",
+ "evs": {"hp": 104, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 148},
+ "nature": "Adamant",
+ "moves": [["Rock Polish"], ["Head Smash"], ["Waterfall"], ["Earthquake"]]
+ },
+ {
+ "species": "Relicanth",
+ "item": "Leftovers",
+ "ability": "Rock Head",
+ "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Head Smash"], ["Stealth Rock"], ["Earthquake", "Waterfall"], ["Toxic", "Yawn"]]
+ },
+ {
+ "species": "Relicanth",
+ "item": "Leftovers",
+ "ability": "Rock Head",
+ "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Head Smash"], ["Stealth Rock"], ["Earthquake", "Waterfall"], ["Protect"]]
+ },
+ {
+ "species": "Relicanth",
+ "item": "Leftovers",
+ "ability": "Rock Head",
+ "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Head Smash"], ["Stealth Rock"], ["Protect"], ["Toxic", "Yawn"]]
+ },
+ {
+ "species": "Relicanth",
+ "item": "Stone Plate",
+ "ability": "Rock Head",
+ "evs": {"hp": 168, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 88},
+ "nature": "Adamant",
+ "moves": [["Head Smash"], ["Stealth Rock"], ["Waterfall"], ["Toxic", "Earthquake"]]
+ },
+ {
+ "species": "Relicanth",
+ "item": "Leftovers",
+ "ability": "Rock Head",
+ "evs": {"hp": 168, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 88},
+ "nature": "Adamant",
+ "moves": [["Head Smash"], ["Stealth Rock"], ["Waterfall"], ["Toxic", "Earthquake"]]
+ }
+ ]
+ },
+ "rotomfrost": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rotom-Frost",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Blizzard"], ["Trick", "Will-O-Wisp"]]
+ },
+ {
+ "species": "Rotom-Frost",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Blizzard"], ["Hidden Power Ice"]]
+ },
+ {
+ "species": "Rotom-Frost",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Thunderbolt"], ["Blizzard"], ["Will-O-Wisp", "Volt Switch"]]
+ },
+ {
+ "species": "Rotom-Frost",
+ "item": "Life Orb",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Thunderbolt"], ["Blizzard"], ["Pain Split", "Will-O-Wisp"]]
+ }
+ ]
+ },
+ "simisage": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Simisage",
+ "item": "Life Orb",
+ "ability": "Overgrow",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Naive",
+ "moves": [["Leaf Storm"], ["Superpower"], ["Gunk Shot"], ["Knock Off"]]
+ }
+ ]
+ },
+ "chatot": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Chatot",
+ "item": "Choice Scarf",
+ "ability": "Keen Eye",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Boomburst"], ["Heat Wave"], ["Hidden Power Fighting"], ["U-turn"]]
+ },
+ {
+ "species": "Chatot",
+ "item": "Choice Scarf",
+ "ability": "Keen Eye",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Boomburst"], ["Heat Wave"], ["Hidden Power Fighting"], ["U-turn"]]
+ },
+ {
+ "species": "Chatot",
+ "item": "Choice Specs",
+ "ability": "Keen Eye",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Boomburst"], ["Heat Wave"], ["Hidden Power Fighting"], ["U-turn"]]
+ }
+ ]
+ },
+ "mrmime": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mr. Mime",
+ "item": "Choice Scarf",
+ "ability": "Soundproof",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Dazzling Gleam"], ["Focus Blast"], ["Healing Wish"]]
+ },
+ {
+ "species": "Mr. Mime",
+ "item": "Choice Specs",
+ "ability": "Soundproof",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Dazzling Gleam"], ["Focus Blast"], ["Shadow Ball"]]
+ },
+ {
+ "species": "Mr. Mime",
+ "item": "Life Orb",
+ "ability": "Soundproof",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Psychic"], ["Dazzling Gleam"], ["Focus Blast"], ["Shadow Ball", "Healing Wish"]]
+ }
+ ]
+ },
+ "mightyena": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Mightyena",
+ "item": "Life Orb",
+ "ability": "Moxie",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Adamant",
+ "moves": [["Crunch"], ["Sucker Punch"], ["Play Rough"], ["Iron Tail"]]
+ }
+ ]
+ },
+ "fraxure": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Fraxure",
+ "item": "Eviolite",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Dragon Dance"], ["Outrage"], ["Low Kick"], ["Dual Chop", "Taunt", "Poison Jab"]]
+ }
+ ]
+ },
+ "misdreavus": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Misdreavus",
+ "item": "Eviolite",
+ "ability": "Levitate",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Nasty Plot"], ["Taunt", "Will-O-Wisp"], ["Shadow Ball"], ["Thunderbolt"]]
+ },
+ {
+ "species": "Misdreavus",
+ "item": "Eviolite",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 124, "spa": 0, "spd": 0, "spe": 136},
+ "nature": "Timid",
+ "moves": [["Will-O-Wisp"], ["Taunt"], ["Foul Play"], ["Pain Split", "Thunder Wave"]]
+ }
+ ]
+ },
+ "probopass": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Probopass",
+ "item": "Leftovers",
+ "ability": "Magnet Pull",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Stealth Rock"], ["Flash Cannon"], ["Volt Switch"], ["Earth Power", "Thunder Wave"]]
+ },
+ {
+ "species": "Probopass",
+ "item": "Passho Berry",
+ "ability": "Sturdy",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Stealth Rock"], ["Flash Cannon"], ["Volt Switch"], ["Earth Power", "Thunder Wave"]]
+ },
+ {
+ "species": "Probopass",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Calm",
+ "moves": [["Stealth Rock"], ["Flash Cannon"], ["Volt Switch"], ["Earth Power", "Toxic", "Thunder Wave"]]
+ }
+ ]
+ },
+ "sawsbuck": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Sawsbuck",
+ "item": "Choice Scarf",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Double-Edge"], ["Horn Leech"], ["Jump Kick"], ["Megahorn"]]
+ },
+ {
+ "species": "Sawsbuck",
+ "item": "Choice Scarf",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Double-Edge"], ["Horn Leech"], ["Jump Kick"], ["Toxic"]]
+ },
+ {
+ "species": "Sawsbuck",
+ "item": "Salac Berry",
+ "ability": "Sap Sipper",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Return"], ["Horn Leech"], ["Substitute"], ["Swords Dance"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "arbok": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Arbok",
+ "item": "Black Sludge",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Coil"], ["Gunk Shot"], ["Sucker Punch"], ["Earthquake"]]
+ },
+ {
+ "species": "Arbok",
+ "item": "Shuca Berry",
+ "ability": "Intimidate",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Coil"], ["Gunk Shot"], ["Sucker Punch"], ["Earthquake"]]
+ },
+ {
+ "species": "Arbok",
+ "item": "Black Sludge",
+ "ability": "Shed Skin",
+ "evs": {"hp": 252, "atk": 0, "def": 0, "spa": 0, "spd": 236, "spe": 20},
+ "nature": "Careful",
+ "moves": [["Coil"], ["Gunk Shot"], ["Rest"], ["Earthquake"]]
+ }
+ ]
+ },
+ "duosion": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Duosion",
+ "item": "Eviolite",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 0, "spd": 4, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Calm Mind"], ["Recover"], ["Psyshock", "Psychic"], ["Acid Armor", "Signal Beam"]]
+ }
+ ]
+ },
+ "ninetales": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ninetales",
+ "item": "Leftovers",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Nasty Plot"], ["Fire Blast"], ["Energy Ball"]]
+ },
+ {
+ "species": "Ninetales",
+ "item": "Passho Berry",
+ "ability": "Flash Fire",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Fire Blast"], ["Energy Ball"], ["Hidden Power Ground"]]
+ }
+ ]
+ },
+ "articuno": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Articuno",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220},
+ "nature": "Modest",
+ "moves": [["Agility"], ["Ice Beam", "Freeze-Dry"], ["Hurricane"], ["Roost"]]
+ },
+ {
+ "species": "Articuno",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 36, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 220},
+ "nature": "Modest",
+ "moves": [["Agility"], ["Ice Beam", "Freeze-Dry"], ["Hurricane"], ["Hidden Power Fighting"]]
+ },
+ {
+ "species": "Articuno",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Ice Beam", "Freeze-Dry"], ["Hurricane"], ["Roost"]]
+ }
+ ]
+ },
+ "clefairy": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Clefairy",
+ "item": "Eviolite",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Soft-Boiled"], ["Moonblast"], ["Thunder Wave", "Knock Off", "Healing Wish"], ["Stealth Rock"]]
+ },
+ {
+ "species": "Clefairy",
+ "item": "Eviolite",
+ "ability": "Magic Guard",
+ "evs": {"hp": 252, "atk": 0, "def": 252, "spa": 4, "spd": 0, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Bold",
+ "moves": [["Calm Mind"], ["Soft-Boiled"], ["Moonblast"], ["Thunder Wave", "Knock Off", "Encore"]]
+ }
+ ]
+ },
+ "golduck": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Golduck",
+ "item": "Life Orb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Modest",
+ "moves": [["Hydro Pump"], ["Rain Dance"], ["Ice Beam"], ["Psyshock", "Focus Blast"]]
+ }
+ ]
+ },
+ "golem": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Golem",
+ "item": "Custap Berry",
+ "ability": "Sturdy",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Earthquake"], ["Explosion"], ["Stealth Rock"], ["Stone Edge"]]
+ },
+ {
+ "species": "Golem",
+ "item": "Weakness Policy",
+ "ability": "Sturdy",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Earthquake"], ["Sucker Punch"], ["Stealth Rock"], ["Stone Edge"]]
+ },
+ {
+ "species": "Golem",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 56, "def": 0, "spa": 0, "spd": 204, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Stone Edge"], ["Earthquake"], ["Protect"]]
+ }
+ ]
+ },
+ "gourgeistsuper": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gourgeist-Super",
+ "item": "Leftovers",
+ "ability": "Frisk",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Foul Play"], ["Will-O-Wisp"], ["Synthesis"], ["Seed Bomb"]]
+ }
+ ]
+ },
+ "lickilicky": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Lickilicky",
+ "item": "Leftovers",
+ "ability": "Oblivious",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Wish"], ["Protect"], ["Body Slam", "Knock Off"], ["Dragon Tail", "Heal Bell"]]
+ }
+ ]
+ },
+ "monferno": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Monferno",
+ "item": "Eviolite",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Mach Punch"], ["Flare Blitz"], ["Close Combat"]]
+ },
+ {
+ "species": "Monferno",
+ "item": "Life Orb",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Swords Dance"], ["Mach Punch"], ["Flare Blitz"], ["Close Combat"]]
+ },
+ {
+ "species": "Monferno",
+ "item": "Eviolite",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["U-turn", "Thunder Punch"], ["Mach Punch"], ["Flare Blitz"], ["Close Combat"]]
+ },
+ {
+ "species": "Monferno",
+ "item": "Eviolite",
+ "ability": "Iron Fist",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["U-turn", "Thunder Punch"], ["Mach Punch"], ["Flare Blitz"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "politoed": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Politoed",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 252, "spd": 8, "spe": 0},
+ "nature": "Modest",
+ "moves": [["Scald"], ["Ice Beam"], ["Hidden Power Electric"], ["Encore", "Toxic"]]
+ },
+ {
+ "species": "Politoed",
+ "item": "Leftovers",
+ "ability": "Water Absorb",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 252, "spe": 0},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Calm",
+ "moves": [["Perish Song"], ["Scald"], ["Toxic"], ["Protect"]]
+ }
+ ]
+ },
+ "seaking": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Seaking",
+ "item": "Leftovers",
+ "ability": "Lightning Rod",
+ "evs": {"hp": 104, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 152},
+ "nature": "Adamant",
+ "moves": [["Waterfall"], ["Knock Off"], ["Megahorn"], ["Haze", "Protect"]]
+ }
+ ]
+ },
+ "simisear": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Simisear",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Naive",
+ "moves": [["Knock Off"], ["Rock Slide"], ["Superpower", "Low Kick"], ["Overheat", "Fire Blast"]]
+ },
+ {
+ "species": "Simisear",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Naive",
+ "moves": [["Fire Blast"], ["Grass Knot"], ["Low Kick"], ["Knock Off"]]
+ },
+ {
+ "species": "Simisear",
+ "item": "Life Orb",
+ "ability": "Blaze",
+ "evs": {"hp": 0, "atk": 0, "def": 4, "spa": 252, "spd": 0, "spe": 252},
+ "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Nasty Plot"], ["Focus Blast"], ["Grass Knot"], ["Fire Blast"]]
+ },
+ {
+ "species": "Simisear",
+ "item": "Salac Berry",
+ "ability": "Blaze",
+ "evs": {"hp": 4, "atk": 0, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "ivs": {"hp": 31, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Substitute"], ["Nasty Plot"], ["Focus Blast"], ["Fire Blast"]]
+ }
+ ]
+ },
+ "swanna": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Swanna",
+ "item": "Life Orb",
+ "ability": "Keen Eye",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "ivs": {"hp": 29, "atk": 0, "def": 31, "spa": 31, "spd": 31, "spe": 31},
+ "nature": "Timid",
+ "moves": [["Defog"], ["Roost"], ["Scald"], ["Hurricane"]]
+ }
+ ]
+ },
+ "vullaby": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Vullaby",
+ "item": "Eviolite",
+ "ability": "Overcoat",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Defog"], ["Roost"], ["U-turn", "Whirlwind"], ["Foul Play"]]
+ },
+ {
+ "species": "Vullaby",
+ "item": "Eviolite",
+ "ability": "Overcoat",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Defog"], ["Roost"], ["U-turn", "Whirlwind"], ["Foul Play"]]
+ }
+ ]
+ },
+ "basculin": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Basculin",
+ "item": "Choice Band",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Waterfall", "Aqua Tail"], ["Aqua Jet"], ["Crunch", "Zen Headbutt"], ["Double-Edge"]]
+ },
+ {
+ "species": "Basculin",
+ "item": "Life Orb",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "ivs": {"hp": 29, "atk": 31, "def": 31, "spa": 30, "spd": 31, "spe": 31},
+ "nature": "Naive",
+ "moves": [["Waterfall"], ["Aqua Jet"], ["Ice Beam"], ["Superpower"]]
+ },
+ {
+ "species": "Basculin",
+ "item": "Life Orb",
+ "ability": "Adaptability",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Waterfall"], ["Aqua Jet"], ["Ice Beam"], ["Hidden Power Electric"]]
+ }
+ ]
+ },
+ "gabite": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gabite",
+ "item": "Eviolite",
+ "ability": "Rough Skin",
+ "evs": {"hp": 248, "atk": 8, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Toxic", "Roar"], ["Dragon Claw"], ["Earthquake"]]
+ },
+ {
+ "species": "Gabite",
+ "item": "Eviolite",
+ "ability": "Rough Skin",
+ "evs": {"hp": 248, "atk": 220, "def": 0, "spa": 0, "spd": 0, "spe": 40},
+ "nature": "Adamant",
+ "moves": [["Stealth Rock"], ["Toxic", "Roar"], ["Dragon Claw"], ["Earthquake"]]
+ },
+ {
+ "species": "Gabite",
+ "item": "Eviolite",
+ "ability": "Rough Skin",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Earthquake"], ["Outrage"], ["Stealth Rock"], ["Stone Edge", "Toxic", "Roar"]]
+ }
+ ]
+ },
+ "gourgeistsmall": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Gourgeist-Small",
+ "item": "Leftovers",
+ "ability": "Frisk",
+ "evs": {"hp": 152, "atk": 0, "def": 104, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Leech Seed"], ["Substitute"], ["Foul Play", "Seed Bomb"], ["Will-O-Wisp", "Disable"]]
+ },
+ {
+ "species": "Gourgeist-Small",
+ "item": "Choice Scarf",
+ "ability": "Frisk",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Seed Bomb"], ["Trick"], ["Rock Slide"], ["Explosion", "Destiny Bond"]]
+ }
+ ]
+ },
+ "klang": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Klang",
+ "item": "Eviolite",
+ "ability": "Clear Body",
+ "evs": {"hp": 252, "atk": 0, "def": 156, "spa": 0, "spd": 100, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Rest"], ["Sleep Talk"], ["Shift Gear"], ["Gear Grind"]]
+ }
+ ]
+ },
+ "leafeon": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Leafeon",
+ "item": "Choice Band",
+ "ability": "Leaf Guard",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Leaf Blade"], ["Bullet Seed"], ["Knock Off"], ["Double-Edge", "Quick Attack"]]
+ },
+ {
+ "species": "Leafeon",
+ "item": "Yache Berry",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Leaf Blade"], ["Knock Off"], ["Synthesis", "Return"]]
+ },
+ {
+ "species": "Leafeon",
+ "item": "Occa Berry",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Swords Dance"], ["Leaf Blade"], ["Knock Off"], ["Synthesis", "Return"]]
+ },
+ {
+ "species": "Leafeon",
+ "item": "Choice Scarf",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Double-Edge", "Return"], ["Leaf Blade"], ["Knock Off"], ["Bullet Seed", "X-Scissor"]]
+ }
+ ]
+ },
+ "leavanny": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Leavanny",
+ "item": "Focus Sash",
+ "ability": "Chlorophyll",
+ "evs": {"hp": 0, "atk": 4, "def": 0, "spa": 252, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Leaf Storm"], ["Electroweb", "Magic Coat"], ["Sticky Web"], ["Knock Off"]]
+ }
+ ]
+ },
+ "metang": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Metang",
+ "item": "Eviolite",
+ "ability": "Clear Body",
+ "evs": {"hp": 248, "atk": 252, "def": 0, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Adamant",
+ "moves": [["Meteor Mash"], ["Stealth Rock"], ["Pursuit", "Bullet Punch"], ["Earthquake", "Zen Headbutt"]]
+ },
+ {
+ "species": "Metang",
+ "item": "Eviolite",
+ "ability": "Clear Body",
+ "evs": {"hp": 248, "atk": 0, "def": 0, "spa": 0, "spd": 252, "spe": 8},
+ "nature": "Careful",
+ "moves": [["Meteor Mash"], ["Stealth Rock"], ["Toxic"], ["Pursuit", "Bullet Punch", "Earthquake", "Zen Headbutt"]]
+ },
+ {
+ "species": "Metang",
+ "item": "Eviolite",
+ "ability": "Clear Body",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 0, "spe": 8},
+ "nature": "Impish",
+ "moves": [["Meteor Mash"], ["Stealth Rock"], ["Toxic"], ["Earthquake", "Zen Headbutt", "Pursuit", "Bullet Punch"]]
+ }
+ ]
+ },
+ "ninjask": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Ninjask",
+ "item": "Choice Band",
+ "ability": "Infiltrator",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["U-turn"], ["X-Scissor"], ["Aerial Ace"], ["Toxic"]]
+ }
+ ]
+ },
+ "purugly": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Purugly",
+ "item": "Life Orb",
+ "ability": "Defiant",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Return"], ["Fake Out"], ["Knock Off"], ["U-turn", "Sucker Punch", "Wake-Up Slap"]],
+ "happiness": 255
+ }
+ ]
+ },
+ "solrock": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Solrock",
+ "item": "Leftovers",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Will-O-Wisp"], ["Zen Headbutt", "Stone Edge"], ["Morning Sun"]]
+ },
+ {
+ "species": "Solrock",
+ "item": "Colbur Berry",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Stealth Rock"], ["Will-O-Wisp"], ["Stone Edge"], ["Morning Sun"]]
+ }
+ ]
+ },
+ "venipede": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Venipede",
+ "item": "Focus Sash",
+ "ability": "Speed Boost",
+ "evs": {"hp": 252, "atk": 0, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Timid",
+ "moves": [["Protect"], ["Spikes"], ["Toxic Spikes"], ["Endeavor"]]
+ }
+ ]
+ },
+ "armaldo": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Armaldo",
+ "item": "Leftovers",
+ "ability": "Battle Armor",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Rapid Spin"], ["Knock Off"], ["Stone Edge"], ["Toxic"]]
+ },
+ {
+ "species": "Armaldo",
+ "item": "Leftovers",
+ "ability": "Battle Armor",
+ "evs": {"hp": 248, "atk": 0, "def": 252, "spa": 0, "spd": 8, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Rapid Spin"], ["Knock Off"], ["Stone Edge"], ["Stealth Rock"]]
+ },
+ {
+ "species": "Armaldo",
+ "item": "Leftovers",
+ "ability": "Battle Armor",
+ "evs": {"hp": 248, "atk": 252, "def": 8, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Stone Edge"], ["Knock Off"], ["Rapid Spin"], ["Earthquake"]]
+ }
+ ]
+ },
+ "dusknoir": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Dusknoir",
+ "item": "Choice Band",
+ "ability": "Frisk",
+ "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Shadow Sneak"], ["Thunder Punch"], ["Earthquake"], ["Trick"]]
+ },
+ {
+ "species": "Dusknoir",
+ "item": "Spell Tag",
+ "ability": "Frisk",
+ "evs": {"hp": 252, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Adamant",
+ "moves": [["Shadow Sneak"], ["Thunder Punch"], ["Earthquake"], ["Will-O-Wisp"]]
+ }
+ ]
+ },
+ "huntail": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Huntail",
+ "item": "White Herb",
+ "ability": "Water Veil",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naughty",
+ "moves": [["Shell Smash"], ["Sucker Punch"], ["Waterfall"], ["Ice Beam"]]
+ },
+ {
+ "species": "Huntail",
+ "item": "White Herb",
+ "ability": "Swift Swim",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Shell Smash"], ["Sucker Punch"], ["Waterfall"], ["Double-Edge"]]
+ }
+ ]
+ },
+ "murkrow": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Murkrow",
+ "item": "Life Orb",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Brave Bird"], ["Sucker Punch"], ["Pursuit"], ["Thunder Wave"]]
+ },
+ {
+ "species": "Murkrow",
+ "item": "Life Orb",
+ "ability": "Prankster",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 4, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Brave Bird"], ["Sucker Punch"], ["Hidden Power Fighting"], ["Thunder Wave", "Pursuit"]]
+ }
+ ]
+ },
+ "vibrava": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Vibrava",
+ "item": "Eviolite",
+ "ability": "Levitate",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Earthquake"], ["U-turn", "Toxic"], ["Defog"], ["Roost"]]
+ }
+ ]
+ },
+ "zweilous": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Zweilous",
+ "item": "Eviolite",
+ "ability": "Hustle",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Rest"], ["Sleep Talk"], ["Crunch"], ["Dragon Tail", "Roar"]]
+ },
+ {
+ "species": "Zweilous",
+ "item": "Choice Band",
+ "ability": "Hustle",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Crunch"], ["Outrage"], ["Superpower"], ["Sleep Talk"]]
+ }
+ ]
+ },
+ "avalugg": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Avalugg",
+ "item": "Leftovers",
+ "ability": "Sturdy",
+ "evs": {"hp": 248, "atk": 0, "def": 8, "spa": 0, "spd": 252, "spe": 0},
+ "nature": "Careful",
+ "moves": [["Recover"], ["Rapid Spin"], ["Avalanche"], ["Roar", "Toxic"]]
+ }
+ ]
+ },
+ "electrode": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Electrode",
+ "item": "Life Orb",
+ "ability": "Soundproof",
+ "evs": {"hp": 0, "atk": 0, "def": 0, "spa": 252, "spd": 4, "spe": 252},
+ "nature": "Modest",
+ "moves": [["Thunderbolt"], ["Volt Switch"], ["Signal Beam"], ["Hidden Power Ice"]]
+ }
+ ]
+ },
+ "marowak": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Marowak",
+ "item": "Thick Club",
+ "ability": "Rock Head",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Bonemerang"], ["Knock Off"], ["Double-Edge"], ["Stealth Rock"]]
+ },
+ {
+ "species": "Marowak",
+ "item": "Thick Club",
+ "ability": "Rock Head",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Bonemerang"], ["Knock Off"], ["Double-Edge"], ["Stone Edge"]]
+ },
+ {
+ "species": "Marowak",
+ "item": "Thick Club",
+ "ability": "Rock Head",
+ "evs": {"hp": 0, "atk": 252, "def": 4, "spa": 0, "spd": 0, "spe": 252},
+ "nature": "Adamant",
+ "moves": [["Bonemerang"], ["Knock Off"], ["Stone Edge"], ["Stealth Rock"]]
+ }
+ ]
+ },
+ "quilladin": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Quilladin",
+ "item": "Eviolite",
+ "ability": "Bulletproof",
+ "evs": {"hp": 252, "atk": 4, "def": 252, "spa": 0, "spd": 0, "spe": 0},
+ "nature": "Impish",
+ "moves": [["Wood Hammer"], ["Spikes"], ["Synthesis"], ["Roar"]]
+ },
+ {
+ "species": "Quilladin",
+ "item": "Eviolite",
+ "ability": "Bulletproof",
+ "evs": {"hp": 0, "atk": 252, "def": 0, "spa": 0, "spd": 4, "spe": 252},
+ "nature": "Jolly",
+ "moves": [["Wood Hammer"], ["Taunt"], ["Spikes"], ["Zen Headbutt", "Drain Punch"]]
+ }
+ ]
+ },
+ "rampardos": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Rampardos",
+ "item": "Focus Sash",
+ "ability": "Mold Breaker",
+ "evs": {"hp": 0, "atk": 144, "def": 0, "spa": 112, "spd": 0, "spe": 252},
+ "nature": "Naive",
+ "moves": [["Stealth Rock"], ["Superpower"], ["Head Smash"], ["Surf"]]
+ }
+ ]
+ },
+ "drifblim": {
+ "flags": {},
+ "sets": [
+ {
+ "species": "Drifblim",
+ "item": "Liechi Berry",
+ "ability": "Unburden",
+ "evs": {"hp": 12, "atk": 244, "def": 0, "spa": 0, "spd": 40, "spe": 212},
+ "nature": "Adamant",
+ "moves": [["Substitute"], ["Acrobatics"], ["Knock Off"], ["Will-O-Wisp"]]
+ }
+ ]
+ }
+ }
+}
diff --git a/data/random-battles/gen6megasrevisited/sets.json b/data/random-battles/gen6megasrevisited/sets.json
new file mode 100644
index 0000000000..10fb1f136a
--- /dev/null
+++ b/data/random-battles/gen6megasrevisited/sets.json
@@ -0,0 +1,6301 @@
+{
+ "venusaur": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["gigadrain", "leechseed", "sleeppowder", "sludgebomb", "substitute"],
+ "abilities": ["Chlorophyll", "Overgrow"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "gigadrain", "sleeppowder", "sludgebomb", "synthesis"],
+ "abilities": ["Chlorophyll", "Overgrow"]
+ }
+ ]
+ },
+ "venusaurmega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["hiddenpowerground", "leafstorm", "sludgebomb", "synthesis"],
+ "abilities": ["Chlorophyll"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["gigadrain", "leechseed", "sleeppowder", "sludgebomb", "substitute"],
+ "abilities": ["Chlorophyll"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "gigadrain", "leechseed", "sludgebomb"],
+ "abilities": ["Chlorophyll"]
+ }
+ ]
+ },
+ "charizard": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["hurricane", "earthquake", "fireblast", "roost", "willowisp"],
+ "abilities": ["Blaze", "Solar Power"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "hurricane", "fireblast", "roost"],
+ "abilities": ["Blaze", "Solar Power"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"],
+ "abilities": ["Blaze"]
+ }
+ ]
+ },
+ "charizardmegax": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragonclaw", "dragondance", "earthquake", "flareblitz", "roost"],
+ "abilities": ["Blaze"]
+ }
+ ]
+ },
+ "charizardmegay": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hurricane", "fireblast", "roost", "focusblast"],
+ "abilities": ["Blaze"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "hurricane", "lavaplume", "roost"],
+ "abilities": ["Blaze"]
+ }
+ ]
+ },
+ "blastoise": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["icebeam", "rapidspin", "roar", "scald", "toxic"],
+ "abilities": ["Torrent"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["haze", "icebeam", "protect", "rapidspin", "scald", "toxic"],
+ "abilities": ["Torrent"]
+ }
+ ]
+ },
+ "blastoisemega": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["moonblast", "rapidspin", "scald", "taunt"],
+ "abilities": ["Rain Dish"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["moonblast", "rapidspin", "hydropump", "hiddenpowerfire"],
+ "abilities": ["Rain Dish"]
+ }
+ ]
+ },
+ "butterfree": {
+ "level": 92,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bugbuzz", "psychic", "quiverdance", "sleeppowder"],
+ "abilities": ["Tinted Lens"]
+ }
+ ]
+ },
+ "beedrill": {
+ "level": 94,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["defog", "knockoff", "poisonjab", "toxicspikes", "uturn", "stealthrock"],
+ "abilities": ["Swarm"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["poisonjab", "earthquake", "diamondstorm", "swordsdance"],
+ "abilities": ["Swarm"]
+ }
+ ]
+ },
+ "beedrillmega": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["diamondstorm", "earthquake", "roost", "uturn"],
+ "abilities": ["Swarm"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["diamondstorm", "earthquake", "roost", "uturn", "defog", "stealthrock"],
+ "abilities": ["Swarm"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["diamondstorm", "earthquake", "roost", "swordsdance"],
+ "abilities": ["Swarm"]
+ }
+ ]
+ },
+ "pidgeot": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "defog", "heatwave", "return", "roost", "uturn"],
+ "abilities": ["Big Pecks"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bravebird", "focusblast", "return", "workup"],
+ "abilities": ["Keen Eye"]
+ }
+ ]
+ },
+ "pidgeotmega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "focusblast", "hurricane", "roost", "uturn", "workup"],
+ "abilities": ["Big Pecks"]
+ }
+ ]
+ },
+ "raticate": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["crunch", "facade", "flamewheel", "protect", "suckerpunch", "swordsdance", "uturn"],
+ "abilities": ["Guts"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "fearow": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["doubleedge", "drillpeck", "drillrun", "return", "uturn"],
+ "abilities": ["Sniper"]
+ }
+ ]
+ },
+ "arbok": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aquatail", "coil", "earthquake", "gunkshot", "suckerpunch"],
+ "abilities": ["Intimidate"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["coil", "earthquake", "gunkshot", "rest"],
+ "abilities": ["Shed Skin"]
+ }
+ ]
+ },
+ "pikachu": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["extremespeed", "grassknot", "hiddenpowerice", "knockoff", "surf", "voltswitch", "volttackle"],
+ "abilities": ["Lightning Rod"]
+ }
+ ]
+ },
+ "raichu": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["encore", "hiddenpowerice", "knockoff", "nastyplot", "nuzzle", "thunderbolt", "voltswitch"],
+ "abilities": ["Lightning Rod"],
+ "preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "grassknot", "nastyplot", "surf", "thunderbolt", "voltswitch"],
+ "abilities": ["Lightning Rod"]
+ }
+ ]
+ },
+ "sandslash": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "knockoff", "rapidspin", "stealthrock", "stoneedge", "swordsdance", "toxic"],
+ "abilities": ["Sand Rush"]
+ }
+ ]
+ },
+ "nidoqueen": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "stealthrock", "toxicspikes"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "nidoking": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthpower", "fireblast", "icebeam", "poisonjab", "sludgewave", "substitute"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "clefable": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["aromatherapy", "knockoff", "moonblast", "softboiled", "stealthrock", "thunderwave"],
+ "abilities": ["Magic Guard", "Unaware"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "fireblast", "moonblast", "softboiled"],
+ "abilities": ["Magic Guard", "Unaware"]
+ }
+ ]
+ },
+ "ninetales": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["fireblast", "hiddenpowerrock", "nastyplot", "solarbeam"],
+ "abilities": ["Drought"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["fireblast", "nastyplot", "solarbeam", "substitute", "willowisp"],
+ "abilities": ["Drought"],
+ "preferredTypes": ["Grass"]
+ }
+ ]
+ },
+ "wigglytuff": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["dazzlinggleam", "fireblast", "healbell", "knockoff", "protect", "stealthrock", "thunderwave", "wish"],
+ "abilities": ["Competitive"]
+ }
+ ]
+ },
+ "vileplume": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["aromatherapy", "gigadrain", "hiddenpowerground", "sleeppowder", "sludgebomb", "synthesis"],
+ "abilities": ["Effect Spore"]
+ }
+ ]
+ },
+ "parasect": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aromatherapy", "knockoff", "seedbomb", "spore", "stunspore", "xscissor"],
+ "abilities": ["Dry Skin"],
+ "preferredTypes": ["Bug"]
+ }
+ ]
+ },
+ "venomoth": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bugbuzz", "quiverdance", "sleeppowder", "sludgebomb"],
+ "abilities": ["Tinted Lens"]
+ }
+ ]
+ },
+ "dugtrio": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["earthquake", "honeclaws", "stealthrock", "stoneedge", "suckerpunch"],
+ "abilities": ["Arena Trap"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["doubleedge", "earthquake", "stoneedge", "suckerpunch"],
+ "abilities": ["Arena Trap"]
+ }
+ ]
+ },
+ "persian": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["doubleedge", "knockoff", "return", "seedbomb", "uturn"],
+ "abilities": ["Limber"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["doubleedge", "fakeout", "knockoff", "return", "uturn"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hiddenpowerfighting", "hypervoice", "nastyplot", "shadowball"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "golduck": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "encore", "focusblast", "icebeam", "scald", "substitute"],
+ "abilities": ["Cloud Nine", "Swift Swim"],
+ "preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "encore", "focusblast", "hydropump", "icebeam"],
+ "abilities": ["Cloud Nine", "Swift Swim"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "primeape": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "earthquake", "gunkshot", "honeclaws", "stoneedge", "uturn"],
+ "abilities": ["Defiant"]
+ }
+ ]
+ },
+ "arcanine": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["closecombat", "extremespeed", "flareblitz", "morningsun", "roar", "toxic", "wildcharge", "willowisp"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "extremespeed", "flareblitz", "morningsun", "wildcharge"],
+ "abilities": ["Intimidate"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "poliwrath": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "icepunch", "raindance", "waterfall"],
+ "abilities": ["Swift Swim"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["circlethrow", "rest", "scald", "sleeptalk"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ },
+ "alakazam": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["counter", "focusblast", "psychic", "psyshock", "shadowball"],
+ "abilities": ["Magic Guard"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "encore", "focusblast", "psychic", "psyshock", "shadowball", "substitute"],
+ "abilities": ["Magic Guard"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "alakazammega": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "icebeam"],
+ "abilities": ["Magic Guard"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["substitute", "focusblast", "psychic", "psyshock", "icebeam"],
+ "abilities": ["Magic Guard"]
+ }
+ ]
+ },
+ "machamp": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bulkup", "bulletpunch", "dynamicpunch", "knockoff", "stoneedge"],
+ "abilities": ["No Guard"],
+ "preferredTypes": ["Dark"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["bulletpunch", "dynamicpunch", "knockoff", "stoneedge"],
+ "abilities": ["No Guard"]
+ }
+ ]
+ },
+ "victreebel": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerground", "knockoff", "powerwhip", "sleeppowder", "sludgebomb", "suckerpunch"],
+ "abilities": ["Chlorophyll"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["powerwhip", "sludgebomb", "sunnyday", "weatherball"],
+ "abilities": ["Chlorophyll"]
+ }
+ ]
+ },
+ "tentacruel": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["haze", "knockoff", "rapidspin", "scald", "sludgebomb", "toxicspikes"],
+ "abilities": ["Clear Body", "Liquid Ooze"]
+ }
+ ]
+ },
+ "golem": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "explosion", "stealthrock", "stoneedge", "suckerpunch", "toxic"],
+ "abilities": ["Sturdy"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["earthquake", "explosion", "rockpolish", "stoneedge", "suckerpunch"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "rapidash": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["drillrun", "flareblitz", "morningsun", "wildcharge", "willowisp"],
+ "abilities": ["Flame Body", "Flash Fire"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["drillrun", "flareblitz", "megahorn", "morningsun", "wildcharge"],
+ "abilities": ["Flash Fire"]
+ }
+ ]
+ },
+ "slowbro": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
+ "abilities": ["Regenerator"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["fireblast", "futuresight", "icebeam", "psyshock", "scald"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "slowbromega": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["futuresight", "fireblast", "scald", "slackoff"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "farfetchd": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bravebird", "knockoff", "leafblade", "return", "swordsdance"],
+ "abilities": ["Defiant"]
+ }
+ ]
+ },
+ "dodrio": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["bravebird", "doubleedge", "knockoff", "quickattack", "return"],
+ "abilities": ["Early Bird"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bravebird", "knockoff", "return", "roost"],
+ "abilities": ["Early Bird"]
+ }
+ ]
+ },
+ "dewgong": {
+ "level": 94,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["icebeam", "protect", "surf", "toxic"],
+ "abilities": ["Thick Fat"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["encore", "icebeam", "surf", "toxic"],
+ "abilities": ["Thick Fat"]
+ }
+ ]
+ },
+ "muk": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["brickbreak", "curse", "gunkshot", "haze", "icepunch", "poisonjab", "shadowsneak"],
+ "abilities": ["Poison Touch"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "cloyster": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hydropump", "iciclespear", "rockblast", "shellsmash"],
+ "abilities": ["Skill Link"]
+ }
+ ]
+ },
+ "gengar": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "shadowball", "sludgewave", "substitute", "trick", "willowisp"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "shadowball", "sludgewave", "calmmind"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "gengarmega": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "shadowball", "sludgewave", "calmmind"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "hex", "sludgebomb", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "hypno": {
+ "level": 96,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["focusblast", "foulplay", "protect", "psychic", "thunderwave", "toxic", "wish"],
+ "abilities": ["Insomnia"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["protect", "seismictoss", "toxic", "wish"],
+ "abilities": ["Insomnia"]
+ }
+ ]
+ },
+ "kingler": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["agility", "crabhammer", "knockoff", "rockslide", "superpower", "swordsdance", "xscissor"],
+ "abilities": ["Hyper Cutter", "Sheer Force"]
+ }
+ ]
+ },
+ "electrode": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["foulplay", "hiddenpowerice", "signalbeam", "taunt", "thunderbolt", "voltswitch"],
+ "abilities": ["Aftermath", "Static"],
+ "preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["hiddenpowerice", "thunderbolt", "thunderwave", "toxic", "voltswitch"],
+ "abilities": ["Aftermath", "Static"]
+ }
+ ]
+ },
+ "exeggutor": {
+ "level": 92,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["gigadrain", "hiddenpowerfire", "leechseed", "psychic", "sleeppowder", "substitute"],
+ "abilities": ["Harvest"],
+ "preferredTypes": ["Psychic"]
+ }
+ ]
+ },
+ "marowak": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["doubleedge", "earthquake", "knockoff", "stealthrock", "stoneedge", "swordsdance"],
+ "abilities": ["Battle Armor", "Rock Head"],
+ "preferredTypes": ["Rock"]
+ }
+ ]
+ },
+ "hitmonlee": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["highjumpkick", "knockoff", "machpunch", "poisonjab", "rapidspin", "stoneedge"],
+ "abilities": ["Reckless"],
+ "preferredTypes": ["Dark"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bulkup", "closecombat", "knockoff", "poisonjab", "stoneedge"],
+ "abilities": ["Unburden"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "hitmonchan": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bulkup", "drainpunch", "icepunch", "machpunch", "rapidspin", "stoneedge"],
+ "abilities": ["Iron Fist"]
+ }
+ ]
+ },
+ "weezing": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["fireblast", "painsplit", "sludgebomb", "toxicspikes", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "rhydon": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "megahorn", "stealthrock", "stoneedge", "swordsdance", "toxic"],
+ "abilities": ["Lightning Rod"]
+ }
+ ]
+ },
+ "chansey": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["aromatherapy", "seismictoss", "softboiled", "stealthrock", "thunderwave", "toxic", "wish"],
+ "abilities": ["Natural Cure"]
+ }
+ ]
+ },
+ "kangaskhan": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["doubleedge", "drainpunch", "earthquake", "fakeout", "return", "suckerpunch"],
+ "abilities": ["Scrappy"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["drainpunch", "earthquake", "fakeout", "return", "suckerpunch"],
+ "abilities": ["Scrappy"]
+ }
+ ]
+ },
+ "kangaskhanmega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["bodyslam", "milkdrink", "earthquake", "suckerpunch"],
+ "abilities": ["Scrappy"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["return", "earthquake", "poweruppunch", "suckerpunch"],
+ "abilities": ["Scrappy"]
+ }
+ ]
+ },
+ "seaking": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["drillrun", "icebeam", "knockoff", "megahorn", "waterfall"],
+ "abilities": ["Lightning Rod"],
+ "preferredTypes": ["Dark"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["drillrun", "icebeam", "knockoff", "megahorn", "raindance", "waterfall"],
+ "abilities": ["Swift Swim"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "starmie": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hydropump", "icebeam", "psyshock", "recover", "thunderbolt"],
+ "abilities": ["Analytic", "Natural Cure"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["psyshock", "rapidspin", "recover", "scald", "thunderwave", "toxic"],
+ "abilities": ["Natural Cure"]
+ }
+ ]
+ },
+ "mrmime": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"],
+ "abilities": ["Filter"],
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"],
+ "abilities": ["Filter"]
+ }
+ ]
+ },
+ "scyther": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aerialace", "brickbreak", "knockoff", "pursuit", "uturn"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aerialace", "brickbreak", "bugbite", "knockoff", "roost", "swordsdance"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "jynx": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "icebeam", "lovelykiss", "psychic", "psyshock", "trick"],
+ "abilities": ["Dry Skin"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "icebeam", "lovelykiss", "nastyplot", "psyshock"],
+ "abilities": ["Dry Skin"]
+ }
+ ]
+ },
+ "pinsir": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "earthquake", "knockoff", "stealthrock", "stoneedge", "swordsdance", "xscissor"],
+ "abilities": ["Moxie"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "pinsirmega": {
+ "level": 73,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["closecombat", "iceshard", "iciclecrash", "swordsdance"],
+ "abilities": ["Hyper Cutter"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "iceshard", "iciclecrash", "uturn"],
+ "abilities": ["Hyper Cutter"]
+ }
+ ]
+ },
+ "tauros": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["bodyslam", "earthquake", "fireblast", "rockslide", "zenheadbutt"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["doubleedge", "earthquake", "stoneedge", "zenheadbutt"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "gyarados": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "earthquake", "stoneedge", "substitute", "waterfall"],
+ "abilities": ["Intimidate", "Moxie"]
+ }
+ ]
+ },
+ "gyaradosmega": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["doubleedge", "dragondance", "earthquake", "substitute", "waterfall"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "lapras": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["freezedry", "healbell", "hydropump", "icebeam", "toxic"],
+ "abilities": ["Water Absorb"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["freezedry", "hydropump", "protect", "toxic"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ },
+ "ditto": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["transform"],
+ "abilities": ["Imposter"]
+ }
+ ]
+ },
+ "vaporeon": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["healbell", "icebeam", "protect", "scald", "wish"],
+ "abilities": ["Water Absorb"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["protect", "scald", "toxic", "wish"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ },
+ "jolteon": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hiddenpowerice", "shadowball", "thunderbolt", "voltswitch"],
+ "abilities": ["Volt Absorb"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerice", "signalbeam", "thunderbolt", "voltswitch"],
+ "abilities": ["Volt Absorb"]
+ }
+ ]
+ },
+ "flareon": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["facade", "flamecharge", "flareblitz", "quickattack", "superpower"],
+ "abilities": ["Guts"]
+ }
+ ]
+ },
+ "omastar": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "shellsmash"],
+ "abilities": ["Shell Armor", "Swift Swim"]
+ }
+ ]
+ },
+ "kabutops": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["aquajet", "knockoff", "rapidspin", "stoneedge", "waterfall"],
+ "abilities": ["Battle Armor", "Swift Swim"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aquajet", "knockoff", "stoneedge", "swordsdance", "waterfall"],
+ "abilities": ["Weak Armor"]
+ }
+ ]
+ },
+ "aerodactyl": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "earthquake", "roost", "stealthrock", "stoneedge", "taunt", "toxic"],
+ "abilities": ["Unnerve"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["aerialace", "aquatail", "defog", "earthquake", "roost", "stealthrock", "stoneedge"],
+ "abilities": ["Unnerve"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "aerodactylmega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hurricane", "earthquake", "honeclaws", "roost", "stoneedge"],
+ "abilities": ["Unnerve"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "snorlax": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["bodyslam", "crunch", "curse", "earthquake", "rest", "sleeptalk"],
+ "abilities": ["Thick Fat"]
+ }
+ ]
+ },
+ "articuno": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["freezedry", "roost", "substitute", "toxic"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["freezedry", "hurricane", "roost", "substitute", "toxic"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "zapdos": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "discharge", "heatwave", "hiddenpowerice", "roost", "toxic", "uturn"],
+ "abilities": ["Static"]
+ }
+ ]
+ },
+ "moltres": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "fireblast", "hurricane", "roost", "toxic", "uturn", "willowisp"],
+ "abilities": ["Flame Body"]
+ }
+ ]
+ },
+ "dragonite": {
+ "level": 73,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "earthquake", "ironhead", "outrage", "roost"],
+ "abilities": ["Multiscale"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "mewtwo": {
+ "level": 70,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"],
+ "abilities": ["Unnerve"]
+ }
+ ]
+ },
+ "mewtwomegax": {
+ "level": 69,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bulkup", "drainpunch", "stoneedge", "taunt", "zenheadbutt"],
+ "abilities": ["Unnerve"]
+ }
+ ]
+ },
+ "mewtwomegay": {
+ "level": 69,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"],
+ "abilities": ["Unnerve"]
+ }
+ ]
+ },
+ "mew": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["defog", "knockoff", "psychic", "roost", "stealthrock", "taunt", "uturn", "willowisp"],
+ "abilities": ["Synchronize"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aurasphere", "earthpower", "fireblast", "nastyplot", "psychic", "psyshock", "roost"],
+ "abilities": ["Synchronize"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["drainpunch", "knockoff", "swordsdance", "zenheadbutt"],
+ "abilities": ["Synchronize"]
+ }
+ ]
+ },
+ "meganium": {
+ "level": 92,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["aromatherapy", "dragontail", "earthquake", "energyball", "leechseed", "synthesis", "toxic"],
+ "abilities": ["Overgrow"]
+ }
+ ]
+ },
+ "typhlosion": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["eruption", "fireblast", "focusblast", "hiddenpowergrass", "hiddenpowerrock"],
+ "abilities": ["Flash Fire"]
+ }
+ ]
+ },
+ "feraligatr": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["crunch", "dragondance", "earthquake", "icepunch", "waterfall"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "furret": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["aquatail", "doubleedge", "firepunch", "knockoff", "trick", "uturn"],
+ "abilities": ["Frisk"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "noctowl": {
+ "level": 95,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["airslash", "defog", "hypervoice", "roost", "toxic"],
+ "abilities": ["Tinted Lens"],
+ "preferredTypes": ["Normal"]
+ }
+ ]
+ },
+ "ledian": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["encore", "focusblast", "knockoff", "roost", "toxic"],
+ "abilities": ["Early Bird"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "ariados": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["megahorn", "poisonjab", "stickyweb", "suckerpunch", "toxicspikes"],
+ "abilities": ["Insomnia", "Swarm"]
+ }
+ ]
+ },
+ "crobat": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "defog", "roost", "superfang", "taunt", "toxic", "uturn"],
+ "abilities": ["Infiltrator"]
+ }
+ ]
+ },
+ "lanturn": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["healbell", "icebeam", "scald", "thunderbolt", "toxic", "voltswitch"],
+ "abilities": ["Volt Absorb"]
+ }
+ ]
+ },
+ "xatu": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "heatwave", "psychic", "roost"],
+ "abilities": ["Magic Bounce"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["heatwave", "psychic", "roost", "thunderwave", "toxic", "uturn"],
+ "abilities": ["Magic Bounce"]
+ }
+ ]
+ },
+ "ampharos": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["focusblast", "healbell", "slackoff", "thunderbolt", "toxic", "voltswitch", "defog"],
+ "abilities": ["Static"]
+ }
+ ]
+ },
+ "ampharosmega": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["agility", "dragonpulse", "aurasphere", "thunderbolt", "voltswitch"],
+ "abilities": ["Static"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["dragonpulse", "aurasphere", "slackoff", "voltswitch", "thunderbolt", "defog"],
+ "abilities": ["Static"]
+ }
+ ]
+ },
+ "bellossom": {
+ "level": 96,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["gigadrain", "hiddenpowerground", "leechseed", "moonblast", "sleeppowder", "sludgebomb", "synthesis", "toxic"],
+ "abilities": ["Chlorophyll"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["drainpunch", "leafblade", "return", "swordsdance"],
+ "abilities": ["Chlorophyll"]
+ }
+ ]
+ },
+ "azumarill": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquajet", "bellydrum", "knockoff", "playrough", "superpower", "waterfall"],
+ "abilities": ["Huge Power"]
+ }
+ ]
+ },
+ "sudowoodo": {
+ "level": 94,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "stealthrock", "stoneedge", "suckerpunch", "toxic", "woodhammer"],
+ "abilities": ["Rock Head"],
+ "preferredTypes": ["Grass"]
+ }
+ ]
+ },
+ "politoed": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["encore", "icebeam", "protect", "scald", "toxic"],
+ "abilities": ["Drizzle"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["encore", "icebeam", "rest", "scald", "toxic"],
+ "abilities": ["Drizzle"]
+ }
+ ]
+ },
+ "jumpluff": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["acrobatics", "leechseed", "protect", "substitute"],
+ "abilities": ["Infiltrator"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["acrobatics", "encore", "sleeppowder", "toxic", "uturn"],
+ "abilities": ["Infiltrator"]
+ }
+ ]
+ },
+ "sunflora": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthpower", "hiddenpowerfire", "hiddenpowerice", "hiddenpowerrock", "leafstorm", "sludgebomb"],
+ "abilities": ["Chlorophyll"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthpower", "hiddenpowerfire", "solarbeam", "sunnyday"],
+ "abilities": ["Chlorophyll"]
+ }
+ ]
+ },
+ "quagsire": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "icebeam", "recover", "scald", "toxic"],
+ "abilities": ["Unaware"]
+ }
+ ]
+ },
+ "espeon": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "dazzlinggleam", "morningsun", "psychic", "psyshock", "shadowball", "trick"],
+ "abilities": ["Magic Bounce"],
+ "preferredTypes": ["Fairy"]
+ }
+ ]
+ },
+ "umbreon": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["foulplay", "protect", "toxic", "wish"],
+ "abilities": ["Synchronize"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["foulplay", "healbell", "moonlight", "toxic"],
+ "abilities": ["Synchronize"]
+ }
+ ]
+ },
+ "murkrow": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["bravebird", "defog", "foulplay", "haze", "roost", "thunderwave"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "slowking": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
+ "abilities": ["Regenerator"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["dragontail", "fireblast", "futuresight", "icebeam", "psyshock", "scald"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "unown": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerfighting", "hiddenpowerpsychic"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "wobbuffet": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["counter", "destinybond", "encore", "mirrorcoat"],
+ "abilities": ["Shadow Tag"]
+ }
+ ]
+ },
+ "girafarig": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dazzlinggleam", "hypervoice", "nastyplot", "psychic", "psyshock", "substitute", "thunderbolt"],
+ "abilities": ["Sap Sipper"],
+ "preferredTypes": ["Psychic"]
+ }
+ ]
+ },
+ "forretress": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["gyroball", "rapidspin", "spikes", "stealthrock", "toxic"],
+ "abilities": ["Sturdy"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["gyroball", "rapidspin", "stealthrock", "toxicspikes", "voltswitch"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "dunsparce": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "glare", "headbutt", "roost"],
+ "abilities": ["Serene Grace"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bodyslam", "coil", "earthquake", "roost"],
+ "abilities": ["Serene Grace"]
+ }
+ ]
+ },
+ "gligar": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["defog", "earthquake", "knockoff", "roost", "stealthrock", "toxic", "uturn"],
+ "abilities": ["Immunity"]
+ }
+ ]
+ },
+ "steelix": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthquake", "ironhead", "roar", "rockslide", "stealthrock", "toxic"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Steel"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "heavyslam", "protect", "toxic"],
+ "abilities": ["Sturdy"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "heavyslam", "roar", "stealthrock", "toxic", "rapidspin"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "steelixmega": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["heatcrash", "earthquake", "heavyslam", "stealthrock", "toxic"],
+ "abilities": ["Sturdy"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "heavyslam", "rest", "sleeptalk"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "granbull": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "healbell", "playrough", "thunderwave", "toxic"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "qwilfish": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "scizor": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bugbite", "bulletpunch", "knockoff", "roost", "superpower", "swordsdance"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["bulletpunch", "defog", "knockoff", "roost", "superpower", "uturn"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bulletpunch", "knockoff", "pursuit", "superpower", "uturn"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "scizormega": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bugbite", "bulletpunch", "knockoff", "roost", "superpower", "swordsdance"],
+ "abilities": ["Light Metal"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["bulletpunch", "defog", "knockoff", "roost", "superpower", "uturn"],
+ "abilities": ["Light Metal"]
+ }
+ ]
+ },
+ "shuckle": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["encore", "knockoff", "stealthrock", "stickyweb", "toxic"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "heracross": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["closecombat", "facade", "knockoff", "megahorn", "icepunch"],
+ "abilities": ["Guts"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "knockoff", "megahorn", "stoneedge", "icepunch"],
+ "abilities": ["Moxie"]
+ }
+ ]
+ },
+ "heracrossmega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["closecombat", "earthquake", "knockoff", "megahorn", "healorder", "icepunch", "swordsdance"],
+ "abilities": ["Moxie"],
+ "preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["circlethrow", "spikes", "knockoff", "healorder"],
+ "abilities": ["Moxie"]
+ }
+ ]
+ },
+ "ursaring": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["closecombat", "crunch", "facade", "protect"],
+ "abilities": ["Guts"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["closecombat", "crunch", "facade", "swordsdance"],
+ "abilities": ["Quick Feet"]
+ }
+ ]
+ },
+ "magcargo": {
+ "level": 98,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["ancientpower", "lavaplume", "recover", "stealthrock", "toxic"],
+ "abilities": ["Flame Body"]
+ }
+ ]
+ },
+ "corsola": {
+ "level": 99,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["powergem", "recover", "scald", "stealthrock", "toxic"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "octillery": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["energyball", "fireblast", "gunkshot", "hydropump", "icebeam", "scald"],
+ "abilities": ["Sniper"],
+ "preferredTypes": ["Poison"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["energyball", "fireblast", "gunkshot", "icebeam", "scald", "thunderwave"],
+ "abilities": ["Sniper"],
+ "preferredTypes": ["Poison"]
+ }
+ ]
+ },
+ "delibird": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["destinybond", "freezedry", "rapidspin", "spikes"],
+ "abilities": ["Insomnia", "Vital Spirit"]
+ }
+ ]
+ },
+ "mantine": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["airslash", "defog", "haze", "rest", "scald", "toxic"],
+ "abilities": ["Water Absorb"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["rest", "scald", "sleeptalk", "toxic"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ },
+ "skarmory": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["bravebird", "roost", "spikes", "stealthrock", "whirlwind"],
+ "abilities": ["Sturdy"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "roost", "spikes", "stealthrock", "toxic"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "houndoom": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["darkpulse", "fireblast", "nastyplot", "sludgebomb", "suckerpunch", "toxicspikes"],
+ "abilities": ["Flash Fire"]
+ }
+ ]
+ },
+ "houndoommega": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["darkpulse", "fireblast", "nastyplot", "sludgebomb", "taunt"],
+ "abilities": ["Flash Fire"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["darkpulse", "fireblast", "toxicspikes", "sludgebomb"],
+ "abilities": ["Flash Fire"]
+ }
+ ]
+ },
+ "kingdra": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dracometeor", "hydropump", "icebeam", "raindance", "waterfall"],
+ "abilities": ["Swift Swim"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["dragondance", "ironhead", "outrage", "waterfall"],
+ "abilities": ["Sniper", "Swift Swim"]
+ }
+ ]
+ },
+ "donphan": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "knockoff", "rapidspin", "stealthrock", "stoneedge", "toxic"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "porygon2": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["discharge", "icebeam", "recover", "toxic", "triattack"],
+ "abilities": ["Download", "Trace"]
+ }
+ ]
+ },
+ "stantler": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "suckerpunch", "thunderwave"],
+ "abilities": ["Intimidate"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "smeargle": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["nuzzle", "spikes", "spore", "stealthrock", "stickyweb", "whirlwind"],
+ "abilities": ["Own Tempo"]
+ }
+ ]
+ },
+ "hitmontop": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["closecombat", "earthquake", "rapidspin", "stoneedge", "suckerpunch", "toxic"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "miltank": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bodyslam", "curse", "earthquake", "healbell", "milkdrink", "stealthrock", "toxic"],
+ "abilities": ["Sap Sipper", "Thick Fat"]
+ }
+ ]
+ },
+ "blissey": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["aromatherapy", "seismictoss", "softboiled", "stealthrock", "thunderwave", "toxic"],
+ "abilities": ["Natural Cure"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["protect", "seismictoss", "toxic", "wish"],
+ "abilities": ["Natural Cure"]
+ }
+ ]
+ },
+ "raikou": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aurasphere", "hiddenpowerice", "thunderbolt", "voltswitch"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["aurasphere", "calmmind", "hiddenpowerice", "substitute", "thunderbolt"],
+ "abilities": ["Pressure"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "entei": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["bulldoze", "extremespeed", "flareblitz", "sacredfire"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["extremespeed", "flareblitz", "sacredfire", "stoneedge"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "suicune": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "rest", "scald", "sleeptalk"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "icebeam", "rest", "scald", "substitute"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["calmmind", "protect", "scald", "substitute"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "tyranitar": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["crunch", "earthquake", "fireblast", "icebeam", "pursuit", "stealthrock", "stoneedge"],
+ "abilities": ["Sand Stream"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["crunch", "dragondance", "earthquake", "firepunch", "icepunch", "stoneedge"],
+ "abilities": ["Sand Stream"]
+ }
+ ]
+ },
+ "tyranitarmega": {
+ "level": 75,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "superpower", "icepunch", "wildcharge"],
+ "abilities": ["Sand Stream"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["stealthrock", "earthquake", "icepunch", "wildcharge"],
+ "abilities": ["Sand Stream"]
+ }
+ ]
+ },
+ "lugia": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["aeroblast", "defog", "earthquake", "roost", "substitute", "toxic", "whirlwind"],
+ "abilities": ["Multiscale"]
+ }
+ ]
+ },
+ "hooh": {
+ "level": 69,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "defog", "earthquake", "roost", "sacredfire", "substitute", "toxic"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "celebi": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthpower", "gigadrain", "leafstorm", "nastyplot", "psychic", "uturn"],
+ "abilities": ["Natural Cure"],
+ "preferredTypes": ["Psychic"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["leafstorm", "psychic", "recover", "stealthrock", "thunderwave", "uturn"],
+ "abilities": ["Natural Cure"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["leafstorm", "nastyplot", "psychic", "recover"],
+ "abilities": ["Natural Cure"]
+ }
+ ]
+ },
+ "sceptile": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "focusblast", "gigadrain", "hiddenpowerfire", "hiddenpowerice", "leafstorm", "rockslide"],
+ "abilities": ["Overgrow"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "gigadrain", "hiddenpowerfire", "hiddenpowerice", "calmmind"],
+ "abilities": ["Unburden"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["gigadrain", "hiddenpowerfire", "hiddenpowerice", "leechseed", "substitute"],
+ "abilities": ["Overgrow"]
+ }
+ ]
+ },
+ "sceptilemega": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "leafstorm", "dragonpulse", "sludgewave"],
+ "abilities": ["Overgrow"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "gigadrain", "dragonpulse", "calmmind"],
+ "abilities": ["Overgrow"]
+ }
+ ]
+ },
+ "combusken": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["flareblitz", "focusblast", "hiddenpowerelectric", "protect", "hiddenpowerice"],
+ "abilities": ["Speed Boost"]
+ }
+ ]
+ },
+ "blaziken": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["flareblitz", "closecombat", "knockoff", "stoneedge", "swordsdance"],
+ "abilities": ["Blaze"]
+ }
+ ]
+ },
+ "blazikenmega": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["flareblitz", "closecombat", "knockoff", "stoneedge", "swordsdance"],
+ "abilities": ["Blaze"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["flareblitz", "closecombat", "knockoff", "spikes", "uturn"],
+ "abilities": ["Blaze"]
+ }
+ ]
+ },
+ "swampert": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "icebeam", "roar", "scald", "stealthrock", "toxic", "toxicspikes"],
+ "abilities": ["Torrent"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "protect", "scald", "toxic"],
+ "abilities": ["Torrent"]
+ }
+ ]
+ },
+ "swampertmega": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "poisonjab", "substitute", "superpower", "waterfall", "toxicspikes"],
+ "abilities": ["Damp"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bulkup", "gunkshot", "earthquake", "waterfall"],
+ "abilities": ["Damp"]
+ }
+ ]
+ },
+ "mightyena": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["crunch", "irontail", "playrough", "suckerpunch", "toxic"],
+ "abilities": ["Intimidate"],
+ "preferredTypes": ["Fairy"]
+ }
+ ]
+ },
+ "linoone": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bellydrum", "extremespeed", "seedbomb", "shadowclaw"],
+ "abilities": ["Quick Feet"]
+ }
+ ]
+ },
+ "beautifly": {
+ "level": 99,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aircutter", "bugbuzz", "hiddenpowerground", "quiverdance"],
+ "abilities": ["Swarm"]
+ }
+ ]
+ },
+ "dustox": {
+ "level": 96,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bugbuzz", "hiddenpowerground", "quiverdance", "roost", "sludgebomb"],
+ "abilities": ["Shield Dust"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["bugbuzz", "defog", "roost", "toxic", "uturn"],
+ "abilities": ["Shield Dust"]
+ }
+ ]
+ },
+ "ludicolo": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["gigadrain", "hydropump", "icebeam", "raindance"],
+ "abilities": ["Swift Swim"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["energyball", "hydropump", "icebeam", "scald"],
+ "abilities": ["Swift Swim"]
+ }
+ ]
+ },
+ "shiftry": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["defog", "knockoff", "leafstorm", "lowkick", "suckerpunch"],
+ "abilities": ["Chlorophyll", "Pickpocket"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["knockoff", "leafblade", "lowkick", "suckerpunch", "swordsdance"],
+ "abilities": ["Chlorophyll", "Pickpocket"]
+ }
+ ]
+ },
+ "swellow": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bravebird", "facade", "protect", "uturn"],
+ "abilities": ["Guts"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["bravebird", "facade", "quickattack", "uturn"],
+ "abilities": ["Guts"]
+ }
+ ]
+ },
+ "pelipper": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "hurricane", "knockoff", "roost", "scald", "toxic", "uturn"],
+ "abilities": ["Rain Dish"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "knockoff", "roost", "scald", "toxic", "uturn"],
+ "abilities": ["Rain Dish"]
+ }
+ ]
+ },
+ "gardevoir": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "focusblast", "healingwish", "moonblast", "psychic", "shadowball", "thunderbolt", "trick"],
+ "abilities": ["Trace"],
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["willowisp", "healingwish", "rapidspin", "psychic", "moonblast"],
+ "abilities": ["Trace"],
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "focusblast", "moonblast", "psyshock", "substitute", "willowisp"],
+ "abilities": ["Trace"]
+ }
+ ]
+ },
+ "gardevoirmega": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "encore", "focusblast", "hypervoice", "psyshock", "taunt", "willowisp", "mysticalfire"],
+ "abilities": ["Trace"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "hypervoice", "psyshock", "substitute", "taunt", "willowisp", "rapidspin"],
+ "abilities": ["Trace"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "masquerain": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["airslash", "bugbuzz", "hydropump", "quiverdance"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["airslash", "bugbuzz", "roost", "scald", "stickyweb", "stunspore", "uturn"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "breloom": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bulletseed", "machpunch", "rocktomb", "spore", "swordsdance"],
+ "abilities": ["Technician"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bulletseed", "machpunch", "rocktomb", "swordsdance"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "vigoroth": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bodyslam", "bulkup", "earthquake", "return", "shadowclaw", "slackoff"],
+ "abilities": ["Vital Spirit"]
+ }
+ ]
+ },
+ "slaking": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "gigaimpact", "nightslash", "retaliate"],
+ "abilities": ["Truant"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["doubleedge", "earthquake", "gigaimpact", "pursuit"],
+ "abilities": ["Truant"]
+ }
+ ]
+ },
+ "ninjask": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aerialace", "nightslash", "swordsdance", "uturn", "xscissor"],
+ "abilities": ["Infiltrator"]
+ }
+ ]
+ },
+ "shedinja": {
+ "level": 95,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["shadowclaw", "shadowsneak", "swordsdance", "willowisp", "xscissor"],
+ "abilities": ["Wonder Guard"]
+ }
+ ]
+ },
+ "exploud": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["boomburst", "fireblast", "focusblast", "surf"],
+ "abilities": ["Scrappy"]
+ }
+ ]
+ },
+ "hariyama": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "AV Pivot",
+ "movepool": ["bulletpunch", "closecombat", "heavyslam", "knockoff", "stoneedge"],
+ "abilities": ["Guts", "Thick Fat"],
+ "preferredTypes": ["Dark"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["bulletpunch", "closecombat", "facade", "fakeout", "knockoff"],
+ "abilities": ["Guts"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "delcatty": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["doubleedge", "fakeout", "healbell", "suckerpunch", "thunderwave", "toxic"],
+ "abilities": ["Wonder Skin"]
+ }
+ ]
+ },
+ "sableye": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["foulplay", "knockoff", "recover", "taunt", "willowisp"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "sableyemega": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "darkpulse", "recover", "willowisp"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "mawile": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["ironhead", "knockoff", "playrough", "stealthrock", "suckerpunch", "swordsdance", "slackoff", "rockslide"],
+ "abilities": ["Intimidate", "Sheer Force"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "playrough", "stealthrock", "slackoff"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "mawilemega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["ironhead", "knockoff", "playrough", "stealthrock", "suckerpunch", "swordsdance", "slackoff", "rockslide"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["ironhead", "knockoff", "playrough", "firepunch", "suckerpunch", "swordsdance", "rockslide"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "aggron": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "voltswitch"],
+ "abilities": ["Rock Head"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"],
+ "abilities": ["Rock Head"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "aggronmega": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "heavyslam", "roar", "stealthrock", "stoneedge", "thunderwave", "toxic"],
+ "abilities": ["Sturdy"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["voltswitch", "earthquake", "stoneedge", "heavyslam", "stealthrock", "toxic", "protect"],
+ "abilities": ["Rock Head"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "medicham": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bulletpunch", "closecombat", "icepunch", "gunkshot", "zenheadbutt", "healingwish"],
+ "abilities": ["Pure Power"]
+ }
+ ]
+ },
+ "medichammega": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "psychic", "psyshock", "thunderbolt", "shadowball", "vacuumwave"],
+ "abilities": ["Telepathy"],
+ "preferredTypes": ["Ghost"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "psychic", "recover", "vacuumwave"],
+ "abilities": ["Telepathy"]
+ }
+ ]
+ },
+ "manectric": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["flamethrower", "hiddenpowerice", "overheat", "thunderbolt", "voltswitch"],
+ "abilities": ["Lightning Rod"]
+ }
+ ]
+ },
+ "manectricmega": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hiddenpowerice", "overheat", "thunderbolt", "voltswitch"],
+ "abilities": ["Lightning Rod"]
+ }
+ ]
+ },
+ "plusle": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["encore", "hiddenpowerice", "nastyplot", "substitute", "thunderbolt"],
+ "abilities": ["Lightning Rod"],
+ "preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["grassknot", "hiddenpowerice", "nastyplot", "thunderbolt"],
+ "abilities": ["Lightning Rod"]
+ }
+ ]
+ },
+ "minun": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["encore", "hiddenpowerice", "nastyplot", "substitute", "thunderbolt"],
+ "abilities": ["Volt Absorb"],
+ "preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["grassknot", "hiddenpowerice", "nastyplot", "thunderbolt"],
+ "abilities": ["Volt Absorb"]
+ }
+ ]
+ },
+ "volbeat": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["encore", "roost", "thunderwave", "uturn"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "illumise": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["bugbuzz", "encore", "roost", "thunderwave"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "swalot": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "encore", "icebeam", "painsplit", "sludgebomb", "toxic", "yawn"],
+ "abilities": ["Liquid Ooze"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "protect", "sludgebomb", "toxic"],
+ "abilities": ["Liquid Ooze"]
+ }
+ ]
+ },
+ "sharpedo": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["crunch", "destinybond", "earthquake", "icebeam", "protect", "waterfall"],
+ "abilities": ["Speed Boost"]
+ }
+ ]
+ },
+ "sharpedomega": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["thunder", "blizzard", "protect", "hydropump"],
+ "abilities": ["Speed Boost"]
+ }
+ ]
+ },
+ "wailord": {
+ "level": 93,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "waterspout"],
+ "abilities": ["Water Veil"]
+ }
+ ]
+ },
+ "camerupt": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "fireblast", "rockpolish", "stoneedge"],
+ "abilities": ["Solid Rock"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "lavaplume", "morningsun", "roar", "stealthrock", "toxic"],
+ "abilities": ["Solid Rock"]
+ }
+ ]
+ },
+ "cameruptmega": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["morningsun", "earthpower", "fireblast", "stealthrock", "toxic", "willowisp"],
+ "abilities": ["Solid Rock"]
+ }
+ ]
+ },
+ "torkoal": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "lavaplume", "rapidspin", "stealthrock", "yawn"],
+ "abilities": ["Shell Armor"]
+ }
+ ]
+ },
+ "grumpig": {
+ "level": 92,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["focusblast", "healbell", "psychic", "thunderwave", "toxic", "whirlwind"],
+ "abilities": ["Thick Fat"]
+ }
+ ]
+ },
+ "spinda": {
+ "level": 97,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["rest", "return", "sleeptalk", "suckerpunch", "superpower", "thief"],
+ "abilities": ["Contrary"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "flygon": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "outrage", "stoneedge", "uturn"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "dracometeor", "earthquake", "roost", "uturn"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "cacturne": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["darkpulse", "gigadrain", "spikes", "suckerpunch", "superpower"],
+ "abilities": ["Water Absorb"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["drainpunch", "seedbomb", "suckerpunch", "swordsdance"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ },
+ "altaria": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["dragondance", "earthquake", "outrage", "roost"],
+ "abilities": ["Natural Cure"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["dracometeor", "earthquake", "fireblast", "healbell", "roost", "toxic"],
+ "abilities": ["Natural Cure"]
+ }
+ ]
+ },
+ "altariamega": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["moonblast", "hydropump", "fireblast", "roost"],
+ "abilities": ["Natural Cure"]
+ }
+ ]
+ },
+ "zangoose": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "facade", "knockoff", "quickattack", "swordsdance"],
+ "abilities": ["Toxic Boost"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "seviper": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "flamethrower", "gigadrain", "glare", "knockoff", "sludgewave", "suckerpunch", "switcheroo"],
+ "abilities": ["Infiltrator"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "lunatone": {
+ "level": 96,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthpower", "icebeam", "moonblast", "moonlight", "psychic", "rockpolish"],
+ "abilities": ["Levitate"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthpower", "moonlight", "psychic", "stealthrock", "toxic"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "solrock": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "morningsun", "stealthrock", "stoneedge", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "whiscash": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "earthquake", "stoneedge", "waterfall"],
+ "abilities": ["Hydration", "Oblivious"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "protect", "scald", "toxic"],
+ "abilities": ["Hydration", "Oblivious"]
+ }
+ ]
+ },
+ "crawdaunt": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aquajet", "crabhammer", "dragondance", "knockoff", "superpower"],
+ "abilities": ["Adaptability"]
+ }
+ ]
+ },
+ "claydol": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "icebeam", "psychic", "rapidspin", "stealthrock", "toxic"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "cradily": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["curse", "earthquake", "recover", "seedbomb", "stoneedge", "swordsdance"],
+ "abilities": ["Storm Drain"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthpower", "gigadrain", "recover", "stealthrock", "stoneedge", "toxic"],
+ "abilities": ["Storm Drain"],
+ "preferredTypes": ["Grass"]
+ }
+ ]
+ },
+ "armaldo": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "knockoff", "rapidspin", "stealthrock", "stoneedge", "toxic", "xscissor"],
+ "abilities": ["Battle Armor", "Swift Swim"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquajet", "earthquake", "knockoff", "stoneedge", "swordsdance", "xscissor"],
+ "abilities": ["Battle Armor", "Swift Swim"]
+ }
+ ]
+ },
+ "milotic": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["dragontail", "haze", "icebeam", "recover", "scald", "toxic"],
+ "abilities": ["Competitive", "Marvel Scale"]
+ }
+ ]
+ },
+ "castform": {
+ "level": 97,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["fireblast", "icebeam", "return", "scald", "thunderbolt", "thunderwave"],
+ "abilities": ["Forecast"],
+ "preferredTypes": ["Water"]
+ }
+ ]
+ },
+ "kecleon": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["drainpunch", "fakeout", "knockoff", "recover", "shadowsneak", "stealthrock", "suckerpunch"],
+ "abilities": ["Protean"],
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["drainpunch", "knockoff", "recover", "stealthrock", "thunderwave", "toxic"],
+ "abilities": ["Protean"]
+ }
+ ]
+ },
+ "banette": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["gunkshot", "knockoff", "shadowclaw", "shadowsneak", "thunderwave", "willowisp"],
+ "abilities": ["Cursed Body", "Frisk", "Insomnia"]
+ }
+ ]
+ },
+ "banettemega": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["powder", "knockoff", "ironhead", "taunt", "willowisp", "stealthrock", "defog"],
+ "abilities": ["Frisk"]
+ }
+ ]
+ },
+ "tropius": {
+ "level": 94,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["airslash", "leechseed", "protect", "substitute"],
+ "abilities": ["Harvest"]
+ }
+ ]
+ },
+ "chimecho": {
+ "level": 97,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["healbell", "knockoff", "psychic", "recover", "toxic"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "psychic", "psyshock", "recover", "signalbeam"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "absol": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["knockoff", "playrough", "pursuit", "suckerpunch", "closecombat", "swordsdance"],
+ "abilities": ["Justified"],
+ "preferredTypes": ["Fairy"]
+ }
+ ]
+ },
+ "absolmega": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["irontail", "knockoff", "playrough", "pursuit", "suckerpunch", "closecombat", "swordsdance"],
+ "abilities": ["Justified"],
+ "preferredTypes": ["Fairy"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["knockoff", "moonblast", "suckerpunch", "closecombat", "fireblast"],
+ "abilities": ["Justified"]
+ }
+ ]
+ },
+ "glalie": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "freezedry", "spikes", "superfang", "taunt"],
+ "abilities": ["Inner Focus"]
+ }
+ ]
+ },
+ "glaliemega": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "explosion", "freezedry", "iceshard", "doubleedge", "spikes"],
+ "abilities": ["Inner Focus"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthquake", "iceshard", "boomburst", "doubleedge"],
+ "abilities": ["Inner Focus"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "walrein": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["icebeam", "roar", "superfang", "surf", "toxic"],
+ "abilities": ["Thick Fat"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["icebeam", "protect", "surf", "toxic"],
+ "abilities": ["Thick Fat"]
+ }
+ ]
+ },
+ "huntail": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["icebeam", "return", "shellsmash", "suckerpunch", "waterfall"],
+ "abilities": ["Swift Swim", "Water Veil"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "gorebyss": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hiddenpowergrass", "hydropump", "icebeam", "shellsmash"],
+ "abilities": ["Swift Swim"]
+ }
+ ]
+ },
+ "relicanth": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "headsmash", "stealthrock", "toxic", "waterfall"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["doubleedge", "earthquake", "headsmash", "waterfall"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["earthquake", "headsmash", "rockpolish", "waterfall"],
+ "abilities": ["Rock Head"]
+ }
+ ]
+ },
+ "luvdisc": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["icebeam", "protect", "scald", "substitute", "toxic"],
+ "abilities": ["Hydration"]
+ }
+ ]
+ },
+ "salamence": {
+ "level": 75,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "earthquake", "outrage", "roost", "ironhead"],
+ "abilities": ["Intimidate", "Moxie"]
+ }
+ ]
+ },
+ "salamencemega": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["outrage", "dragondance", "earthquake", "hurricane", "roost"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hurricane", "fireblast", "dracometeor", "roost"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "metagross": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["agility", "earthquake", "icepunch", "meteormash", "thunderpunch", "zenheadbutt"],
+ "abilities": ["Clear Body"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["bulletpunch", "earthquake", "explosion", "icepunch", "meteormash", "stealthrock", "thunderpunch", "zenheadbutt"],
+ "abilities": ["Clear Body"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "metagrossmega": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["agility", "earthquake", "hammerarm", "meteormash", "zenheadbutt"],
+ "abilities": ["Clear Body"],
+ "preferredTypes": ["Psychic"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "hammerarm", "honeclaws", "meteormash", "zenheadbutt"],
+ "abilities": ["Clear Body"],
+ "preferredTypes": ["Psychic"]
+ }
+ ]
+ },
+ "regirock": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["curse", "drainpunch", "rest", "stoneedge"],
+ "abilities": ["Sturdy"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["drainpunch", "earthquake", "stealthrock", "stoneedge", "thunderwave", "toxic"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "regice": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["icebeam", "protect", "thunderbolt", "toxic"],
+ "abilities": ["Clear Body"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["focusblast", "icebeam", "rest", "sleeptalk", "thunderbolt", "thunderwave"],
+ "abilities": ["Clear Body"],
+ "preferredTypes": ["Electric"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["focusblast", "icebeam", "rockpolish", "thunderbolt"],
+ "abilities": ["Clear Body"]
+ }
+ ]
+ },
+ "registeel": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["curse", "ironhead", "rest", "sleeptalk"],
+ "abilities": ["Clear Body"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["rest", "seismictoss", "sleeptalk", "toxic"],
+ "abilities": ["Clear Body"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["protect", "seismictoss", "stealthrock", "thunderwave", "toxic"],
+ "abilities": ["Clear Body"]
+ }
+ ]
+ },
+ "latias": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "dracometeor", "psyshock", "roost"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "latiasmega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "dracometeor", "psyshock", "roost"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "latios": {
+ "level": 72,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "dracometeor", "psyshock", "roost"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "latiosmega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "dracometeor", "psyshock", "roost"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "zenheadbutt", "dracometeor", "earthquake"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["defog", "dracometeor", "psyshock", "roost", "icebeam"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "kyogre": {
+ "level": 67,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["icebeam", "originpulse", "scald", "thunder", "waterspout"],
+ "abilities": ["Drizzle"]
+ }
+ ]
+ },
+ "kyogreprimal": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "rest", "scald", "sleeptalk"],
+ "abilities": ["Drizzle"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "icebeam", "originpulse", "thunder"],
+ "abilities": ["Drizzle"]
+ }
+ ]
+ },
+ "groudon": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["dragontail", "lavaplume", "precipiceblades", "stealthrock", "stoneedge", "thunderwave"],
+ "abilities": ["Drought"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["firepunch", "precipiceblades", "rockpolish", "stoneedge", "swordsdance"],
+ "abilities": ["Drought"]
+ }
+ ]
+ },
+ "groudonprimal": {
+ "level": 64,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["dragontail", "lavaplume", "precipiceblades", "stealthrock", "thunderwave"],
+ "abilities": ["Drought"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["firepunch", "precipiceblades", "rockpolish", "swordsdance"],
+ "abilities": ["Drought"]
+ }
+ ]
+ },
+ "rayquaza": {
+ "level": 72,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["dracometeor", "earthquake", "extremespeed", "outrage", "vcreate"],
+ "abilities": ["Air Lock"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "earthquake", "extremespeed", "outrage", "vcreate", "coil"],
+ "abilities": ["Air Lock"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "extremespeed", "outrage", "swordsdance", "vcreate"],
+ "abilities": ["Air Lock"],
+ "preferredTypes": ["Normal"]
+ }
+ ]
+ },
+ "rayquazamega": {
+ "level": 65,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["dragonascent", "dragondance", "earthquake", "extremespeed", "vcreate", "coil"],
+ "abilities": ["Air Lock"]
+ }
+ ]
+ },
+ "jirachi": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["bodyslam", "firepunch", "healingwish", "ironhead", "protect", "stealthrock", "toxic", "uturn", "wish"],
+ "abilities": ["Serene Grace"]
+ }
+ ]
+ },
+ "deoxys": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["extremespeed", "knockoff", "psychoboost", "superpower"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["icebeam", "knockoff", "psychoboost", "superpower"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "deoxysattack": {
+ "level": 72,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["extremespeed", "knockoff", "psychoboost", "superpower"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["icebeam", "knockoff", "psychoboost", "superpower"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "deoxysdefense": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "recover", "seismictoss", "spikes", "stealthrock", "taunt", "toxic"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "recover", "signalbeam"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "deoxysspeed": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["knockoff", "psychoboost", "spikes", "stealthrock", "superpower", "taunt"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["darkpulse", "focusblast", "nastyplot", "psychoboost"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "torterra": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "stealthrock", "stoneedge", "synthesis", "woodhammer"],
+ "abilities": ["Overgrow"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "rockpolish", "stoneedge", "woodhammer"],
+ "abilities": ["Overgrow"]
+ }
+ ]
+ },
+ "infernape": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "grassknot", "machpunch", "overheat", "stealthrock"],
+ "abilities": ["Blaze", "Iron Fist"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["closecombat", "flareblitz", "machpunch", "stoneedge", "swordsdance", "uturn"],
+ "abilities": ["Blaze", "Iron Fist"]
+ }
+ ]
+ },
+ "empoleon": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["defog", "knockoff", "protect", "scald", "stealthrock", "toxic"],
+ "abilities": ["Torrent"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "icebeam", "knockoff", "roar", "scald", "toxic"],
+ "abilities": ["Torrent"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["flashcannon", "grassknot", "hydropump", "icebeam", "knockoff", "scald"],
+ "abilities": ["Torrent"]
+ }
+ ]
+ },
+ "staraptor": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bravebird", "closecombat", "doubleedge", "quickattack", "uturn"],
+ "abilities": ["Reckless"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "bibarel": {
+ "level": 95,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["quickattack", "return", "waterfall", "workup"],
+ "abilities": ["Simple"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["curse", "quickattack", "return", "waterfall"],
+ "abilities": ["Simple"]
+ }
+ ]
+ },
+ "kricketune": {
+ "level": 98,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["bugbite", "knockoff", "stickyweb", "taunt", "toxic"],
+ "abilities": ["Technician"]
+ }
+ ]
+ },
+ "luxray": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["crunch", "facade", "superpower", "wildcharge"],
+ "abilities": ["Guts"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["crunch", "icefang", "superpower", "voltswitch", "wildcharge"],
+ "abilities": ["Intimidate"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "roserade": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["gigadrain", "hiddenpowerground", "leafstorm", "sleeppowder", "sludgebomb", "spikes", "synthesis", "toxicspikes"],
+ "abilities": ["Natural Cure", "Technician"]
+ }
+ ]
+ },
+ "rampardos": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "firepunch", "rockpolish", "rockslide", "zenheadbutt"],
+ "abilities": ["Sheer Force"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "firepunch", "headsmash", "rockslide"],
+ "abilities": ["Sheer Force"]
+ }
+ ]
+ },
+ "bastiodon": {
+ "level": 95,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "wormadam": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["hiddenpowerground", "hiddenpowerrock", "leafstorm", "signalbeam", "synthesis", "toxic"],
+ "abilities": ["Anticipation", "Overcoat"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerground", "hiddenpowerrock", "leafstorm", "psychic", "signalbeam"],
+ "abilities": ["Anticipation", "Overcoat"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["gigadrain", "hiddenpowerground", "protect", "toxic"],
+ "abilities": ["Anticipation", "Overcoat"]
+ }
+ ]
+ },
+ "wormadamsandy": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "infestation", "protect", "stealthrock", "toxic"],
+ "abilities": ["Overcoat"]
+ }
+ ]
+ },
+ "wormadamtrash": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["flashcannon", "infestation", "protect", "stealthrock", "toxic"],
+ "abilities": ["Overcoat"]
+ }
+ ]
+ },
+ "mothim": {
+ "level": 94,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["airslash", "bugbuzz", "energyball", "quiverdance"],
+ "abilities": ["Tinted Lens"]
+ }
+ ]
+ },
+ "vespiquen": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["airslash", "defog", "roost", "toxic", "uturn"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "pachirisu": {
+ "level": 95,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["nuzzle", "superfang", "thunderbolt", "toxic", "uturn"],
+ "abilities": ["Volt Absorb"]
+ }
+ ]
+ },
+ "floatzel": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bulkup", "icepunch", "lowkick", "substitute", "waterfall"],
+ "abilities": ["Water Veil"],
+ "preferredTypes": ["Ice"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aquajet", "crunch", "icepunch", "lowkick", "waterfall"],
+ "abilities": ["Water Veil"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "cherrim": {
+ "level": 97,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["dazzlinggleam", "energyball", "healingwish", "hiddenpowerfire", "hiddenpowerground", "hiddenpowerrock", "morningsun"],
+ "abilities": ["Flower Gift"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["aromatherapy", "energyball", "hiddenpowerground", "leechseed", "morningsun", "toxic"],
+ "abilities": ["Flower Gift"]
+ }
+ ]
+ },
+ "gastrodon": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["clearsmog", "earthquake", "icebeam", "recover", "scald", "toxic"],
+ "abilities": ["Storm Drain"]
+ }
+ ]
+ },
+ "ambipom": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["fakeout", "knockoff", "lowkick", "return", "uturn"],
+ "abilities": ["Technician"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "drifblim": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["acrobatics", "defog", "destinybond", "shadowball", "substitute", "willowisp"],
+ "abilities": ["Unburden"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["acrobatics", "hex", "substitute", "willowisp"],
+ "abilities": ["Unburden"]
+ }
+ ]
+ },
+ "lopunny": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["healingwish", "highjumpkick", "icepunch", "return", "switcheroo"],
+ "abilities": ["Limber"]
+ }
+ ]
+ },
+ "lopunnymega": {
+ "level": 76,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["encore", "fakeout", "highjumpkick", "poweruppunch", "return", "substitute"],
+ "abilities": ["Limber"]
+ }
+ ]
+ },
+ "mismagius": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dazzlinggleam", "destinybond", "painsplit", "shadowball", "taunt", "willowisp"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["dazzlinggleam", "nastyplot", "shadowball", "thunderbolt", "trick"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "honchkrow": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["bravebird", "heatwave", "pursuit", "roost", "suckerpunch", "superpower"],
+ "abilities": ["Moxie"]
+ }
+ ]
+ },
+ "purugly": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["fakeout", "knockoff", "return", "uturn", "wakeupslap"],
+ "abilities": ["Defiant", "Thick Fat"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "skuntank": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["crunch", "defog", "fireblast", "poisonjab", "pursuit", "suckerpunch", "taunt"],
+ "abilities": ["Aftermath"]
+ }
+ ]
+ },
+ "bronzong": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "ironhead", "psychic", "stealthrock", "toxic"],
+ "abilities": ["Levitate"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "ironhead", "protect", "psychic", "toxic"],
+ "abilities": ["Levitate"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "chatot": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["boomburst", "chatter", "heatwave", "hiddenpowerground", "uturn"],
+ "abilities": ["Tangled Feet"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["boomburst", "chatter", "heatwave", "nastyplot", "substitute"],
+ "abilities": ["Tangled Feet"]
+ }
+ ]
+ },
+ "spiritomb": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "darkpulse", "rest", "sleeptalk"],
+ "abilities": ["Infiltrator"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["foulplay", "painsplit", "pursuit", "suckerpunch", "toxic", "willowisp"],
+ "abilities": ["Infiltrator"]
+ }
+ ]
+ },
+ "garchomp": {
+ "level": 75,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["dragonclaw", "earthquake", "fireblast", "outrage", "stealthrock", "stoneedge", "toxic"],
+ "abilities": ["Rough Skin"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "firefang", "outrage", "stoneedge", "swordsdance"],
+ "abilities": ["Rough Skin"]
+ }
+ ]
+ },
+ "garchompmega": {
+ "level": 76,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["dracometeor", "earthquake", "fireblast", "stealthrock", "stoneedge"],
+ "abilities": ["Rough Skin"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "firefang", "outrage", "stoneedge", "swordsdance"],
+ "abilities": ["Rough Skin"]
+ }
+ ]
+ },
+ "lucario": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bulletpunch", "closecombat", "crunch", "extremespeed", "stoneedge", "swordsdance"],
+ "abilities": ["Justified"],
+ "preferredTypes": ["Normal"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aurasphere", "flashcannon", "nastyplot", "vacuumwave"],
+ "abilities": ["Inner Focus"]
+ }
+ ]
+ },
+ "lucariomega": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bulletpunch", "closecombat", "meteormash", "swordsdance"],
+ "abilities": ["Justified"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "flashcannon", "nastyplot", "vacuumwave"],
+ "abilities": ["Justified"]
+ }
+ ]
+ },
+ "hippowdon": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "slackoff", "stealthrock", "stoneedge", "toxic", "whirlwind"],
+ "abilities": ["Sand Stream"]
+ }
+ ]
+ },
+ "drapion": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aquatail", "earthquake", "knockoff", "poisonjab", "pursuit", "swordsdance"],
+ "abilities": ["Battle Armor"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "knockoff", "poisonjab", "taunt", "toxicspikes", "whirlwind"],
+ "abilities": ["Battle Armor"]
+ }
+ ]
+ },
+ "toxicroak": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["drainpunch", "earthquake", "gunkshot", "knockoff", "substitute", "suckerpunch", "swordsdance"],
+ "abilities": ["Dry Skin"]
+ }
+ ]
+ },
+ "carnivine": {
+ "level": 100,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "powerwhip", "sleeppowder", "swordsdance", "synthesis", "toxic"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "lumineon": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "icebeam", "scald", "toxic", "uturn"],
+ "abilities": ["Storm Drain"]
+ }
+ ]
+ },
+ "abomasnow": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["blizzard", "earthquake", "gigadrain", "iceshard", "woodhammer"],
+ "abilities": ["Snow Warning"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "abomasnowmega": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["icebeam", "earthquake", "gigadrain", "iceshard", "woodhammer"],
+ "abilities": ["Snow Warning"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["icebeam", "gigadrain", "leechseed", "earthquake"],
+ "abilities": ["Snow Warning"]
+ }
+ ]
+ },
+ "weavile": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["iceshard", "iciclecrash", "knockoff", "lowkick", "pursuit", "swordsdance"],
+ "abilities": ["Pickpocket"]
+ }
+ ]
+ },
+ "magnezone": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"],
+ "abilities": ["Analytic", "Magnet Pull"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["flashcannon", "protect", "thunderbolt", "toxic"],
+ "abilities": ["Analytic"]
+ }
+ ]
+ },
+ "lickilicky": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["bodyslam", "knockoff", "protect", "wish"],
+ "abilities": ["Cloud Nine", "Oblivious"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["bodyslam", "dragontail", "earthquake", "explosion", "knockoff", "powerwhip"],
+ "abilities": ["Cloud Nine", "Own Tempo"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bodyslam", "earthquake", "explosion", "knockoff", "powerwhip", "return", "swordsdance"],
+ "abilities": ["Cloud Nine", "Oblivious"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "rhyperior": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dragontail", "earthquake", "icepunch", "megahorn", "stoneedge"],
+ "abilities": ["Solid Rock"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["earthquake", "icepunch", "megahorn", "rockpolish", "stoneedge"],
+ "abilities": ["Solid Rock"]
+ }
+ ]
+ },
+ "tangrowth": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "knockoff", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder", "sludgebomb"],
+ "abilities": ["Regenerator"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["earthquake", "gigadrain", "knockoff", "powerwhip", "rockslide", "sludgebomb"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "electivire": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["crosschop", "earthquake", "flamethrower", "icepunch", "voltswitch", "wildcharge"],
+ "abilities": ["Motor Drive"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "magmortar": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "fireblast", "focusblast", "hiddenpowerice", "taunt", "thunderbolt"],
+ "abilities": ["Flame Body"],
+ "preferredTypes": ["Electric"]
+ }
+ ]
+ },
+ "togekiss": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["airslash", "aurasphere", "nastyplot", "roost", "thunderwave"],
+ "abilities": ["Serene Grace"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["airslash", "defog", "healbell", "roost", "thunderwave"],
+ "abilities": ["Serene Grace"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["airslash", "aurasphere", "dazzlinggleam", "trick"],
+ "abilities": ["Serene Grace"]
+ }
+ ]
+ },
+ "yanmega": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["airslash", "bugbuzz", "hiddenpowerground", "protect"],
+ "abilities": ["Speed Boost"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["airslash", "bugbuzz", "gigadrain", "uturn"],
+ "abilities": ["Tinted Lens"]
+ }
+ ]
+ },
+ "leafeon": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["doubleedge", "knockoff", "leafblade", "substitute", "swordsdance", "synthesis"],
+ "abilities": ["Chlorophyll"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "glaceon": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["healbell", "hiddenpowerground", "icebeam", "protect", "wish"],
+ "abilities": ["Ice Body"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["icebeam", "protect", "toxic", "wish"],
+ "abilities": ["Ice Body"]
+ }
+ ]
+ },
+ "gliscor": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "protect", "substitute", "toxic"],
+ "abilities": ["Poison Heal"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["defog", "earthquake", "knockoff", "roost", "stealthrock", "taunt", "toxic", "uturn"],
+ "abilities": ["Poison Heal"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "facade", "roost", "swordsdance"],
+ "abilities": ["Poison Heal"]
+ }
+ ]
+ },
+ "mamoswine": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthquake", "iceshard", "iciclecrash", "knockoff", "stealthrock"],
+ "abilities": ["Thick Fat"]
+ }
+ ]
+ },
+ "porygonz": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["icebeam", "nastyplot", "shadowball", "thunderbolt", "triattack", "trick"],
+ "abilities": ["Adaptability", "Download"]
+ }
+ ]
+ },
+ "gallade": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "icepunch", "knockoff", "shadowsneak", "swordsdance", "zenheadbutt", "machpunch"],
+ "abilities": ["Justified"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "gallademega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["sacredsword", "knockoff", "swordsdance", "psychocut"],
+ "abilities": ["Justified"]
+ }
+ ]
+ },
+ "probopass": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthpower", "flashcannon", "stealthrock", "thunderwave", "toxic", "voltswitch"],
+ "abilities": ["Magnet Pull"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthpower", "powergem", "stealthrock", "thunderwave", "toxic", "voltswitch"],
+ "abilities": ["Magnet Pull"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "dusknoir": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "painsplit", "shadowsneak", "toxic", "willowisp"],
+ "abilities": ["Frisk", "Pressure"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "icepunch", "painsplit", "toxic", "willowisp"],
+ "abilities": ["Frisk", "Pressure"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "protect", "shadowsneak", "toxic"],
+ "abilities": ["Frisk", "Pressure"]
+ }
+ ]
+ },
+ "froslass": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["destinybond", "icebeam", "shadowball", "spikes", "taunt", "thunderwave"],
+ "abilities": ["Cursed Body"]
+ }
+ ]
+ },
+ "rotom": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["hiddenpowerice", "painsplit", "shadowball", "thunderbolt", "trick", "voltswitch", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "rotomheat": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["hiddenpowerice", "overheat", "painsplit", "thunderbolt", "voltswitch", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "rotomwash": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["hydropump", "painsplit", "thunderbolt", "trick", "voltswitch", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "rotomfrost": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["blizzard", "painsplit", "thunderbolt", "trick", "voltswitch", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "rotomfan": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["airslash", "painsplit", "thunderbolt", "voltswitch", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "rotommow": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["hiddenpowerice", "leafstorm", "thunderbolt", "trick", "voltswitch", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "uxie": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["healbell", "knockoff", "psychic", "stealthrock", "thunderwave", "toxic", "uturn", "yawn"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "mesprit": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "healingwish", "hiddenpowerfire", "psychic", "psyshock", "signalbeam", "thunderbolt", "uturn"],
+ "abilities": ["Levitate"],
+ "preferredTypes": ["Bug"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "psychic", "stealthrock", "thunderwave", "toxic", "uturn"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "azelf": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["dazzlinggleam", "fireblast", "nastyplot", "psychic", "psyshock", "uturn"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Fast Support",
+ "movepool": ["explosion", "fireblast", "knockoff", "psychic", "stealthrock", "taunt", "uturn"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "dialga": {
+ "level": 73,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dracometeor", "dragontail", "fireblast", "flashcannon", "stealthrock", "thunderbolt", "toxic"],
+ "abilities": ["Pressure"],
+ "preferredTypes": ["Fire"]
+ }
+ ]
+ },
+ "palkia": {
+ "level": 73,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dracometeor", "fireblast", "hydropump", "spacialrend", "thunderwave"],
+ "abilities": ["Pressure"],
+ "preferredTypes": ["Fire"]
+ }
+ ]
+ },
+ "heatran": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthpower", "flashcannon", "lavaplume", "magmastorm", "stealthrock", "taunt", "toxic"],
+ "abilities": ["Flash Fire"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthpower", "magmastorm", "protect", "toxic"],
+ "abilities": ["Flash Fire"]
+ }
+ ]
+ },
+ "regigigas": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["drainpunch", "knockoff", "return", "thunderwave"],
+ "abilities": ["Slow Start"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "return", "substitute", "thunderwave"],
+ "abilities": ["Slow Start"]
+ }
+ ]
+ },
+ "giratinaorigin": {
+ "level": 70,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dracometeor", "hex", "shadowsneak", "thunderwave", "willowisp"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["defog", "dracometeor", "earthquake", "outrage", "shadowball", "shadowsneak", "willowisp"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "giratina": {
+ "level": 73,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["dragontail", "rest", "shadowball", "sleeptalk", "willowisp"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "dragonpulse", "rest", "sleeptalk"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "dragontail", "rest", "shadowball", "willowisp"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "cresselia": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "moonblast", "moonlight", "psyshock"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["moonblast", "moonlight", "psychic", "thunderwave", "toxic"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "phione": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["healbell", "icebeam", "knockoff", "scald", "toxic", "uturn"],
+ "abilities": ["Hydration"]
+ }
+ ]
+ },
+ "manaphy": {
+ "level": 76,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["energyball", "icebeam", "surf", "tailglow"],
+ "abilities": ["Hydration"]
+ }
+ ]
+ },
+ "darkrai": {
+ "level": 72,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["darkpulse", "darkvoid", "nastyplot", "sludgebomb"],
+ "abilities": ["Bad Dreams"],
+ "preferredTypes": ["Poison"]
+ }
+ ]
+ },
+ "shaymin": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["airslash", "earthpower", "leechseed", "seedflare", "substitute", "synthesis"],
+ "abilities": ["Natural Cure"],
+ "preferredTypes": ["Flying"]
+ }
+ ]
+ },
+ "shayminsky": {
+ "level": 73,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["airslash", "earthpower", "hiddenpowerice", "leechseed", "seedflare", "substitute"],
+ "abilities": ["Serene Grace"]
+ }
+ ]
+ },
+ "arceus": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "extremespeed", "recover", "shadowclaw", "swordsdance"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusbug": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "earthpower", "fireblast", "judgment", "recover"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "earthpower", "icebeam", "judgment"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusdark": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "defog", "fireblast", "judgment", "recover", "sludgebomb", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusdragon": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "earthquake", "fireblast", "judgment", "recover", "willowisp"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "extremespeed", "outrage", "recover", "swordsdance"],
+ "abilities": ["Multitype"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "arceuselectric": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "icebeam", "judgment", "recover"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusfairy": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "earthpower", "judgment", "recover"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusfighting": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "icebeam", "judgment", "recover", "shadowball"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusfire": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "earthpower", "energyball", "judgment", "recover"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusflying": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "earthpower", "judgment", "recover"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusghost": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "defog", "focusblast", "judgment", "recover", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["brickbreak", "extremespeed", "shadowforce", "swordsdance"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusgrass": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "fireblast", "judgment", "recover"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "earthpower", "icebeam", "judgment"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusground": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "extremespeed", "recover", "stoneedge", "swordsdance"],
+ "abilities": ["Multitype"],
+ "preferredTypes": ["Rock"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "icebeam", "judgment", "recover", "toxic"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusice": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "earthpower", "judgment", "recover", "thunderbolt"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceuspoison": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "earthquake", "icebeam", "recover", "sludgebomb"],
+ "abilities": ["Multitype"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "earthpower", "icebeam", "recover", "sludgebomb"],
+ "abilities": ["Multitype"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "arceuspsychic": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "earthquake", "fireblast", "judgment", "recover", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "earthpower", "fireblast", "judgment", "recover"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceusrock": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "extremespeed", "recover", "stoneedge", "swordsdance"],
+ "abilities": ["Multitype"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "arceussteel": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["defog", "earthquake", "judgment", "recover", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "arceuswater": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "icebeam", "judgment", "recover", "toxic", "willowisp"],
+ "abilities": ["Multitype"]
+ }
+ ]
+ },
+ "victini": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["boltstrike", "uturn", "vcreate", "zenheadbutt"],
+ "abilities": ["Victory Star"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["boltstrike", "energyball", "focusblast", "glaciate", "psychic", "uturn", "vcreate"],
+ "abilities": ["Victory Star"],
+ "preferredTypes": ["Electric"]
+ }
+ ]
+ },
+ "serperior": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["dragonpulse", "glare", "hiddenpowerfire", "leafstorm", "leechseed", "substitute"],
+ "abilities": ["Contrary"]
+ }
+ ]
+ },
+ "emboar": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["flareblitz", "headsmash", "suckerpunch", "superpower", "wildcharge"],
+ "abilities": ["Reckless"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["flareblitz", "grassknot", "suckerpunch", "superpower", "wildcharge"],
+ "abilities": ["Reckless"]
+ }
+ ]
+ },
+ "samurott": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "AV Pivot",
+ "movepool": ["aquajet", "grassknot", "hydropump", "icebeam", "knockoff", "megahorn", "scald", "superpower"],
+ "abilities": ["Torrent"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["aquajet", "knockoff", "megahorn", "superpower", "swordsdance", "waterfall"],
+ "abilities": ["Torrent"]
+ }
+ ]
+ },
+ "watchog": {
+ "level": 94,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["hypnosis", "knockoff", "return", "superfang"],
+ "abilities": ["Analytic"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hypnosis", "knockoff", "return", "substitute", "swordsdance"],
+ "abilities": ["Analytic"]
+ }
+ ]
+ },
+ "stoutland": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["crunch", "facade", "return", "superpower"],
+ "abilities": ["Scrappy"]
+ }
+ ]
+ },
+ "liepard": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["copycat", "encore", "knockoff", "substitute", "thunderwave", "uturn"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "simisage": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["gunkshot", "hiddenpowerice", "knockoff", "leafstorm", "rockslide", "superpower"],
+ "abilities": ["Overgrow"],
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "gigadrain", "hiddenpowerice", "nastyplot", "substitute"],
+ "abilities": ["Overgrow"]
+ }
+ ]
+ },
+ "simisear": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["fireblast", "focusblast", "grassknot", "hiddenpowerrock", "nastyplot", "substitute"],
+ "abilities": ["Blaze"]
+ }
+ ]
+ },
+ "simipour": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["grassknot", "hydropump", "icebeam", "nastyplot", "substitute"],
+ "abilities": ["Torrent"],
+ "preferredTypes": ["Ice"]
+ }
+ ]
+ },
+ "musharna": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "hiddenpowerfighting", "moonlight", "psyshock", "signalbeam"],
+ "abilities": ["Synchronize"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["healbell", "moonlight", "psychic", "signalbeam", "thunderwave", "toxic"],
+ "abilities": ["Synchronize"]
+ }
+ ]
+ },
+ "unfezant": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["nightslash", "pluck", "return", "roost", "toxic", "uturn"],
+ "abilities": ["Super Luck"]
+ }
+ ]
+ },
+ "zebstrika": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hiddenpowerice", "overheat", "voltswitch", "wildcharge"],
+ "abilities": ["Sap Sipper"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerice", "overheat", "thunderbolt", "voltswitch"],
+ "abilities": ["Lightning Rod"]
+ }
+ ]
+ },
+ "gigalith": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "explosion", "stealthrock", "stoneedge", "superpower", "toxic"],
+ "abilities": ["Sturdy"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "swoobat": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "heatwave", "roost", "storedpower"],
+ "abilities": ["Simple"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["airslash", "calmmind", "heatwave", "roost", "storedpower"],
+ "abilities": ["Simple"]
+ }
+ ]
+ },
+ "excadrill": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "ironhead", "rapidspin", "rockslide", "swordsdance"],
+ "abilities": ["Mold Breaker", "Sand Rush"]
+ }
+ ]
+ },
+ "audino": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "protect", "toxic", "wish", "voltswitch"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "audinomega": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["icebeam", "protect", "voltswitch", "wish", "toxic"],
+ "abilities": ["Regenerator"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["thunderwave", "icebeam", "knockoff", "voltswitch", "toxic"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "conkeldurr": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["drainpunch", "facade", "knockoff", "machpunch"],
+ "abilities": ["Guts"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bulkup", "drainpunch", "knockoff", "machpunch"],
+ "abilities": ["Iron Fist"]
+ }
+ ]
+ },
+ "seismitoad": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "hydropump", "knockoff", "raindance", "sludgewave"],
+ "abilities": ["Swift Swim"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "knockoff", "scald", "stealthrock", "toxic"],
+ "abilities": ["Water Absorb"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "protect", "scald", "toxic"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ },
+ "throh": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["bulkup", "circlethrow", "knockoff", "rest", "sleeptalk"],
+ "abilities": ["Guts"]
+ }
+ ]
+ },
+ "sawk": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bulkup", "closecombat", "earthquake", "knockoff", "poisonjab", "stoneedge"],
+ "abilities": ["Mold Breaker", "Sturdy"],
+ "preferredTypes": ["Dark"]
+ }
+ ]
+ },
+ "leavanny": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["knockoff", "leafblade", "stickyweb", "toxic", "xscissor"],
+ "abilities": ["Chlorophyll", "Swarm"]
+ }
+ ]
+ },
+ "scolipede": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["earthquake", "megahorn", "poisonjab", "spikes", "toxicspikes"],
+ "abilities": ["Speed Boost"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "megahorn", "poisonjab", "swordsdance"],
+ "abilities": ["Speed Boost"]
+ }
+ ]
+ },
+ "whimsicott": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["encore", "energyball", "moonblast", "stunspore", "taunt", "toxic", "uturn"],
+ "abilities": ["Prankster"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["encore", "leechseed", "moonblast", "substitute"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "lilligant": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["gigadrain", "hiddenpowerfire", "hiddenpowerrock", "quiverdance", "sleeppowder"],
+ "abilities": ["Chlorophyll"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hiddenpowerfire", "hiddenpowerrock", "petaldance", "quiverdance", "sleeppowder"],
+ "abilities": ["Own Tempo"]
+ }
+ ]
+ },
+ "basculin": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquajet", "crunch", "superpower", "waterfall", "zenheadbutt"],
+ "abilities": ["Adaptability"]
+ }
+ ]
+ },
+ "krookodile": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "knockoff", "pursuit", "stealthrock", "stoneedge", "superpower"],
+ "abilities": ["Intimidate"]
+ }
+ ]
+ },
+ "darmanitan": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthquake", "flareblitz", "rockslide", "superpower", "uturn"],
+ "abilities": ["Sheer Force"]
+ }
+ ]
+ },
+ "maractus": {
+ "level": 98,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["gigadrain", "hiddenpowerfire", "knockoff", "spikes", "synthesis", "toxic"],
+ "abilities": ["Storm Drain", "Water Absorb"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["gigadrain", "hiddenpowerfire", "hiddenpowerice", "leechseed", "spikyshield"],
+ "abilities": ["Storm Drain", "Water Absorb"]
+ }
+ ]
+ },
+ "crustle": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "knockoff", "shellsmash", "stoneedge", "xscissor"],
+ "abilities": ["Sturdy"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "scrafty": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dragondance", "drainpunch", "ironhead", "knockoff"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bulkup", "drainpunch", "knockoff", "rest"],
+ "abilities": ["Shed Skin"]
+ }
+ ]
+ },
+ "sigilyph": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["airslash", "calmmind", "heatwave", "psyshock", "roost"],
+ "abilities": ["Magic Guard"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["airslash", "energyball", "heatwave", "icebeam", "psychic", "psyshock"],
+ "abilities": ["Tinted Lens"],
+ "preferredTypes": ["Psychic"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["cosmicpower", "psychoshift", "roost", "storedpower"],
+ "abilities": ["Magic Guard"]
+ }
+ ]
+ },
+ "cofagrigus": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["haze", "painsplit", "shadowball", "toxicspikes", "willowisp"],
+ "abilities": ["Mummy"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["hiddenpowerfighting", "nastyplot", "shadowball", "trickroom"],
+ "abilities": ["Mummy"]
+ }
+ ]
+ },
+ "carracosta": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["aquajet", "earthquake", "icebeam", "shellsmash", "stoneedge", "waterfall"],
+ "abilities": ["Solid Rock", "Sturdy", "Swift Swim"]
+ }
+ ]
+ },
+ "archeops": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["acrobatics", "defog", "earthquake", "knockoff", "roost", "stealthrock", "stoneedge", "uturn"],
+ "abilities": ["Defeatist"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "garbodor": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["drainpunch", "gunkshot", "haze", "painsplit", "spikes", "toxic", "toxicspikes"],
+ "abilities": ["Aftermath"]
+ }
+ ]
+ },
+ "zoroark": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["darkpulse", "flamethrower", "focusblast", "nastyplot", "sludgebomb", "trick", "uturn"],
+ "abilities": ["Illusion"],
+ "preferredTypes": ["Poison"]
+ }
+ ]
+ },
+ "cinccino": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bulletseed", "knockoff", "rockblast", "tailslap", "uturn"],
+ "abilities": ["Skill Link"],
+ "preferredTypes": ["Grass"]
+ }
+ ]
+ },
+ "gothitelle": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "hiddenpowerfighting", "psychic", "shadowball", "signalbeam", "thunderbolt", "trick"],
+ "abilities": ["Shadow Tag"]
+ }
+ ]
+ },
+ "reuniclus": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover"],
+ "abilities": ["Magic Guard"]
+ }
+ ]
+ },
+ "swanna": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "defog", "roost", "scald", "toxic"],
+ "abilities": ["Hydration"]
+ }
+ ]
+ },
+ "vanilluxe": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["autotomize", "explosion", "flashcannon", "freezedry", "hiddenpowerground", "icebeam", "toxic"],
+ "abilities": ["Weak Armor"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["explosion", "flashcannon", "freezedry", "hiddenpowerground", "icebeam"],
+ "abilities": ["Weak Armor"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "sawsbuck": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hornleech", "jumpkick", "return", "substitute", "swordsdance"],
+ "abilities": ["Sap Sipper"],
+ "preferredTypes": ["Normal"]
+ }
+ ]
+ },
+ "emolga": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["acrobatics", "encore", "knockoff", "nuzzle", "roost", "thunderbolt", "toxic", "uturn"],
+ "abilities": ["Motor Drive"]
+ }
+ ]
+ },
+ "escavalier": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["drillrun", "ironhead", "knockoff", "megahorn", "swordsdance"],
+ "abilities": ["Overcoat", "Swarm"]
+ }
+ ]
+ },
+ "amoonguss": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["clearsmog", "foulplay", "gigadrain", "hiddenpowerground", "sludgebomb", "spore"],
+ "abilities": ["Regenerator"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["gigadrain", "sludgebomb", "spore", "synthesis"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "jellicent": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["icebeam", "recover", "scald", "shadowball", "taunt"],
+ "abilities": ["Water Absorb"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["hex", "recover", "scald", "toxic", "willowisp"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ },
+ "alomomola": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "protect", "scald", "toxic", "wish"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "galvantula": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["bugbuzz", "energyball", "stickyweb", "thunder", "voltswitch"],
+ "abilities": ["Compound Eyes"],
+ "preferredTypes": ["Bug"]
+ }
+ ]
+ },
+ "ferrothorn": {
+ "level": 71,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["gyroball", "leechseed", "powerwhip", "spikes", "stealthrock"],
+ "abilities": ["Iron Barbs"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "powerwhip", "spikes", "stealthrock", "thunderwave", "toxic"],
+ "abilities": ["Iron Barbs"]
+ }
+ ]
+ },
+ "klinklang": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["geargrind", "return", "shiftgear", "substitute", "wildcharge"],
+ "abilities": ["Clear Body"]
+ }
+ ]
+ },
+ "eelektross": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "AV Pivot",
+ "movepool": ["discharge", "flamethrower", "gigadrain", "hiddenpowerice", "knockoff", "superpower", "uturn"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "beheeyem": {
+ "level": 92,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["hiddenpowerfighting", "psychic", "psyshock", "recover", "signalbeam", "thunderbolt", "trick", "trickroom"],
+ "abilities": ["Analytic"],
+ "preferredTypes": ["Bug"]
+ }
+ ]
+ },
+ "chandelure": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["energyball", "fireblast", "shadowball", "trick"],
+ "abilities": ["Flash Fire"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "energyball", "fireblast", "shadowball", "substitute"],
+ "abilities": ["Flame Body", "Flash Fire"]
+ }
+ ]
+ },
+ "haxorus": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "earthquake", "outrage", "poisonjab", "taunt"],
+ "abilities": ["Mold Breaker"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "beartic": {
+ "level": 94,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["aquajet", "iciclecrash", "stoneedge", "superpower", "swordsdance"],
+ "abilities": ["Swift Swim"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "cryogonal": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["freezedry", "haze", "hiddenpowerground", "rapidspin", "recover", "toxic"],
+ "abilities": ["Levitate"]
+ }
+ ]
+ },
+ "accelgor": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["bugbuzz", "encore", "focusblast", "hiddenpowerground", "hiddenpowerrock", "spikes", "uturn"],
+ "abilities": ["Hydration", "Sticky Hold"]
+ }
+ ]
+ },
+ "stunfisk": {
+ "level": 88,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["discharge", "earthpower", "scald", "stealthrock", "toxic"],
+ "abilities": ["Static"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["discharge", "earthpower", "protect", "rest", "sleeptalk", "toxic"],
+ "abilities": ["Static"]
+ }
+ ]
+ },
+ "mienshao": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["highjumpkick", "knockoff", "poisonjab", "stoneedge", "swordsdance", "uturn"],
+ "abilities": ["Reckless"],
+ "preferredTypes": ["Dark"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["fakeout", "highjumpkick", "knockoff", "uturn"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "druddigon": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["firepunch", "glare", "gunkshot", "outrage", "suckerpunch"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Poison"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["dragontail", "earthquake", "glare", "gunkshot", "outrage", "stealthrock", "suckerpunch"],
+ "abilities": ["Rough Skin"]
+ }
+ ]
+ },
+ "golurk": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["dynamicpunch", "earthquake", "icepunch", "rockpolish", "stealthrock", "stoneedge"],
+ "abilities": ["No Guard"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "bisharp": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["ironhead", "knockoff", "pursuit", "suckerpunch", "swordsdance"],
+ "abilities": ["Defiant"]
+ }
+ ]
+ },
+ "bouffalant": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthquake", "headcharge", "stoneedge", "superpower", "swordsdance"],
+ "abilities": ["Reckless", "Sap Sipper"]
+ }
+ ]
+ },
+ "braviary": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "bulkup", "roost", "superpower"],
+ "abilities": ["Defiant"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bravebird", "return", "superpower", "uturn"],
+ "abilities": ["Defiant"]
+ }
+ ]
+ },
+ "mandibuzz": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "defog", "foulplay", "knockoff", "roost", "taunt", "toxic", "uturn"],
+ "abilities": ["Overcoat"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "foulplay", "roost", "taunt", "toxic", "uturn"],
+ "abilities": ["Overcoat"]
+ }
+ ]
+ },
+ "heatmor": {
+ "level": 92,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["fireblast", "gigadrain", "knockoff", "suckerpunch", "superpower"],
+ "abilities": ["Flash Fire"]
+ }
+ ]
+ },
+ "durant": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["honeclaws", "ironhead", "rockslide", "superpower", "xscissor"],
+ "abilities": ["Hustle"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "hydreigon": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["darkpulse", "dracometeor", "earthpower", "fireblast", "flashcannon", "roost", "uturn"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["darkpulse", "dracometeor", "fireblast", "roost", "toxic", "uturn"],
+ "abilities": ["Levitate"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["darkpulse", "dracometeor", "flashcannon", "superpower", "uturn"],
+ "abilities": ["Levitate"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "volcarona": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bugbuzz", "fierydance", "fireblast", "gigadrain", "hiddenpowerrock", "quiverdance", "roost"],
+ "abilities": ["Flame Body", "Swarm"]
+ }
+ ]
+ },
+ "cobalion": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["closecombat", "ironhead", "stealthrock", "stoneedge", "swordsdance"],
+ "abilities": ["Justified"]
+ }
+ ]
+ },
+ "terrakion": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "earthquake", "quickattack", "stealthrock", "stoneedge", "swordsdance"],
+ "abilities": ["Justified"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "virizion": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["closecombat", "leafblade", "stoneedge", "swordsdance"],
+ "abilities": ["Justified"]
+ }
+ ]
+ },
+ "tornadus": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["heatwave", "hurricane", "knockoff", "superpower", "taunt", "uturn"],
+ "abilities": ["Defiant", "Prankster"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["acrobatics", "bulkup", "knockoff", "superpower", "taunt"],
+ "abilities": ["Defiant"],
+ "preferredTypes": ["Fighting"]
+ }
+ ]
+ },
+ "tornadustherian": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["heatwave", "hurricane", "knockoff", "superpower", "taunt", "uturn"],
+ "abilities": ["Regenerator"]
+ }
+ ]
+ },
+ "thundurus": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "hiddenpowerflying", "hiddenpowerice", "nastyplot", "substitute", "thunderbolt"],
+ "abilities": ["Prankster"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hiddenpowerflying", "hiddenpowerice", "knockoff", "superpower", "taunt", "thunderbolt", "thunderwave"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "thundurustherian": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "hiddenpowerflying", "hiddenpowerice", "nastyplot", "thunderbolt", "voltswitch"],
+ "abilities": ["Volt Absorb"]
+ }
+ ]
+ },
+ "reshiram": {
+ "level": 73,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["blueflare", "dracometeor", "roost", "toxic"],
+ "abilities": ["Turboblaze"]
+ }
+ ]
+ },
+ "zekrom": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["boltstrike", "honeclaws", "outrage", "roost", "substitute"],
+ "abilities": ["Teravolt"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["boltstrike", "dracometeor", "outrage", "voltswitch"],
+ "abilities": ["Teravolt"]
+ }
+ ]
+ },
+ "landorus": {
+ "level": 76,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["earthpower", "focusblast", "knockoff", "psychic", "rockpolish", "rockslide", "sludgewave", "stealthrock"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Rock"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "earthpower", "focusblast", "psychic", "rockpolish", "sludgewave"],
+ "abilities": ["Sheer Force"],
+ "preferredTypes": ["Poison"]
+ }
+ ]
+ },
+ "landorustherian": {
+ "level": 76,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["earthquake", "knockoff", "stealthrock", "stoneedge", "toxic", "uturn"],
+ "abilities": ["Intimidate"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "knockoff", "rockpolish", "stoneedge", "superpower", "swordsdance"],
+ "abilities": ["Intimidate"],
+ "preferredTypes": ["Rock"]
+ }
+ ]
+ },
+ "kyurem": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["earthpower", "icebeam", "roost", "substitute"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["dracometeor", "earthpower", "icebeam", "outrage", "roost", "substitute"],
+ "abilities": ["Pressure"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dracometeor", "earthpower", "focusblast", "icebeam", "outrage"],
+ "abilities": ["Pressure"]
+ }
+ ]
+ },
+ "kyuremblack": {
+ "level": 76,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthpower", "fusionbolt", "icebeam", "outrage", "roost", "substitute"],
+ "abilities": ["Teravolt"]
+ }
+ ]
+ },
+ "kyuremwhite": {
+ "level": 74,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["dracometeor", "earthpower", "fusionflare", "icebeam", "roost"],
+ "abilities": ["Turboblaze"]
+ }
+ ]
+ },
+ "keldeo": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["calmmind", "hiddenpowerelectric", "hiddenpowerflying", "hydropump", "icywind", "scald", "secretsword"],
+ "abilities": ["Justified"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "scald", "secretsword", "substitute"],
+ "abilities": ["Justified"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "hydropump", "scald", "secretsword"],
+ "abilities": ["Justified"]
+ }
+ ]
+ },
+ "meloetta": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "focusblast", "hypervoice", "psyshock", "uturn"],
+ "abilities": ["Serene Grace"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["closecombat", "knockoff", "relicsong", "return"],
+ "abilities": ["Serene Grace"]
+ }
+ ]
+ },
+ "genesect": {
+ "level": 72,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["blazekick", "ironhead", "shiftgear", "thunderbolt", "xscissor"],
+ "abilities": ["Download"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["blazekick", "extremespeed", "ironhead", "uturn"],
+ "abilities": ["Download"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["bugbuzz", "flamethrower", "flashcannon", "icebeam", "thunderbolt", "uturn"],
+ "abilities": ["Download"],
+ "preferredTypes": ["Bug"]
+ }
+ ]
+ },
+ "chesnaught": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["bulkup", "drainpunch", "spikes", "synthesis", "toxic", "woodhammer"],
+ "abilities": ["Bulletproof"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["drainpunch", "leechseed", "spikyshield", "woodhammer"],
+ "abilities": ["Bulletproof"]
+ }
+ ]
+ },
+ "delphox": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "dazzlinggleam", "fireblast", "grassknot", "psyshock", "switcheroo"],
+ "abilities": ["Blaze"]
+ }
+ ]
+ },
+ "greninja": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["grassknot", "gunkshot", "hydropump", "icebeam", "spikes", "taunt", "toxicspikes", "uturn"],
+ "abilities": ["Protean"],
+ "preferredTypes": ["Poison"]
+ }
+ ]
+ },
+ "diggersby": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["agility", "earthquake", "knockoff", "quickattack", "return", "swordsdance"],
+ "abilities": ["Huge Power"],
+ "preferredTypes": ["Normal"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["earthquake", "foulplay", "quickattack", "return", "uturn"],
+ "abilities": ["Huge Power"],
+ "preferredTypes": ["Normal"]
+ }
+ ]
+ },
+ "talonflame": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bravebird", "overheat", "roost", "uturn", "willowisp"],
+ "abilities": ["Gale Wings"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["bravebird", "flareblitz", "roost", "swordsdance"],
+ "abilities": ["Gale Wings"]
+ }
+ ]
+ },
+ "vivillon": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["energyball", "hurricane", "quiverdance", "sleeppowder"],
+ "abilities": ["Compound Eyes"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bugbuzz", "hurricane", "quiverdance", "sleeppowder"],
+ "abilities": ["Compound Eyes"]
+ }
+ ]
+ },
+ "pyroar": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["fireblast", "hiddenpowergrass", "hypervoice", "solarbeam", "sunnyday", "willowisp", "workup"],
+ "abilities": ["Unnerve"],
+ "preferredTypes": ["Normal"]
+ }
+ ]
+ },
+ "floetteeternal": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["hiddenpowerfire", "hiddenpowerground", "lightofruin", "moonblast", "psychic"],
+ "abilities": ["Flower Veil"]
+ }
+ ]
+ },
+ "florges": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["aromatherapy", "moonblast", "synthesis", "toxic"],
+ "abilities": ["Flower Veil"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["moonblast", "protect", "toxic", "wish"],
+ "abilities": ["Flower Veil"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "hiddenpowerground", "moonblast", "synthesis"],
+ "abilities": ["Flower Veil"]
+ }
+ ]
+ },
+ "gogoat": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["bulkup", "earthquake", "hornleech", "milkdrink", "toxic"],
+ "abilities": ["Sap Sipper"]
+ }
+ ]
+ },
+ "pangoro": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["drainpunch", "gunkshot", "icepunch", "knockoff", "superpower"],
+ "abilities": ["Iron Fist"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["drainpunch", "gunkshot", "knockoff", "swordsdance"],
+ "abilities": ["Iron Fist"]
+ }
+ ]
+ },
+ "furfrou": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["rest", "return", "thunderwave", "toxic", "uturn"],
+ "abilities": ["Fur Coat"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["cottonguard", "rest", "return", "substitute", "toxic"],
+ "abilities": ["Fur Coat"]
+ }
+ ]
+ },
+ "meowstic": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["healbell", "lightscreen", "psychic", "reflect", "signalbeam", "thunderwave", "toxic", "yawn"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "meowsticf": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "darkpulse", "psychic", "psyshock", "signalbeam", "thunderbolt"],
+ "abilities": ["Competitive"],
+ "preferredTypes": ["Bug"]
+ }
+ ]
+ },
+ "doublade": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["ironhead", "sacredsword", "shadowclaw", "shadowsneak", "swordsdance"],
+ "abilities": ["No Guard"]
+ }
+ ]
+ },
+ "aegislash": {
+ "level": 78,
+ "sets": [
+ {
+ "role": "Staller",
+ "movepool": ["ironhead", "kingsshield", "shadowball", "substitute", "toxic"],
+ "abilities": ["Stance Change"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["ironhead", "kingsshield", "sacredsword", "shadowclaw", "shadowsneak", "swordsdance"],
+ "abilities": ["Stance Change"],
+ "preferredTypes": ["Steel"]
+ }
+ ]
+ },
+ "aromatisse": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["calmmind", "moonblast", "protect", "toxic", "wish"],
+ "abilities": ["Aroma Veil"]
+ }
+ ]
+ },
+ "slurpuff": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["bellydrum", "drainpunch", "playrough", "return"],
+ "abilities": ["Unburden"]
+ }
+ ]
+ },
+ "malamar": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["knockoff", "rest", "sleeptalk", "superpower"],
+ "abilities": ["Contrary"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["knockoff", "psychocut", "rest", "superpower"],
+ "abilities": ["Contrary"]
+ }
+ ]
+ },
+ "barbaracle": {
+ "level": 82,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "lowkick", "razorshell", "shellsmash", "stoneedge"],
+ "abilities": ["Tough Claws"]
+ }
+ ]
+ },
+ "dragalge": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["dracometeor", "dragontail", "focusblast", "sludgewave", "toxicspikes"],
+ "abilities": ["Adaptability"]
+ },
+ {
+ "role": "Wallbreaker",
+ "movepool": ["dracometeor", "dragonpulse", "focusblast", "sludgewave"],
+ "abilities": ["Adaptability"]
+ }
+ ]
+ },
+ "clawitzer": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["aurasphere", "darkpulse", "icebeam", "scald", "uturn", "waterpulse"],
+ "abilities": ["Mega Launcher"]
+ },
+ {
+ "role": "AV Pivot",
+ "movepool": ["aurasphere", "darkpulse", "icebeam", "scald", "uturn"],
+ "abilities": ["Mega Launcher"]
+ }
+ ]
+ },
+ "heliolisk": {
+ "level": 83,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["darkpulse", "glare", "hypervoice", "surf", "thunderbolt", "voltswitch"],
+ "abilities": ["Dry Skin"],
+ "preferredTypes": ["Normal"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["hypervoice", "raindance", "surf", "thunder"],
+ "abilities": ["Dry Skin"]
+ }
+ ]
+ },
+ "tyrantrum": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["dragondance", "earthquake", "headsmash", "outrage", "superpower"],
+ "abilities": ["Rock Head"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "aurorus": {
+ "level": 86,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["ancientpower", "blizzard", "earthpower", "freezedry", "haze", "stealthrock", "thunderwave"],
+ "abilities": ["Snow Warning"],
+ "preferredTypes": ["Ground"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["ancientpower", "earthpower", "freezedry", "haze", "hypervoice", "stealthrock", "thunderwave"],
+ "abilities": ["Refrigerate"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "sylveon": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Bulky Setup",
+ "movepool": ["calmmind", "hypervoice", "protect", "wish"],
+ "abilities": ["Pixilate"]
+ }
+ ]
+ },
+ "hawlucha": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["acrobatics", "highjumpkick", "skyattack", "substitute", "swordsdance"],
+ "abilities": ["Unburden"]
+ }
+ ]
+ },
+ "dedenne": {
+ "level": 89,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["protect", "recycle", "thunderbolt", "toxic"],
+ "abilities": ["Cheek Pouch"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["recycle", "substitute", "superfang", "thunderbolt", "toxic", "uturn"],
+ "abilities": ["Cheek Pouch"]
+ }
+ ]
+ },
+ "carbink": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["lightscreen", "moonblast", "powergem", "reflect", "stealthrock", "toxic"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "goodra": {
+ "level": 85,
+ "sets": [
+ {
+ "role": "AV Pivot",
+ "movepool": ["dracometeor", "dragontail", "earthquake", "fireblast", "powerwhip", "sludgebomb"],
+ "abilities": ["Sap Sipper"]
+ }
+ ]
+ },
+ "klefki": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["dazzlinggleam", "foulplay", "spikes", "thunderwave"],
+ "abilities": ["Prankster"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["magnetrise", "playrough", "spikes", "thunderwave"],
+ "abilities": ["Prankster"]
+ }
+ ]
+ },
+ "trevenant": {
+ "level": 91,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["drainpunch", "earthquake", "hornleech", "rockslide", "shadowclaw", "trickroom", "woodhammer"],
+ "abilities": ["Natural Cure"]
+ },
+ {
+ "role": "Staller",
+ "movepool": ["earthquake", "hornleech", "protect", "toxic"],
+ "abilities": ["Harvest"]
+ }
+ ]
+ },
+ "gourgeistsmall": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"],
+ "abilities": ["Frisk"]
+ }
+ ]
+ },
+ "gourgeistlarge": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"],
+ "abilities": ["Frisk"]
+ }
+ ]
+ },
+ "gourgeist": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"],
+ "abilities": ["Frisk"]
+ }
+ ]
+ },
+ "gourgeistsuper": {
+ "level": 87,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["seedbomb", "shadowsneak", "synthesis", "willowisp"],
+ "abilities": ["Frisk"]
+ }
+ ]
+ },
+ "avalugg": {
+ "level": 90,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["avalanche", "curse", "earthquake", "rapidspin", "recover"],
+ "abilities": ["Sturdy"]
+ }
+ ]
+ },
+ "noivern": {
+ "level": 80,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["boomburst", "dracometeor", "flamethrower", "hurricane", "roost", "switcheroo", "uturn"],
+ "abilities": ["Infiltrator"]
+ }
+ ]
+ },
+ "xerneas": {
+ "level": 64,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["focusblast", "geomancy", "moonblast", "psyshock"],
+ "abilities": ["Fairy Aura"]
+ }
+ ]
+ },
+ "yveltal": {
+ "level": 69,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["knockoff", "oblivionwing", "roost", "suckerpunch", "taunt", "toxic", "uturn"],
+ "abilities": ["Dark Aura"]
+ }
+ ]
+ },
+ "zygarde": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dragondance", "earthquake", "extremespeed", "glare", "outrage", "stoneedge", "substitute"],
+ "abilities": ["Aura Break"]
+ }
+ ]
+ },
+ "diancie": {
+ "level": 81,
+ "sets": [
+ {
+ "role": "Bulky Support",
+ "movepool": ["diamondstorm", "earthpower", "healbell", "moonblast", "stealthrock", "toxic"],
+ "abilities": ["Clear Body"]
+ }
+ ]
+ },
+ "dianciemega": {
+ "level": 77,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["calmmind", "diamondstorm", "earthpower", "moonblast", "spikyshield"],
+ "abilities": ["Clear Body"],
+ "preferredTypes": ["Ground"]
+ }
+ ]
+ },
+ "hoopa": {
+ "level": 84,
+ "sets": [
+ {
+ "role": "Fast Attacker",
+ "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "shadowball", "trick"],
+ "abilities": ["Magician"]
+ }
+ ]
+ },
+ "hoopaunbound": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Wallbreaker",
+ "movepool": ["drainpunch", "gunkshot", "hyperspacefury", "trick", "zenheadbutt"],
+ "abilities": ["Magician"],
+ "preferredTypes": ["Psychic"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["drainpunch", "gunkshot", "hyperspacefury", "psychic", "trick"],
+ "abilities": ["Magician"],
+ "preferredTypes": ["Psychic"]
+ }
+ ]
+ },
+ "volcanion": {
+ "level": 79,
+ "sets": [
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["earthpower", "fireblast", "sludgebomb", "steameruption", "superpower", "toxic"],
+ "abilities": ["Water Absorb"]
+ }
+ ]
+ }
+}
diff --git a/data/random-battles/gen6megasrevisited/teams.ts b/data/random-battles/gen6megasrevisited/teams.ts
new file mode 100644
index 0000000000..e494fb7299
--- /dev/null
+++ b/data/random-battles/gen6megasrevisited/teams.ts
@@ -0,0 +1,7 @@
+import RandomGen6Teams from '../gen6/teams';
+
+export class RandomMRTeams extends RandomGen6Teams {
+ override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./sets.json');
+}
+
+export default RandomMRTeams;
diff --git a/data/random-battles/gen7/sets.json b/data/random-battles/gen7/sets.json
index c0f304dcf1..6f0d4b3593 100644
--- a/data/random-battles/gen7/sets.json
+++ b/data/random-battles/gen7/sets.json
@@ -33,6 +33,11 @@
"abilities": ["Blaze", "Solar Power"],
"preferredTypes": ["Normal"]
},
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["acrobatics", "earthquake", "flareblitz", "swordsdance"],
+ "abilities": ["Blaze"]
+ },
{
"role": "Bulky Attacker",
"movepool": ["airslash", "earthquake", "fireblast", "roost", "willowisp"],
@@ -283,7 +288,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 +299,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 +458,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"]
}
]
},
@@ -631,14 +642,10 @@
"level": 85,
"sets": [
{
- "role": "Bulky Support",
- "movepool": ["fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
- "abilities": ["Regenerator"]
- },
- {
- "role": "AV Pivot",
- "movepool": ["fireblast", "futuresight", "icebeam", "psyshock", "scald"],
- "abilities": ["Regenerator"]
+ "role": "Bulky Attacker",
+ "movepool": ["calmmind", "fireblast", "icebeam", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
+ "abilities": ["Regenerator"],
+ "preferredTypes": ["Psychic"]
}
]
},
@@ -882,7 +889,7 @@
]
},
"rhydon": {
- "level": 86,
+ "level": 85,
"sets": [
{
"role": "Bulky Attacker",
@@ -933,7 +940,7 @@
]
},
"seaking": {
- "level": 94,
+ "level": 95,
"sets": [
{
"role": "Fast Attacker",
@@ -969,9 +976,14 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "nastyplot", "psychic", "psyshock", "shadowball"],
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "healingwish", "psychic", "psyshock", "shadowball", "thunderbolt"],
"abilities": ["Filter"],
- "preferredTypes": ["Psychic"]
+ "preferredTypes": ["Fighting"]
+ },
+ {
+ "role": "Setup Sweeper",
+ "movepool": ["dazzlinggleam", "encore", "focusblast", "nastyplot", "psychic", "psyshock"],
+ "abilities": ["Filter"]
}
]
},
@@ -1269,7 +1281,7 @@
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"],
+ "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"],
"abilities": ["Unnerve"]
}
]
@@ -1289,7 +1301,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "shadowball"],
+ "movepool": ["aurasphere", "calmmind", "fireblast", "psystrike", "recover", "signalbeam"],
"abilities": ["Unnerve"]
}
]
@@ -1437,7 +1449,7 @@
]
},
"ampharosmega": {
- "level": 84,
+ "level": 85,
"sets": [
{
"role": "Bulky Attacker",
@@ -1549,7 +1561,7 @@
]
},
"espeon": {
- "level": 84,
+ "level": 83,
"sets": [
{
"role": "Fast Attacker",
@@ -1578,14 +1590,10 @@
"level": 89,
"sets": [
{
- "role": "Bulky Support",
- "movepool": ["fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
- "abilities": ["Regenerator"]
- },
- {
- "role": "AV Pivot",
- "movepool": ["dragontail", "fireblast", "futuresight", "icebeam", "psyshock", "scald"],
- "abilities": ["Regenerator"]
+ "role": "Bulky Attacker",
+ "movepool": ["dragontail", "fireblast", "icebeam", "nastyplot", "psyshock", "scald", "slackoff", "thunderwave", "toxic"],
+ "abilities": ["Regenerator"],
+ "preferredTypes": ["Psychic"]
}
]
},
@@ -1686,7 +1694,7 @@
]
},
"steelixmega": {
- "level": 81,
+ "level": 80,
"sets": [
{
"role": "Bulky Support",
@@ -1710,7 +1718,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["destinybond", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
+ "movepool": ["destinybond", "poisonjab", "spikes", "taunt", "thunderwave", "toxicspikes", "waterfall"],
"abilities": ["Intimidate"]
}
]
@@ -1764,10 +1772,15 @@
"level": 82,
"sets": [
{
- "role": "Wallbreaker",
+ "role": "Setup Sweeper",
"movepool": ["closecombat", "facade", "knockoff", "swordsdance"],
"abilities": ["Guts"]
},
+ {
+ "role": "Wallbreaker",
+ "movepool": ["closecombat", "facade", "knockoff", "megahorn"],
+ "abilities": ["Guts"]
+ },
{
"role": "Fast Attacker",
"movepool": ["closecombat", "knockoff", "megahorn", "stoneedge"],
@@ -1863,7 +1876,7 @@
]
},
"skarmory": {
- "level": 76,
+ "level": 75,
"sets": [
{
"role": "Bulky Support",
@@ -1888,7 +1901,7 @@
]
},
"houndoommega": {
- "level": 81,
+ "level": 80,
"sets": [
{
"role": "Setup Sweeper",
@@ -1937,7 +1950,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "suckerpunch", "throatchop", "thunderwave"],
+ "movepool": ["doubleedge", "earthquake", "jumpkick", "megahorn", "return", "suckerpunch", "throatchop", "thunderwave"],
"abilities": ["Intimidate"],
"preferredTypes": ["Ground"]
}
@@ -2454,7 +2467,7 @@
]
},
"sableyemega": {
- "level": 87,
+ "level": 86,
"sets": [
{
"role": "Bulky Setup",
@@ -2487,8 +2500,13 @@
"level": 87,
"sets": [
{
- "role": "Wallbreaker",
- "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "rockpolish", "stealthrock"],
+ "role": "Setup Sweeper",
+ "movepool": ["earthquake", "headsmash", "heavyslam", "rockpolish"],
+ "abilities": ["Rock Head"]
+ },
+ {
+ "role": "Bulky Attacker",
+ "movepool": ["aquatail", "earthquake", "headsmash", "heavyslam", "stealthrock"],
"abilities": ["Rock Head"],
"preferredTypes": ["Ground"]
}
@@ -2562,7 +2580,7 @@
]
},
"minun": {
- "level": 94,
+ "level": 95,
"sets": [
{
"role": "Bulky Setup",
@@ -2731,7 +2749,7 @@
]
},
"cacturne": {
- "level": 92,
+ "level": 93,
"sets": [
{
"role": "Wallbreaker",
@@ -2748,6 +2766,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"],
@@ -3042,7 +3065,7 @@
]
},
"gorebyss": {
- "level": 84,
+ "level": 85,
"sets": [
{
"role": "Setup Sweeper",
@@ -3368,7 +3391,7 @@
]
},
"deoxysattack": {
- "level": 73,
+ "level": 72,
"sets": [
{
"role": "Wallbreaker",
@@ -3389,11 +3412,6 @@
"role": "Bulky Support",
"movepool": ["knockoff", "recover", "seismictoss", "spikes", "stealthrock", "taunt", "toxic"],
"abilities": ["Pressure"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["focusblast", "nastyplot", "psychic", "psyshock", "recover", "signalbeam"],
- "abilities": ["Pressure"]
}
]
},
@@ -3436,12 +3454,6 @@
"movepool": ["closecombat", "grassknot", "machpunch", "overheat", "stealthrock"],
"abilities": ["Blaze", "Iron Fist"]
},
- {
- "role": "Z-Move user",
- "movepool": ["fireblast", "focusblast", "grassknot", "nastyplot", "vacuumwave"],
- "abilities": ["Blaze"],
- "preferredTypes": ["Fighting"]
- },
{
"role": "Fast Support",
"movepool": ["closecombat", "flareblitz", "machpunch", "stoneedge", "swordsdance", "uturn"],
@@ -3546,12 +3558,7 @@
"sets": [
{
"role": "Bulky Support",
- "movepool": ["metalburst", "roar", "rockblast", "stealthrock", "toxic"],
- "abilities": ["Sturdy"]
- },
- {
- "role": "Staller",
- "movepool": ["metalburst", "protect", "roar", "rockblast", "stealthrock", "toxic"],
+ "movepool": ["metalburst", "protect", "roar", "rockslide", "stealthrock", "toxic"],
"abilities": ["Sturdy"]
}
]
@@ -3749,7 +3756,7 @@
]
},
"honchkrow": {
- "level": 84,
+ "level": 83,
"sets": [
{
"role": "Wallbreaker",
@@ -3992,7 +3999,7 @@
{
"role": "Fast Attacker",
"movepool": ["flashcannon", "hiddenpowerground", "thunderbolt", "voltswitch"],
- "abilities": ["Magnet Pull"]
+ "abilities": ["Analytic", "Magnet Pull"]
},
{
"role": "Staller",
@@ -4043,12 +4050,12 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["earthquake", "knockoff", "leafstorm", "leechseed", "morningsun", "powerwhip", "rockslide", "sleeppowder", "sludgebomb"],
+ "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "leechseed", "morningsun", "rockslide", "sleeppowder", "sludgebomb"],
"abilities": ["Regenerator"]
},
{
"role": "AV Pivot",
- "movepool": ["earthquake", "gigadrain", "knockoff", "powerwhip", "rockslide", "sludgebomb"],
+ "movepool": ["earthquake", "gigadrain", "knockoff", "leafstorm", "rockslide", "sludgebomb"],
"abilities": ["Regenerator"]
}
]
@@ -4115,7 +4122,7 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["doubleedge", "knockoff", "leafblade", "swordsdance", "synthesis", "xscissor"],
+ "movepool": ["doubleedge", "knockoff", "leafblade", "substitute", "swordsdance", "synthesis"],
"abilities": ["Chlorophyll"],
"preferredTypes": ["Dark"]
}
@@ -4317,7 +4324,7 @@
"level": 86,
"sets": [
{
- "role": "Fast Support",
+ "role": "Bulky Attacker",
"movepool": ["defog", "hiddenpowerice", "leafstorm", "thunderbolt", "trick", "voltswitch", "willowisp"],
"abilities": ["Levitate"]
}
@@ -4406,9 +4413,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"]
}
]
},
@@ -4834,9 +4845,14 @@
"abilities": ["Torrent"]
},
{
- "role": "Fast Attacker",
+ "role": "Setup Sweeper",
"movepool": ["aquajet", "knockoff", "liquidation", "megahorn", "sacredsword", "swordsdance"],
"abilities": ["Torrent"]
+ },
+ {
+ "role": "Fast Attacker",
+ "movepool": ["grassknot", "hydropump", "icebeam", "scald"],
+ "abilities": ["Torrent"]
}
]
},
@@ -4970,7 +4986,7 @@
]
},
"swoobat": {
- "level": 87,
+ "level": 88,
"sets": [
{
"role": "Bulky Attacker",
@@ -5067,6 +5083,11 @@
"movepool": ["bulkup", "facade", "knockoff", "stormthrow"],
"abilities": ["Guts"]
},
+ {
+ "role": "Wallbreaker",
+ "movepool": ["facade", "knockoff", "stormthrow", "superpower"],
+ "abilities": ["Guts"]
+ },
{
"role": "Bulky Support",
"movepool": ["bulkup", "circlethrow", "knockoff", "rest", "sleeptalk"],
@@ -5200,9 +5221,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 +5336,7 @@
"sets": [
{
"role": "Bulky Setup",
- "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover", "signalbeam"],
+ "movepool": ["calmmind", "focusblast", "psychic", "psyshock", "recover"],
"abilities": ["Magic Guard"]
}
]
@@ -5429,7 +5450,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["bugbuzz", "gigadrain", "stickyweb", "thunder", "voltswitch"],
+ "movepool": ["bugbuzz", "energyball", "stickyweb", "thunder", "voltswitch"],
"abilities": ["Compound Eyes"],
"preferredTypes": ["Bug"]
}
@@ -5551,7 +5572,7 @@
]
},
"stunfisk": {
- "level": 89,
+ "level": 88,
"sets": [
{
"role": "Bulky Attacker",
@@ -5694,7 +5715,7 @@
},
{
"role": "Bulky Attacker",
- "movepool": ["darkpulse", "defog", "dracometeor", "fireblast", "roost", "uturn"],
+ "movepool": ["darkpulse", "defog", "dracometeor", "fireblast", "roost", "toxic", "uturn"],
"abilities": ["Levitate"]
},
{
@@ -5802,7 +5823,7 @@
]
},
"thundurus": {
- "level": 82,
+ "level": 81,
"sets": [
{
"role": "Setup Sweeper",
@@ -5933,7 +5954,7 @@
]
},
"kyuremwhite": {
- "level": 76,
+ "level": 75,
"sets": [
{
"role": "Fast Attacker",
@@ -6051,7 +6072,7 @@
]
},
"diggersby": {
- "level": 83,
+ "level": 82,
"sets": [
{
"role": "Setup Sweeper",
@@ -6348,11 +6369,6 @@
"sylveon": {
"level": 85,
"sets": [
- {
- "role": "Bulky Attacker",
- "movepool": ["calmmind", "hiddenpowerground", "hypervoice", "protect", "psyshock", "wish"],
- "abilities": ["Pixilate"]
- },
{
"role": "Bulky Setup",
"movepool": ["calmmind", "hypervoice", "protect", "wish"],
@@ -6436,7 +6452,7 @@
]
},
"gourgeistsmall": {
- "level": 90,
+ "level": 91,
"sets": [
{
"role": "Bulky Support",
@@ -6446,7 +6462,7 @@
]
},
"gourgeistlarge": {
- "level": 90,
+ "level": 91,
"sets": [
{
"role": "Bulky Support",
@@ -6650,6 +6666,11 @@
"role": "Bulky Attacker",
"movepool": ["hydropump", "moonblast", "psychic", "scald"],
"abilities": ["Torrent"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["moonblast", "rest", "scald", "sleeptalk"],
+ "abilities": ["Torrent"]
}
]
},
@@ -6818,7 +6839,7 @@
"sets": [
{
"role": "AV Pivot",
- "movepool": ["earthquake", "hiddenpowergrass", "hydropump", "icebeam", "scald", "uturn"],
+ "movepool": ["earthquake", "hydropump", "icebeam", "scald", "uturn"],
"abilities": ["Schooling"],
"preferredTypes": ["Ice"]
},
@@ -6944,7 +6965,7 @@
]
},
"comfey": {
- "level": 88,
+ "level": 87,
"sets": [
{
"role": "Bulky Support",
@@ -7405,7 +7426,12 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["bulkup", "hornleech", "megahorn", "stoneedge", "superpower", "woodhammer"],
+ "movepool": ["hornleech", "megahorn", "stoneedge", "superpower", "woodhammer"],
+ "abilities": ["Grassy Surge"]
+ },
+ {
+ "role": "Bulky Setup",
+ "movepool": ["hornleech", "stoneedge", "superpower", "swordsdance", "woodhammer"],
"abilities": ["Grassy Surge"]
}
]
@@ -7417,6 +7443,11 @@
"role": "Bulky Setup",
"movepool": ["calmmind", "hydropump", "icebeam", "moonblast", "surf", "taunt"],
"abilities": ["Misty Surge"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["defog", "hydropump", "knockoff", "moonblast", "naturesmadness", "surf", "taunt"],
+ "abilities": ["Misty Surge"]
}
]
},
@@ -7453,16 +7484,16 @@
},
{
"role": "Z-Move user",
- "movepool": ["calmmind", "moonblast", "moongeistbeam", "psyshock", "roost"],
+ "movepool": ["calmmind", "moongeistbeam", "psyshock", "roost"],
"abilities": ["Shadow Shield"]
}
]
},
"nihilego": {
- "level": 80,
+ "level": 79,
"sets": [
{
- "role": "Fast Support",
+ "role": "Bulky Attacker",
"movepool": ["grassknot", "hiddenpowerfire", "hiddenpowerground", "powergem", "sludgewave", "stealthrock", "thunderbolt", "toxicspikes"],
"abilities": ["Beast Boost"],
"preferredTypes": ["Rock"]
@@ -7548,7 +7579,7 @@
]
},
"guzzlord": {
- "level": 87,
+ "level": 86,
"sets": [
{
"role": "AV Pivot",
@@ -7615,9 +7646,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 +7657,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..e54572d390 100644
--- a/data/random-battles/gen7/teams.ts
+++ b/data/random-battles/gen7/teams.ts
@@ -135,7 +135,7 @@ export class RandomGen7Teams extends RandomGen8Teams {
Poison: (movePool, moves, abilities, types, counter) => !counter.get('Poison'),
Psychic: (movePool, moves, abilities, types, counter) => (
!counter.get('Psychic') && (
- types.has('Fighting') || movePool.includes('psychicfangs') || movePool.includes('calmmind')
+ types.has('Fighting') || types.has('Fairy') || movePool.includes('psychicfangs') || movePool.includes('calmmind')
)
),
Rock: (movePool, moves, abilities, types, counter, species) => (!counter.get('Rock') && species.baseStats.atk >= 80),
@@ -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'],
@@ -367,6 +367,8 @@ export class RandomGen7Teams extends RandomGen8Teams {
['switcheroo', 'suckerpunch'],
// Jirachi
['bodyslam', 'healingwish'],
+ // Bastiodon
+ [['roar', 'protect'], ['metalburst', 'protect']],
];
for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
@@ -375,7 +377,7 @@ export class RandomGen7Teams extends RandomGen8Teams {
this.incompatibleMoves(moves, movePool, 'knockoff', ['pursuit', 'suckerpunch']);
}
- const statusInflictingMoves = ['thunderwave', 'toxic', 'willowisp', 'yawn'];
+ const statusInflictingMoves = ["nuzzle", 'thunderwave', 'toxic', 'willowisp', 'yawn'];
if (!abilities.includes('Prankster') && role !== 'Staller') {
this.incompatibleMoves(moves, movePool, statusInflictingMoves, statusInflictingMoves);
}
@@ -933,7 +935,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';
@@ -955,12 +957,6 @@ export class RandomGen7Teams extends RandomGen8Teams {
)
) return 'Rocky Helmet';
if (['kingsshield', 'protect', 'spikyshield', 'substitute'].some(m => moves.has(m))) return 'Leftovers';
- if (
- this.dex.getEffectiveness('Ground', species) >= 2 &&
- ability !== 'Levitate' && species.id !== 'golemalola'
- ) {
- return 'Air Balloon';
- }
if (
(role === 'Fast Support' || moves.has('stickyweb')) && isLead && defensiveStatTotal < 255 &&
!counter.get('recovery') && (counter.get('hazards') || counter.get('setup')) &&
@@ -1176,6 +1172,7 @@ export class RandomGen7Teams extends RandomGen8Teams {
return {
name: species.baseSpecies,
species: forme,
+ speciesId: species.id,
gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')),
shiny: this.randomChance(1, 1024),
level,
@@ -1188,6 +1185,60 @@ export class RandomGen7Teams extends RandomGen8Teams {
};
}
+ /**
+ * Checks if the new species is compatible with the other mons currently on the team.
+ */
+ getPokemonCompatibility(
+ species: Species,
+ pokemon: RandomTeamsTypes.RandomSet[],
+ ): boolean {
+ const webSetters = [
+ 'ariados', 'shuckle', 'smeargle', 'masquerain', 'kricketune', 'leavanny', 'galvantula', 'ribombee', 'araquanid',
+ ];
+
+ // Some pokes are setters in gen 7 but not gen 6
+ const gen6ScreenSetters = ['meowstic', 'carbink'];
+ const screenSetters = (this.gen === 7) ? [...gen6ScreenSetters, 'electrode', 'ninetalesalola'] : gen6ScreenSetters;
+
+ const gen6SunSetters = ['charizardmegay', 'ninetales', 'groudon'];
+ const sunSetters = (this.gen === 7) ? [...gen6SunSetters, 'torkoal'] : gen6SunSetters;
+
+ const gen6SandSetters = ['tyranitar', 'tyranitarmega', 'hippowdon'];
+ const sandSetters = (this.gen === 7) ? [...gen6SandSetters, 'gigalith'] : gen6SandSetters;
+
+ const gen6HailSetters = ['abomasnow', 'abomasnowmega', 'aurorus'];
+ const hailSetters = (this.gen === 7) ? [...gen6HailSetters, 'vanilluxe', 'ninetalesalola'] : gen6HailSetters;
+
+ const incompatibilityList = [
+ // These Pokemon with support roles are considered too similar to each other.
+ ['blissey', 'chansey'],
+ ['illumise', 'volbeat'],
+
+ // These combinations are prevented to avoid double webs or screens.
+ [webSetters, webSetters],
+ [screenSetters, screenSetters],
+
+ // These Pokemon are incompatible because the presence of one actively harms the other.
+ // Prevent Dry Skin + sun setting ability
+ ['parasect', 'jynx', 'toxicroak', 'heliolisk', sunSetters],
+ // Prevent Shedinja + sand/hail setting ability
+ ['shedinja', [...sandSetters, ...hailSetters]],
+ ];
+
+ for (const pair of incompatibilityList) {
+ const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]];
+ const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]];
+ if (monsArrayB.includes(species.id)) {
+ if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false;
+ }
+ if (monsArrayA.includes(species.id)) {
+ if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false;
+ }
+ }
+
+ return true;
+ }
+
override randomTeam() {
this.enforceNoDirectCustomBanlistChanges();
@@ -1304,6 +1355,9 @@ export class RandomGen7Teams extends RandomGen8Teams {
if (!this.adjustLevel && (this.getLevel(species) === 100) && numMaxLevelPokemon >= limitFactor) {
continue;
}
+
+ // Check compatibility with team
+ if (!this.getPokemonCompatibility(species, pokemon)) continue;
}
// Limit three of any type combination in Monotype
@@ -1607,8 +1661,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/random-battles/gen8/data.json b/data/random-battles/gen8/data.json
index 6d1ed007f3..61aefbcef3 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"]
@@ -418,13 +418,13 @@
},
"articunogalar": {
"level": 81,
- "moves": ["airslash", "calmmind", "freezingglare", "recover"],
+ "moves": ["calmmind", "freezingglare", "hurricane", "recover"],
"doublesLevel": 81,
"doublesMoves": ["calmmind", "freezingglare", "hurricane", "recover", "tailwind"],
"noDynamaxMoves": ["calmmind", "freezingglare", "hurricane", "recover"]
},
"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": ["fireblast", "nastyplot", "psystrike", "recover", "shadowball"],
+ "level": 71,
+ "moves": ["aurasphere", "fireblast", "nastyplot", "psystrike", "recover"],
"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"]
@@ -1820,7 +1820,7 @@
},
"sylveon": {
"level": 83,
- "moves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock", "shadowball", "wish"],
+ "moves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock", "wish"],
"doublesLevel": 80,
"doublesMoves": ["calmmind", "hypervoice", "mysticalfire", "protect", "psyshock"]
},
@@ -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"]
@@ -2149,7 +2149,7 @@
},
"silvallyice": {
"level": 83,
- "moves": ["flamecharge", "multiattack", "psychicfangs", "swordsdance"],
+ "moves": ["flamecharge", "multiattack", "rockslide", "swordsdance"],
"doublesLevel": 88,
"doublesMoves": ["flamethrower", "multiattack", "partingshot", "tailwind", "thunderbolt"]
},
@@ -2161,7 +2161,7 @@
},
"silvallypsychic": {
"level": 83,
- "moves": ["crunch", "multiattack", "swordsdance", "uturn"],
+ "moves": ["flamecharge", "multiattack", "swordsdance", "xscissor"],
"doublesLevel": 88,
"doublesMoves": ["flamethrower", "multiattack", "partingshot", "tailwind", "xscissor"]
},
@@ -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/gen8/teams.ts b/data/random-battles/gen8/teams.ts
index b2582cf4ad..468d4b932f 100644
--- a/data/random-battles/gen8/teams.ts
+++ b/data/random-battles/gen8/teams.ts
@@ -1526,7 +1526,7 @@ export class RandomGen8Teams {
case 'Cloud Nine':
return (!isNoDynamax || species.id !== 'golduck');
case 'Competitive':
- return (counter.get('Special') < 2 || (moves.has('rest') && moves.has('sleeptalk')));
+ return species.id === 'boltund';
case 'Compound Eyes': case 'No Guard':
return !counter.get('inaccurate');
case 'Cursed Body':
diff --git a/data/random-battles/gen9/1v1-factory-sets.json b/data/random-battles/gen9/1v1-factory-sets.json
new file mode 100644
index 0000000000..301d468169
--- /dev/null
+++ b/data/random-battles/gen9/1v1-factory-sets.json
@@ -0,0 +1,2066 @@
+{
+ "Hoopa-Unbound": {
+ "weight": 9,
+ "sets": [
+ {
+ "species": "Hoopa-Unbound",
+ "item": "Choice Band",
+ "ability": "Magician",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Zen Headbutt"], ["Drain Punch", "Fire Punch"]],
+ "weight": 35
+ },
+ {
+ "species": "Hoopa-Unbound",
+ "item": "Choice Specs",
+ "ability": "Magician",
+ "nature": "Modest",
+ "evs": {"def": 4, "spa": 252, "spe": 252},
+ "moves": [["Psychic"], ["Dark Pulse"], ["Thunderbolt"], ["Grass Knot", "Focus Blast"]],
+ "weight": 25
+ },
+ {
+ "species": "Hoopa-Unbound",
+ "item": "Assault Vest",
+ "ability": "Magician",
+ "nature": "Adamant",
+ "evs": {"hp": 168, "atk": 252, "def": 68, "spe": 20},
+ "moves": [["Hyperspace Fury"], ["Gunk Shot"], ["Psychic Noise"], ["Knock Off"]],
+ "weight": 20
+ },
+ {
+ "species": "Hoopa-Unbound",
+ "item": "Life Orb",
+ "ability": "Magician",
+ "nature": "Lonely",
+ "evs": {"hp": 240, "def": 76, "spa": 96, "spe": 96},
+ "moves": [["Gunk Shot"], ["Psychic"], ["Dark Pulse"], ["Calm Mind"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Primarina": {
+ "weight": 9,
+ "sets": [
+ {
+ "species": "Primarina",
+ "item": "Life Orb",
+ "ability": "Torrent",
+ "nature": "Modest",
+ "evs": {"def": 136, "spa": 120, "spe": 252},
+ "moves": [["Encore"], ["Icy Wind"], ["Moonblast"], ["Hydro Cannon"]],
+ "weight": 40
+ },
+ {
+ "species": "Primarina",
+ "item": "Weakness Policy",
+ "ability": "Torrent",
+ "nature": "Bold",
+ "evs": {"hp": 88, "def": 244, "spe": 176},
+ "moves": [["Hydro Cannon"], ["Draining Kiss", "Moonblast"], ["Calm Mind"], ["Charm"]],
+ "weight": 30
+ },
+ {
+ "species": "Primarina",
+ "item": "Choice Specs",
+ "ability": "Liquid Voice",
+ "nature": "Modest",
+ "evs": {"hp": 252, "def": 160, "spa": 24, "spd": 72},
+ "moves": [["Hydro Cannon"], ["Moonblast"], ["Energy Ball"], ["Uproar"]],
+ "weight": 30
+ }
+ ]
+ },
+ "Ursaluna": {
+ "weight": 9,
+ "sets": [
+ {
+ "species": "Ursaluna",
+ "item": "Choice Band",
+ "ability": "Guts",
+ "nature": "Adamant",
+ "evs": {"hp": 184, "atk": 228, "spd": 96},
+ "moves": [["Headlong Rush"], ["Giga Impact"], ["Gunk Shot"], ["Avalanche", "Ice Punch"]],
+ "weight": 40
+ },
+ {
+ "species": "Ursaluna",
+ "item": "Flame Orb",
+ "ability": "Guts",
+ "nature": "Adamant",
+ "evs": {"atk": 164, "spd": 92, "spe": 252},
+ "moves": [["Facade"], ["Headlong Rush"], ["Swords Dance"], ["Protect"]],
+ "weight": 40
+ },
+ {
+ "species": "Ursaluna",
+ "item": "Assault Vest",
+ "ability": "Guts",
+ "nature": "Adamant",
+ "evs": {"hp": 184, "atk": 188, "spd": 136},
+ "moves": [["Giga Impact"], ["Earthquake"], ["Avalanche", "Counter"], ["Gunk Shot"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Iron Crown": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Iron Crown",
+ "item": "Weakness Policy",
+ "ability": "Quark Drive",
+ "nature": "Bold",
+ "evs": {"hp": 240, "def": 232, "spe": 36},
+ "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock"]],
+ "weight": 25
+ },
+ {
+ "species": "Iron Crown",
+ "item": "Weakness Policy",
+ "ability": "Quark Drive",
+ "nature": "Timid",
+ "evs": {"hp": 252, "spd": 4, "spe": 252},
+ "moves": [["Tachyon Cutter"], ["Iron Defense"], ["Calm Mind"], ["Stored Power", "Psyshock", "Psychic Noise"]],
+ "weight": 25
+ },
+ {
+ "species": "Iron Crown",
+ "item": "Booster Energy",
+ "ability": "Quark Drive",
+ "nature": "Modest",
+ "evs": {"hp": 244, "def": 16, "spa": 196, "spd": 16, "spe": 36},
+ "moves": [["Calm Mind"], ["Psychic Noise"], ["Tachyon Cutter"], ["Focus Blast", "Hyper Beam"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Iron Valiant": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Iron Valiant",
+ "item": "Booster Energy",
+ "ability": "Quark Drive",
+ "nature": "Timid",
+ "evs": {"hp": 252, "def": 232, "spe": 24},
+ "moves": [["Moonblast"], ["Protect"], ["Encore"], ["Disable"]],
+ "weight": 40
+ },
+ {
+ "species": "Iron Valiant",
+ "item": "Booster Energy",
+ "ability": "Quark Drive",
+ "nature": "Jolly",
+ "evs": {"hp": 252, "def": 96, "spd": 136, "spe": 24},
+ "moves": [["Spirit Break"], ["Protect"], ["Encore"], ["Disable"]],
+ "weight": 10
+ },
+ {
+ "species": "Iron Valiant",
+ "item": "Booster Energy",
+ "ability": "Quark Drive",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Spirit Break"], ["Reversal"], ["Disable"], ["Substitute"]],
+ "weight": 20
+ },
+ {
+ "species": "Iron Valiant",
+ "item": "Choice Band",
+ "ability": "Quark Drive",
+ "nature": "Jolly",
+ "evs": {"hp": 4, "atk": 220, "spd": 32, "spe": 252},
+ "moves": [["Spirit Break"], ["Close Combat"], ["Giga Impact"], ["Trick", "Ice Punch"]],
+ "weight": 30
+ }
+ ]
+ },
+ "Metagross": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Metagross",
+ "item": "Weakness Policy",
+ "ability": "Clear Body",
+ "nature": "Impish",
+ "evs": {"hp": 248, "atk": 100, "def": 116, "spd": 44},
+ "moves": [["Heavy Slam"], ["Bullet Punch"], ["Earthquake"], ["Psychic Fangs"]],
+ "weight": 40
+ },
+ {
+ "species": "Metagross",
+ "item": "Assault Vest",
+ "ability": "Clear Body",
+ "nature": "Impish",
+ "evs": {"hp": 252, "atk": 108, "def": 116, "spd": 32},
+ "moves": [["Heavy Slam"], ["Psychic Fangs"], ["Earthquake"], ["Bullet Punch"]],
+ "weight": 40
+ },
+ {
+ "species": "Metagross",
+ "item": "Air Balloon",
+ "ability": "Clear Body",
+ "nature": "Impish",
+ "evs": {"hp": 248, "atk": 28, "def": 136, "spe": 96},
+ "moves": [["Iron Defense"], ["Body Press"], ["Heavy Slam"], ["Bullet Punch"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Pecharunt": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Pecharunt",
+ "item": "Maranga Berry",
+ "ability": "Poison Puppeteer",
+ "nature": "Calm",
+ "evs": {"hp": 248, "def": 4, "spd": 220, "spe": 36},
+ "moves": [["Malignant Chain"], ["Curse"], ["Recover"], ["Parting Shot"]],
+ "weight": 70
+ },
+ {
+ "species": "Pecharunt",
+ "item": "Air Balloon",
+ "ability": "Poison Puppeteer",
+ "nature": "Bold",
+ "evs": {"hp": 248, "def": 224, "spe": 36},
+ "moves": [["Malignant Chain"], ["Curse"], ["Parting Shot"], ["Recover"]],
+ "weight": 30
+ }
+ ]
+ },
+ "Spectrier": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Spectrier",
+ "item": "Life Orb",
+ "ability": "Grim Neigh",
+ "nature": "Timid",
+ "evs": {"hp": 4, "def": 124, "spa": 180, "spe": 200},
+ "moves": [["Hex"], ["Hyper Beam"], ["Will-O-Wisp"], ["Calm Mind"]],
+ "weight": 50
+ },
+ {
+ "species": "Spectrier",
+ "item": "Sitrus Berry",
+ "ability": "Grim Neigh",
+ "nature": "Modest",
+ "evs": {"hp": 196, "def": 68, "spa": 4, "spd": 20, "spe": 220},
+ "moves": [["Calm Mind"], ["Will-O-Wisp"], ["Hex"], ["Draining Kiss"]],
+ "weight": 30
+ },
+ {
+ "species": "Spectrier",
+ "item": "Clear Amulet",
+ "ability": "Grim Neigh",
+ "nature": "Calm",
+ "evs": {"hp": 36, "spd": 252, "spe": 220},
+ "moves": [["Calm Mind"], ["Pain Split"], ["Shadow Ball"], ["Taunt"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Corviknight": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Corviknight",
+ "item": "Maranga Berry",
+ "ability": "Pressure",
+ "nature": "Careful",
+ "evs": {"hp": 248, "def": 56, "spd": 84, "spe": 120},
+ "moves": [["Iron Defense"], ["Body Press"], ["Taunt"], ["Roost"]],
+ "weight": 60
+ },
+ {
+ "species": "Corviknight",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "nature": "Timid",
+ "evs": {"hp": 200, "spd": 56, "spe": 252},
+ "moves": [["Protect"], ["Substitute"], ["Roost"], ["Taunt"]],
+ "weight": 25
+ },
+ {
+ "species": "Corviknight",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "nature": "Adamant",
+ "evs": {"hp": 24, "atk": 228, "def": 44, "spe": 212},
+ "moves": [["Bulk Up"], ["Brave Bird"], ["Iron Head"], ["Taunt"]],
+ "weight": 15
+ }
+ ]
+ },
+ "Dragapult": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Dragapult",
+ "item": "Choice Band",
+ "ability": "Clear Body",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Outrage"], ["Dragon Darts", "Psychic Fangs"], ["Phantom Force"], ["U-turn"]],
+ "weight": 40
+ },
+ {
+ "species": "Dragapult",
+ "item": "Choice Specs",
+ "ability": "Infiltrator",
+ "nature": "Modest",
+ "evs": {"spa": 252, "spd": 4, "spe": 252},
+ "moves": [["Shadow Ball"], ["Draco Meteor"], ["Fire Blast"], ["Thunderbolt", "Hydro Pump"]],
+ "weight": 40
+ },
+ {
+ "species": "Dragapult",
+ "item": "Weakness Policy",
+ "ability": "Clear Body",
+ "nature": "Timid",
+ "evs": {"hp": 48, "def": 248, "spe": 212},
+ "moves": [["Will-O-Wisp"], ["Hex"], ["Substitute"], ["Disable"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Goodra-Hisui": {
+ "weight": 8,
+ "sets": [
+ {
+ "species": "Goodra-Hisui",
+ "item": "Choice Band",
+ "ability": "Sap Sipper",
+ "nature": "Adamant",
+ "evs": {"hp": 248, "atk": 236, "def": 24},
+ "moves": [["Outrage"], ["Heavy Slam"], ["Earthquake"], ["Skitter Smack"]],
+ "weight": 35
+ },
+ {
+ "species": "Goodra-Hisui",
+ "item": "Assault Vest",
+ "ability": "Sap Sipper",
+ "nature": "Sassy",
+ "evs": {"hp": 248, "def": 24, "spa": 60, "spd": 176},
+ "moves": [["Acid Spray"], ["Draco Meteor"], ["Flash Cannon"], ["Knock Off"]],
+ "weight": 30
+ },
+ {
+ "species": "Goodra-Hisui",
+ "item": "Chople Berry",
+ "ability": "Sap Sipper",
+ "nature": "Sassy",
+ "evs": {"hp": 244, "atk": 32, "def": 60, "spa": 84, "spd": 88},
+ "moves": [["Acid Spray"], ["Draco Meteor"], ["Heavy Slam"], ["Counter"]],
+ "weight": 35
+ }
+ ]
+ },
+ "Landorus-Therian": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Landorus-Therian",
+ "item": "Life Orb",
+ "ability": "Intimidate",
+ "nature": "Adamant",
+ "evs": {"hp": 8, "atk": 136, "def": 196, "spe": 168},
+ "moves": [["Earthquake"], ["Swords Dance"], ["Outrage"], ["Smack Down"]],
+ "weight": 40
+ },
+ {
+ "species": "Landorus-Therian",
+ "item": "Choice Band",
+ "ability": "Intimidate",
+ "nature": "Adamant",
+ "evs": {"hp": 232, "atk": 32, "def": 36, "spd": 120, "spe": 88},
+ "moves": [["Earthquake"], ["Outrage"], ["Rock Tomb"], ["Fly"]],
+ "weight": 60
+ }
+ ]
+ },
+ "Ninetales-Alola": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Ninetales-Alola",
+ "item": "Leftovers",
+ "ability": "Snow Warning",
+ "nature": "Timid",
+ "evs": {"hp": 216, "def": 40, "spe": 252},
+ "moves": [["Protect"], ["Encore"], ["Disable"], ["Moonblast"]],
+ "weight": 80
+ },
+ {
+ "species": "Ninetales-Alola",
+ "item": "Life Orb",
+ "ability": "Snow Warning",
+ "nature": "Timid",
+ "evs": {"hp": 208, "spa": 100, "spe": 200},
+ "moves": [["Calm Mind"], ["Freeze-Dry"], ["Blizzard"], ["Moonblast"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Ogerpon-Wellspring": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Ogerpon-Wellspring",
+ "item": "Wellspring Mask",
+ "ability": "Water Absorb",
+ "nature": "Jolly",
+ "evs": {"hp": 248, "atk": 8, "spe": 252},
+ "moves": [["Spiky Shield"], ["Ivy Cudgel", "Power Whip"], ["Leech Seed"], ["Substitute"]],
+ "weight": 30
+ },
+ {
+ "species": "Ogerpon-Wellspring",
+ "item": "Wellspring Mask",
+ "ability": "Water Absorb",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Power Whip"], ["Ivy Cudgel"], ["Encore"], ["Trailblaze", "Rock Tomb"]],
+ "weight": 25
+ },
+ {
+ "species": "Ogerpon-Wellspring",
+ "item": "Wellspring Mask",
+ "ability": "Water Absorb",
+ "nature": "Adamant",
+ "evs": {"hp": 200, "atk": 192, "spe": 116},
+ "moves": [["Power Whip"], ["Ivy Cudgel"], ["Knock Off"], ["Low Kick", "Play Rough", "Encore"]],
+ "weight": 25
+ },
+ {
+ "species": "Ogerpon-Wellspring",
+ "item": "Wellspring Mask",
+ "ability": "Water Absorb",
+ "nature": "Impish",
+ "evs": {"hp": 252, "atk": 80, "def": 144, "spe": 32},
+ "moves": [["Trailblaze"], ["Counter"], ["Encore"], ["Ivy Cudgel"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Raging Bolt": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Raging Bolt",
+ "item": "Booster Energy",
+ "ability": "Protosynthesis",
+ "nature": "Modest",
+ "evs": {"hp": 240, "def": 24, "spa": 240},
+ "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Taunt"]],
+ "weight": 50
+ },
+ {
+ "species": "Raging Bolt",
+ "item": "Booster Energy",
+ "ability": "Protosynthesis",
+ "nature": "Modest",
+ "evs": {"hp": 96, "spa": 232, "spd": 44, "spe": 136},
+ "moves": [["Thunderbolt"], ["Draco Meteor"], ["Thunderclap"], ["Calm Mind", "Taunt"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Urshifu": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Urshifu",
+ "item": "Life Orb",
+ "ability": "Unseen Fist",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Bulk Up"], ["Wicked Blow"], ["Sucker Punch"], ["Close Combat", "Low Kick"]],
+ "weight": 65
+ },
+ {
+ "species": "Urshifu",
+ "item": "Assault Vest",
+ "ability": "Unseen Fist",
+ "nature": "Adamant",
+ "evs": {"hp": 160, "atk": 92, "def": 16, "spd": 160, "spe": 80},
+ "moves": [["Wicked Blow"], ["Low Kick"], ["Rock Tomb"], ["Iron Head", "Sucker Punch", "U-turn"]],
+ "weight": 35
+ }
+ ]
+ },
+ "Volcarona": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Volcarona",
+ "item": "Life Orb",
+ "ability": "Swarm",
+ "nature": "Modest",
+ "evs": {"hp": 252, "def": 32, "spa": 12, "spd": 16, "spe": 196},
+ "moves": [["Quiver Dance"], ["Bug Buzz"], ["Overheat"], ["Substitute"]],
+ "weight": 60
+ },
+ {
+ "species": "Volcarona",
+ "item": "Passho Berry",
+ "ability": "Swarm",
+ "nature": "Calm",
+ "evs": {"hp": 192, "spa": 76, "spd": 44, "spe": 196},
+ "moves": [["Quiver Dance"], ["Overheat"], ["Bug Buzz"], ["Giga Drain"]],
+ "weight": 40
+ }
+ ]
+ },
+ "Zapdos": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Zapdos",
+ "item": "Clear Amulet",
+ "ability": "Pressure",
+ "nature": "Timid",
+ "evs": {"hp": 248, "spd": 84, "spe": 176},
+ "moves": [["Hurricane"], ["Thunderbolt"], ["Eerie Impulse"], ["Roost"]],
+ "weight": 60
+ },
+ {
+ "species": "Zapdos",
+ "item": "Life Orb",
+ "ability": "Pressure",
+ "nature": "Timid",
+ "evs": {"hp": 8, "spa": 200, "spd": 48, "spe": 252},
+ "moves": [["Hurricane"], ["Thunderbolt"], ["Charge"], ["Heat Wave"]],
+ "weight": 20
+ },
+ {
+ "species": "Zapdos",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "nature": "Timid",
+ "evs": {"hp": 248, "spa": 8, "spe": 252},
+ "moves": [["Protect"], ["Substitute"], ["Roost"], ["Thunderbolt"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Garchomp": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Garchomp",
+ "item": "Life Orb",
+ "ability": "Rough Skin",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 176, "spe": 80},
+ "moves": [["Earthquake"], ["Scale Shot"], ["Swords Dance"], ["Outrage"]],
+ "weight": 60
+ },
+ {
+ "species": "Garchomp",
+ "item": "Choice Band",
+ "ability": "Rough Skin",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Outrage"], ["Earthquake"], ["Scale Shot"], ["Fire Fang", "Iron Head"]],
+ "weight": 40
+ }
+ ]
+ },
+ "Haxorus": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Haxorus",
+ "item": "Choice Band",
+ "ability": "Unnerve",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Outrage"], ["Scale Shot"], ["First Impression"], ["Close Combat", "Iron Tail", "Poison Jab", "Earthquake"]],
+ "weight": 60
+ },
+ {
+ "species": "Haxorus",
+ "item": "Choice Scarf",
+ "ability": "Unnerve",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Outrage"], ["Close Combat"], ["Rock Slide", "X-Scissor"], ["Poison Jab", "Iron Tail", "Earthquake"]],
+ "weight": 40
+ }
+ ]
+ },
+ "Iron Hands": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Iron Hands",
+ "item": "Booster Energy",
+ "ability": "Quark Drive",
+ "nature": "Adamant",
+ "evs": {"atk": 204, "spd": 220, "spe": 84},
+ "moves": [["Close Combat"], ["Supercell Slam"], ["Fake Out"], ["Swords Dance", "Earthquake", "Heavy Slam"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Meowscarada": {
+ "weight": 7,
+ "sets": [
+ {
+ "species": "Meowscarada",
+ "item": "Choice Band",
+ "ability": "Protean",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Flower Trick"], ["Knock Off"], ["Triple Axel"], ["Giga Impact", "Low Kick", "Play Rough"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Roaring Moon": {
+ "weight": 6,
+ "sets": [
+ {
+ "species": "Roaring Moon",
+ "item": "Booster Energy",
+ "ability": "Protosynthesis",
+ "nature": "Jolly",
+ "evs": {"hp": 8, "atk": 156, "spd": 160, "spe": 184},
+ "moves": [["Outrage"], ["Knock Off"], ["Acrobatics", "Dragon Dance"], ["Substitute"]],
+ "weight": 50
+ },
+ {
+ "species": "Roaring Moon",
+ "item": "Choice Band",
+ "ability": "Protosynthesis",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Outrage"], ["Knock Off"], ["Earthquake"], ["Iron Head"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Sylveon": {
+ "weight": 6,
+ "sets": [
+ {
+ "species": "Sylveon",
+ "item": "Life Orb",
+ "ability": "Pixilate",
+ "nature": "Modest",
+ "evs": {"hp": 104, "def": 224, "spa": 180},
+ "moves": [["Hyper Beam"], ["Hyper Voice"], ["Calm Mind"], ["Fake Tears", "Shadow Ball", "Psyshock"]],
+ "weight": 70
+ },
+ {
+ "species": "Sylveon",
+ "item": "Weakness Policy",
+ "ability": "Pixilate",
+ "nature": "Bold",
+ "evs": {"hp": 88, "def": 244, "spe": 176},
+ "moves": [["Hyper Beam"], ["Draining Kiss"], ["Charm"], ["Calm Mind"]],
+ "ivs": {"atk": 0},
+ "weight": 30
+ }
+ ]
+ },
+ "Urshifu-Rapid-Strike": {
+ "weight": 6,
+ "sets": [
+ {
+ "species": "Urshifu-Rapid-Strike",
+ "item": "Choice Band",
+ "ability": "Unseen Fist",
+ "nature": "Adamant",
+ "evs": {"hp": 252, "atk": 220, "def": 32, "spd": 4},
+ "moves": [["Surging Strikes"], ["Close Combat"], ["Low Kick", "Thunder Punch"], ["Iron Head", "Ice Spinner"]],
+ "weight": 65
+ },
+ {
+ "species": "Urshifu-Rapid-Strike",
+ "item": "Life Orb",
+ "ability": "Unseen Fist",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Surging Strikes"], ["Close Combat"], ["Bulk Up"], ["Aqua Jet"]],
+ "weight": 35
+ }
+ ]
+ },
+ "Volcanion": {
+ "weight": 6,
+ "sets": [
+ {
+ "species": "Volcanion",
+ "item": "Life Orb",
+ "ability": "Water Absorb",
+ "nature": "Rash",
+ "evs": {"hp": 136, "atk": 8, "def": 88, "spa": 44, "spe": 232},
+ "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Bomb"], ["Flame Charge"]],
+ "weight": 40
+ },
+ {
+ "species": "Volcanion",
+ "item": "Assault Vest",
+ "ability": "Water Absorb",
+ "nature": "Modest",
+ "evs": {"hp": 244, "spa": 184, "spd": 80},
+ "moves": [["Overheat"], ["Steam Eruption"], ["Sludge Wave"], ["Earth Power", "Flame Charge", "Focus Blast"]],
+ "weight": 35
+ },
+ {
+ "species": "Volcanion",
+ "item": "Air Balloon",
+ "ability": "Water Absorb",
+ "nature": "Modest",
+ "evs": {"hp": 136, "def": 88, "spa": 188, "spe": 96},
+ "moves": [["Substitute"], ["Steam Eruption"], ["Overheat"], ["Sludge Wave"]],
+ "weight": 25
+ }
+ ]
+ },
+ "Walking Wake": {
+ "weight": 6,
+ "sets": [
+ {
+ "species": "Walking Wake",
+ "item": "Booster Energy",
+ "ability": "Protosynthesis",
+ "nature": "Timid",
+ "evs": {"def": 4, "spa": 252, "spe": 252},
+ "moves": [["Draco Meteor"], ["Hydro Pump"], ["Flamethrower"], ["Hurricane"]],
+ "weight": 75
+ },
+ {
+ "species": "Walking Wake",
+ "item": "Booster Energy",
+ "ability": "Protosynthesis",
+ "nature": "Timid",
+ "evs": {"hp": 8, "def": 56, "spa": 192, "spe": 252},
+ "moves": [["Draco Meteor"], ["Hydro Pump"], ["Hurricane"], ["Chilling Water"]],
+ "weight": 25
+ }
+ ]
+ },
+ "Annihilape": {
+ "weight": 5,
+ "sets": [
+ {
+ "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": 35
+ },
+ {
+ "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": 15
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "Cresselia": {
+ "weight": 5,
+ "sets": [
+ {
+ "species": "Cresselia",
+ "item": "Clear Amulet",
+ "ability": "Levitate",
+ "nature": "Bold",
+ "evs": {"hp": 252, "def": 44, "spd": 72, "spe": 140},
+ "moves": [["Calm Mind"], ["Moonlight"], ["Stored Power"], ["Reflect"]],
+ "weight": 50
+ },
+ {
+ "species": "Cresselia",
+ "item": "Choice Scarf",
+ "ability": "Levitate",
+ "nature": "Bold",
+ "evs": {"hp": 240, "def": 64, "spa": 56, "spd": 36, "spe": 112},
+ "moves": [["Psychic"], ["Ice Beam", "Moonblast"], ["Trick"], ["Moonlight"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Donphan": {
+ "weight": 5,
+ "sets": [
+ {
+ "species": "Donphan",
+ "item": "Choice Band",
+ "ability": "Sturdy",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Earthquake"], ["Gunk Shot"], ["Head Smash"], ["Play Rough", "Ice Shard"]],
+ "weight": 80
+ },
+ {
+ "species": "Donphan",
+ "item": "Expert Belt",
+ "ability": "Sturdy",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Earthquake"], ["Gunk Shot"], ["Trailblaze"], ["Encore"]],
+ "weight": 20
+ }
+ ]
+ },
+ "Entei": {
+ "weight": 5,
+ "sets": [
+ {
+ "species": "Entei",
+ "item": "Assault Vest",
+ "ability": "Inner Focus",
+ "nature": "Adamant",
+ "evs": {"hp": 240, "atk": 112, "def": 132, "spd": 24},
+ "moves": [["Sacred Fire"], ["Eruption"], ["Flame Charge"], ["Extreme Speed"]],
+ "weight": 50
+ },
+ {
+ "species": "Entei",
+ "item": "Leftovers",
+ "ability": "Pressure",
+ "nature": "Jolly",
+ "evs": {"hp": 128, "def": 116, "spd": 12, "spe": 252},
+ "moves": [["Sacred Fire"], ["Substitute"], ["Protect"], ["Flame Charge"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Great Tusk": {
+ "weight": 5,
+ "sets": [
+ {
+ "species": "Great Tusk",
+ "item": "Choice Band",
+ "ability": "Protosynthesis",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Earthquake", "Headlong Rush"], ["Close Combat"], ["Supercell Slam"], ["Ice Spinner", "Heavy Slam", "Megahorn"]],
+ "weight": 40
+ },
+ {
+ "species": "Great Tusk",
+ "item": "Booster Energy",
+ "ability": "Protosynthesis",
+ "nature": "Adamant",
+ "evs": {"hp": 24, "atk": 224, "def": 56, "spe": 204},
+ "moves": [["Bulk Up"], ["Headlong Rush"], ["Close Combat"], ["Ice Spinner", "Knock Off"]],
+ "weight": 30
+ },
+ {
+ "species": "Great Tusk",
+ "item": "Choice Scarf",
+ "ability": "Protosynthesis",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Earthquake"], ["Close Combat"], ["Head Smash"], ["Ice Spinner", "Knock Off", "Megahorn", "Heavy Slam"]],
+ "weight": 30
+ }
+ ]
+ },
+ "Manaphy": {
+ "weight": 5,
+ "sets": [
+ {
+ "species": "Manaphy",
+ "item": "Life Orb",
+ "ability": "Hydration",
+ "nature": "Timid",
+ "evs": {"hp": 60, "def": 68, "spa": 128, "spe": 252},
+ "moves": [["Tail Glow"], ["Surf"], ["Alluring Voice"], ["Energy Ball"]],
+ "weight": 50
+ },
+ {
+ "species": "Manaphy",
+ "item": "Clear Amulet",
+ "ability": "Hydration",
+ "nature": "Timid",
+ "evs": {"hp": 172, "def": 84, "spe": 252},
+ "moves": [["Take Heart"], ["Acid Armor"], ["Rest"], ["Scald"]],
+ "weight": 25
+ },
+ {
+ "species": "Manaphy",
+ "item": ["Sitrus Berry", "Chesto Berry"],
+ "ability": "Hydration",
+ "nature": "Timid",
+ "evs": {"hp": 252, "def": 4, "spe": 252},
+ "moves": [["Scald"], ["Acid Armor"], ["Take Heart"], ["Rest"]],
+ "weight": 25
+ }
+ ]
+ },
+ "Moltres-Galar": {
+ "weight": 5,
+ "sets": [
+ {
+ "species": "Moltres-Galar",
+ "item": "Life Orb",
+ "ability": "Berserk",
+ "nature": "Modest",
+ "evs": {"atk": 4, "def": 232, "spa": 96, "spe": 176},
+ "moves": [["Fiery Wrath"], ["Hurricane"], ["Taunt", "Sucker Punch"], ["Nasty Plot"]],
+ "weight": 50
+ },
+ {
+ "species": "Moltres-Galar",
+ "item": "Weakness Policy",
+ "ability": "Berserk",
+ "nature": "Modest",
+ "evs": {"hp": 240, "def": 216, "spa": 36, "spd": 16},
+ "moves": [["Fiery Wrath"], ["Hurricane"], ["Sucker Punch"], ["Air Slash", "Nasty Plot", "Taunt"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Registeel": {
+ "weight": 4,
+ "sets": [
+ {
+ "species": "Registeel",
+ "item": "Leftovers",
+ "ability": "Clear Body",
+ "nature": "Timid",
+ "evs": {"hp": 252, "def": 4, "spe": 252},
+ "moves": [["Iron Defense"], ["Amnesia"], ["Rest"], ["Body Press"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Skeledirge": {
+ "weight": 4,
+ "sets": [
+ {
+ "species": "Skeledirge",
+ "item": "Weakness Policy",
+ "ability": "Unaware",
+ "nature": "Bold",
+ "evs": {"hp": 248, "def": 100, "spa": 124, "spd": 36},
+ "moves": [["Shadow Ball"], ["Blast Burn"], ["Torch Song"], ["Encore"]],
+ "weight": 50
+ },
+ {
+ "species": "Skeledirge",
+ "item": "Air Balloon",
+ "ability": "Unaware",
+ "nature": "Bold",
+ "evs": {"hp": 248, "def": 252, "spe": 8},
+ "moves": [["Will-O-Wisp"], ["Torch Song"], ["Encore"], ["Slack Off", "Blast Burn"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Sneasler": {
+ "weight": 4,
+ "sets": [
+ {
+ "species": "Sneasler",
+ "item": "Normal Gem",
+ "ability": "Unburden",
+ "nature": "Adamant",
+ "evs": {"hp": 160, "atk": 252, "def": 44, "spd": 4, "spe": 48},
+ "moves": [["Fake Out"], ["Gunk Shot"], ["Close Combat"], ["Feint"]],
+ "weight": 50
+ },
+ {
+ "species": "Sneasler",
+ "item": "Liechi Berry",
+ "ability": "Unburden",
+ "nature": ["Adamant", "Jolly"],
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Endure"], ["Gunk Shot"], ["Reversal"], ["Taunt", "Substitute"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Zarude": {
+ "weight": 4,
+ "sets": [
+ {
+ "species": "Zarude",
+ "item": "Weakness Policy",
+ "ability": "Leaf Guard",
+ "nature": "Jolly",
+ "evs": {"hp": 128, "atk": 144, "spd": 4, "spe": 232},
+ "moves": [["Power Whip"], ["Knock Off"], ["Encore"], ["Bulk Up"]],
+ "weight": 50
+ },
+ {
+ "species": "Zarude",
+ "item": "Choice Band",
+ "ability": "Leaf Guard",
+ "nature": "Adamant",
+ "evs": {"hp": 120, "atk": 68, "spd": 76, "spe": 244},
+ "moves": [["Knock Off"], ["Power Whip"], ["Rock Slide"], ["Bullet Seed", "Low Kick"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Azumarill": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Azumarill",
+ "item": "Life Orb",
+ "ability": "Huge Power",
+ "nature": "Adamant",
+ "evs": {"hp": 148, "atk": 232, "spd": 84, "spe": 44},
+ "moves": [["Play Rough"], ["Liquidation"], ["Trailblaze"], ["Encore"]],
+ "weight": 65
+ },
+ {
+ "species": "Azumarill",
+ "item": "Leftovers",
+ "ability": "Sap Sipper",
+ "nature": "Bold",
+ "evs": {"hp": 252, "def": 192, "spd": 64},
+ "moves": [["Charm"], ["Rest"], ["Amnesia"], ["Chilling Water"]],
+ "weight": 35
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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"]],
+ "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
+ }
+ ]
+ },
+ "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": 50
+ },
+ {
+ "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": 50
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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": 3,
+ "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
+ }
+ ]
+ },
+ "Arcanine-Hisui": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Arcanine-Hisui",
+ "item": "Choice Band",
+ "ability": "Rock Head",
+ "nature": ["Adamant", "Jolly"],
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage", "Iron Head"]],
+ "weight": 50
+ },
+ {
+ "species": "Arcanine-Hisui",
+ "item": "Choice Scarf",
+ "ability": "Rock Head",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Head Smash"], ["Flare Blitz"], ["Close Combat"], ["Outrage"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Bellibolt": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Bellibolt",
+ "item": "Life Orb",
+ "ability": "Electromorphosis",
+ "nature": "Quiet",
+ "evs": {"hp": 240, "def": 80, "spa": 136, "spd": 52},
+ "moves": [["Thunder"], ["Parabolic Charge"], ["Sucker Punch"], ["Soak"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Florges": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Florges",
+ "item": ["Clear Amulet", "Leftovers"],
+ "ability": "Flower Veil",
+ "nature": "Bold",
+ "evs": {"hp": 108, "def": 252, "spe": 148},
+ "moves": [["Calm Mind"], ["Synthesis"], ["Moonblast"], ["Charm"]],
+ "weight": 50
+ },
+ {
+ "species": "Florges",
+ "item": "Choice Scarf",
+ "ability": "Flower Veil",
+ "nature": "Timid",
+ "evs": {"hp": 88, "def": 232, "spe": 188},
+ "moves": [["Moonblast"], ["Trick"], ["Synthesis"], ["Calm Mind"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Landorus": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Landorus",
+ "item": "Life Orb",
+ "ability": "Sheer Force",
+ "nature": "Timid",
+ "evs": {"spa": 252, "spd": 4, "spe": 252},
+ "moves": [["Earth Power"], ["Sludge Wave"], ["Focus Blast", "Taunt"], ["Smack Down", "Rock Slide"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Rhyperior": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Rhyperior",
+ "item": "Choice Band",
+ "ability": "Solid Rock",
+ "nature": "Adamant",
+ "evs": {"hp": 248, "atk": 252, "def": 8},
+ "moves": [["Earthquake"], ["Rock Wrecker"], ["Rock Blast"], ["Avalanche"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Ursaluna-Bloodmoon": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Ursaluna-Bloodmoon",
+ "item": "Chople Berry",
+ "ability": "Mind's Eye",
+ "nature": "Modest",
+ "evs": {"hp": 252, "def": 156, "spa": 100},
+ "moves": [["Blood Moon"], ["Earth Power"], ["Counter"], ["Vacuum Wave"]],
+ "weight": 50
+ },
+ {
+ "species": "Ursaluna-Bloodmoon",
+ "item": "Choice Specs",
+ "ability": "Mind's Eye",
+ "nature": "Modest",
+ "evs": {"hp": 252, "def": 52, "spa": 112, "spd": 92},
+ "moves": [["Hyper Beam"], ["Snarl", "Vacuum Wave"], ["Earth Power"], ["Uproar"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Whimsicott": {
+ "weight": 3,
+ "sets": [
+ {
+ "species": "Whimsicott",
+ "item": ["Babiri Berry", "Mental Herb"],
+ "ability": "Prankster",
+ "nature": "Bold",
+ "evs": {"hp": 248, "def": 232, "spd": 28},
+ "moves": [["Leech Seed"], ["Substitute"], ["Protect"], ["Taunt"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Baxcalibur": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Baxcalibur",
+ "item": "Choice Band",
+ "ability": "Thermal Exchange",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Outrage"], ["Icicle Crash", "Icicle Spear"], ["Earthquake"], ["Ice Shard", "Scale Shot", "Iron Head"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Fezandipiti": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Fezandipiti",
+ "item": "Life Orb",
+ "ability": "Technician",
+ "nature": "Adamant",
+ "evs": {"hp": 88, "atk": 220, "spd": 136, "spe": 64},
+ "moves": [["Gunk Shot"], ["Play Rough"], ["Dual Wingbeat"], ["Swords Dance"]],
+ "weight": 60
+ },
+ {
+ "species": "Fezandipiti",
+ "item": "Air Balloon",
+ "ability": "Toxic Chain",
+ "nature": "Calm",
+ "evs": {"hp": 252, "def": 124, "spd": 80, "spe": 52},
+ "moves": [["Charm"], ["Moonblast"], ["Icy Wind"], ["Roost"]],
+ "weight": 40
+ }
+ ]
+ },
+ "Greninja": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Greninja",
+ "item": "Choice Specs",
+ "ability": "Protean",
+ "nature": "Timid",
+ "evs": {"spa": 252, "spd": 4, "spe": 252},
+ "moves": [["Ice Beam"], ["Hydro Cannon"], ["Sludge Wave"], ["Dark Pulse", "Grass Knot"]],
+ "weight": 60
+ },
+ {
+ "species": "Greninja",
+ "item": "Life Orb",
+ "ability": "Protean",
+ "nature": "Hasty",
+ "evs": {"atk": 252, "spa": 8, "spd": 64, "spe": 184},
+ "moves": [["Gunk Shot"], ["Hydro Cannon"], ["U-turn"], ["Shadow Sneak"]],
+ "weight": 40
+ }
+ ]
+ },
+ "Iron Treads": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Iron Treads",
+ "item": "Choice Band",
+ "ability": "Quark Drive",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Heavy Slam"], ["Earthquake"], ["Megahorn"], ["Ice Spinner"]],
+ "weight": 70
+ },
+ {
+ "species": "Iron Treads",
+ "item": "Booster Energy",
+ "ability": "Quark Drive",
+ "nature": "Jolly",
+ "evs": {"hp": 252, "atk": 116, "def": 60, "spe": 80},
+ "moves": [["Iron Defense"], ["Body Press"], ["Earthquake"], ["Heavy Slam"]],
+ "weight": 30
+ }
+ ]
+ },
+ "Ting-Lu": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Ting-Lu",
+ "item": "Weakness Policy",
+ "ability": "Vessel of Ruin",
+ "nature": "Impish",
+ "evs": {"hp": 80, "atk": 176, "def": 4, "spd": 204, "spe": 44},
+ "moves": [["Taunt", "Ruination"], ["Heavy Slam"], ["Earthquake"], ["Payback"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Avalugg-Hisui": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Avalugg-Hisui",
+ "item": "Choice Band",
+ "ability": "Sturdy",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Avalanche"], ["Heavy Slam"], ["Rock Blast", "Stone Edge"], ["Earthquake", "Mirror Coat", "Icicle Spear"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Zapdos-Galar": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Zapdos-Galar",
+ "item": "Assault Vest",
+ "ability": "Defiant",
+ "nature": "Adamant",
+ "evs": {"hp": 144, "atk": 68, "def": 4, "spd": 56, "spe": 236},
+ "moves": [["Thunderous Kick"], ["Close Combat"], ["Brave Bird"], ["Knock Off"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Tinkaton": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Tinkaton",
+ "item": "Life Orb",
+ "ability": "Mold Breaker",
+ "nature": "Adamant",
+ "evs": {"hp": 112, "atk": 232, "def": 16, "spd": 4, "spe": 144},
+ "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]],
+ "weight": 50
+ },
+ {
+ "species": "Tinkaton",
+ "item": "Air Balloon",
+ "ability": "Mold Breaker",
+ "nature": "Adamant",
+ "evs": {"hp": 156, "atk": 220, "spd": 68, "spe": 64},
+ "moves": [["Play Rough"], ["Gigaton Hammer"], ["Encore"], ["Swords Dance"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Heatran": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Heatran",
+ "item": "Air Balloon",
+ "ability": "Flash Fire",
+ "nature": "Modest",
+ "evs": {"spa": 252, "spd": 4, "spe": 252},
+ "moves": [["Overheat"], ["Flash Cannon"], ["Substitute", "Earth Power"], ["Metal Sound"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Iron Bundle": {
+ "weight": 2,
+ "sets": [
+ {
+ "species": "Iron Bundle",
+ "item": "Booster Energy",
+ "ability": "Quark Drive",
+ "nature": "Modest",
+ "evs": {"hp": 28, "spa": 116, "spd": 216, "spe": 148},
+ "moves": [["Thief"], ["Hydro Pump"], ["Freeze-Dry"], ["Encore"]],
+ "weight": 50
+ },
+ {
+ "species": "Iron Bundle",
+ "item": "Choice Specs",
+ "ability": "Quark Drive",
+ "nature": "Timid",
+ "evs": {"hp": 44, "def": 152, "spa": 144, "spe": 168},
+ "moves": [["Ice Beam"], ["Freeze-Dry"], ["Hydro Pump"], ["Chilling Water"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Sandy Shocks": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Sandy Shocks",
+ "item": "Booster Energy",
+ "ability": "Protosynthesis",
+ "nature": "Timid",
+ "evs": {"spa": 252, "spd": 4, "spe": 252},
+ "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Metal Sound"]],
+ "weight": 50
+ },
+ {
+ "species": "Sandy Shocks",
+ "item": "Choice Specs",
+ "ability": "Protosynthesis",
+ "nature": "Timid",
+ "evs": {"spa": 252, "spd": 4, "spe": 252},
+ "moves": [["Earth Power"], ["Thunderbolt"], ["Power Gem"], ["Hyper Beam"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Ceruledge": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Ceruledge",
+ "item": "Weakness Policy",
+ "ability": "Weak Armor",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Endure"], ["Flare Blitz"], ["Close Combat"], ["Poltergeist"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Klefki": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Klefki",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "nature": "Bold",
+ "evs": {"hp": 200, "def": 128, "spa": 24, "spd": 156},
+ "moves": [["Draining Kiss"], ["Iron Defense"], ["Calm Mind"], ["Stored Power"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Blastoise": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Blastoise",
+ "item": "Life Orb",
+ "ability": "Torrent",
+ "nature": "Bold",
+ "evs": {"hp": 132, "def": 136, "spa": 128, "spe": 112},
+ "moves": [["Shell Smash"], ["Hydro Cannon"], ["Ice Beam"], ["Substitute"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Maushold": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Maushold-Four",
+ "item": "Wide Lens",
+ "ability": "Technician",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Population Bomb"], ["Encore"], ["Tidy Up"], ["Tickle"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Blaziken": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Blaziken",
+ "item": "Liechi Berry",
+ "ability": "Speed Boost",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Endure"], ["Flare Blitz"], ["Reversal"], ["Swords Dance"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Tauros-Paldea-Blaze": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Tauros-Paldea-Blaze",
+ "item": "Weakness Policy",
+ "ability": "Intimidate",
+ "nature": "Adamant",
+ "evs": {"hp": 168, "atk": 76, "def": 32, "spe": 232},
+ "moves": [["Close Combat"], ["Flare Blitz"], ["Bulk Up"], ["Will-O-Wisp"]],
+ "weight": 100
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "Iron Boulder": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Iron Boulder",
+ "item": "Choice Band",
+ "ability": "Quark Drive",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Mighty Cleave"], ["Zen Headbutt"], ["Sacred Sword"], ["Megahorn"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Talonflame": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Talonflame",
+ "item": "Choice Band",
+ "ability": "Gale Wings",
+ "nature": "Adamant",
+ "evs": {"atk": 252, "def": 4, "spe": 252},
+ "moves": [["Brave Bird"], ["Flare Blitz"], ["U-turn"], ["Fly", "Dual Wingbeat"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Okidogi": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Okidogi",
+ "item": "Choice Band",
+ "ability": "Toxic Chain",
+ "nature": "Adamant",
+ "evs": {"hp": 216, "atk": 164, "spd": 28, "spe": 100},
+ "moves": [["Gunk Shot"], ["Low Kick"], ["Knock Off"], ["Outrage"]],
+ "weight": 50
+ },
+ {
+ "species": "Okidogi",
+ "item": "Assault Vest",
+ "ability": "Toxic Chain",
+ "nature": "Adamant",
+ "evs": {"hp": 104, "atk": 92, "spd": 96, "spe": 216},
+ "moves": [["Gunk Shot"], ["Close Combat"], ["Poison Jab"], ["Counter"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Slaking": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Slaking",
+ "item": "Choice Band",
+ "ability": "Truant",
+ "nature": "Jolly",
+ "evs": {"atk": 252, "spd": 4, "spe": 252},
+ "moves": [["Giga Impact"], ["Earthquake"], ["Ice Punch"], ["Low Kick", "Heavy Slam"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Clodsire": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Clodsire",
+ "item": "Kee Berry",
+ "ability": "Unaware",
+ "nature": "Relaxed",
+ "evs": {"hp": 252, "def": 252, "spd": 4},
+ "moves": [["Counter"], ["Amnesia"], ["Toxic"], ["Recover"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Salazzle": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Salazzle",
+ "item": "Leftovers",
+ "ability": "Oblivious",
+ "nature": "Timid",
+ "evs": {"hp": 136, "spd": 120, "spe": 252},
+ "moves": [["Protect"], ["Encore"], ["Disable"], ["Flamethrower"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Sableye": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Sableye",
+ "item": "Choice Scarf",
+ "ability": "Prankster",
+ "nature": "Impish",
+ "evs": {"hp": 252, "def": 252, "spd": 4},
+ "moves": [["Trick"], ["Disable"], ["Recover"], ["Fling"]],
+ "weight": 50
+ },
+ {
+ "species": "Sableye",
+ "item": "Leftovers",
+ "ability": "Prankster",
+ "nature": "Bold",
+ "evs": {"hp": 252, "def": 252, "spd": 4},
+ "moves": [["Protect"], ["Encore"], ["Disable"], ["Night Shade"]],
+ "weight": 50
+ }
+ ]
+ },
+ "Grafaiai": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Grafaiai",
+ "item": "Lagging Tail",
+ "ability": "Prankster",
+ "nature": "Sassy",
+ "evs": {"hp": 248, "def": 96, "spd": 164},
+ "moves": [["Dig"], ["Copycat"], ["Encore"], ["Poison Jab"]],
+ "ivs": {"spe": 0},
+ "weight": 100
+ }
+ ]
+ },
+ "Latias": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Latias",
+ "item": "Weakness Policy",
+ "ability": "Levitate",
+ "nature": "Timid",
+ "evs": {"hp": 252, "spd": 4, "spe": 252},
+ "moves": [["Reflect"], ["Calm Mind"], ["Stored Power"], ["Draco Meteor"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Glastrier": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Glastrier",
+ "item": "Choice Band",
+ "ability": "Chilling Neigh",
+ "nature": "Adamant",
+ "evs": {"hp": 252, "atk": 252, "spd": 4},
+ "moves": [["Avalanche"], ["Close Combat"], ["Heavy Slam"], ["High Horsepower", "Crunch"]],
+ "weight": 100
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "Carbink": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Carbink",
+ "item": "Shell Bell",
+ "ability": "Sturdy",
+ "nature": "Quirky",
+ "level": 1,
+ "evs": {},
+ "moves": [["Endeavor"], ["Sand Tomb"], ["Sandstorm"], ["Trick Room", "Protect", "Moonblast"]],
+ "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
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "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
+ }
+ ]
+ },
+ "Porygon2": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Porygon2",
+ "item": "Eviolite",
+ "ability": "Analytic",
+ "nature": "Bold",
+ "evs": {"hp": 136, "def": 244, "spa": 128},
+ "moves": [["Hyper Beam"], ["Ice Beam"], ["Eerie Impulse"], ["Recover"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Avalugg": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Avalugg",
+ "item": "Choice Band",
+ "ability": "Sturdy",
+ "nature": "Adamant",
+ "evs": {"hp": 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
+ }
+ ]
+ },
+ "Magnezone": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Magnezone",
+ "item": "Choice Specs",
+ "ability": "Sturdy",
+ "nature": "Modest",
+ "evs": {"spa": 252, "spd": 4, "spe": 252},
+ "moves": [["Hyper Beam"], ["Thunderbolt"], ["Flash Cannon"], ["Mirror Coat"]],
+ "weight": 100
+ }
+ ]
+ },
+ "Gallade": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "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
+ }
+ ]
+ },
+ "Sinistcha": {
+ "weight": 1,
+ "sets": [
+ {
+ "species": "Sinistcha",
+ "item": "Clear Amulet",
+ "ability": "Heatproof",
+ "nature": "Timid",
+ "evs": {"hp": 252, "def": 80, "spe": 176},
+ "moves": [["Iron Defense"], ["Calm Mind"], ["Strength Sap"], ["Shadow Ball"]],
+ "weight": 100
+ }
+ ]
+ }
+}
diff --git a/data/random-battles/gen9/doubles-sets.json b/data/random-battles/gen9/doubles-sets.json
index 3eed419f7b..bfbaada009 100644
--- a/data/random-battles/gen9/doubles-sets.json
+++ b/data/random-battles/gen9/doubles-sets.json
@@ -49,7 +49,7 @@
},
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Dragon Tail", "Glare", "Gunk Shot", "Knock Off", "Toxic Spikes"],
+ "movepool": ["Glare", "Gunk Shot", "Knock Off", "Toxic Spikes"],
"abilities": ["Intimidate"],
"teraTypes": ["Dark"]
}
@@ -150,15 +150,15 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Heal Pulse", "Icy Wind", "Knock Off", "Life Dew", "Moonblast", "Thunder Wave"],
- "abilities": ["Magic Guard", "Unaware"],
- "teraTypes": ["Fire", "Steel", "Water"]
+ "movepool": ["Dazzling Gleam", "Fire Blast", "Icy Wind", "Moonblast", "Protect", "Thunder Wave"],
+ "abilities": ["Magic Guard"],
+ "teraTypes": ["Fire", "Steel"]
},
{
"role": "Doubles Support",
- "movepool": ["Encore", "Fire Blast", "Follow Me", "Helping Hand", "Life Dew", "Moonblast", "Moonlight"],
+ "movepool": ["Follow Me", "Helping Hand", "Knock Off", "Life Dew", "Moonblast", "Moonlight"],
"abilities": ["Unaware"],
- "teraTypes": ["Fire", "Steel", "Water"]
+ "teraTypes": ["Steel", "Water"]
}
]
},
@@ -186,7 +186,7 @@
"role": "Doubles Support",
"movepool": ["Aurora Veil", "Blizzard", "Moonblast", "Protect"],
"abilities": ["Snow Warning"],
- "teraTypes": ["Ice", "Steel", "Water"]
+ "teraTypes": ["Steel", "Water"]
}
]
},
@@ -195,7 +195,7 @@
"sets": [
{
"role": "Doubles Support",
- "movepool": ["Dazzling Gleam", "Disable", "Encore", "Fire Blast", "Heal Pulse", "Helping Hand", "Icy Wind", "Thunder Wave"],
+ "movepool": ["Dazzling Gleam", "Encore", "Fire Blast", "Helping Hand", "Icy Wind", "Thunder Wave"],
"abilities": ["Competitive"],
"teraTypes": ["Fire", "Steel"]
}
@@ -209,6 +209,18 @@
"movepool": ["Pollen Puff", "Sludge Bomb", "Strength Sap", "Stun Spore"],
"abilities": ["Effect Spore"],
"teraTypes": ["Steel", "Water"]
+ },
+ {
+ "role": "Doubles Bulky Attacker",
+ "movepool": ["Energy Ball", "Sludge Bomb", "Strength Sap", "Stun Spore"],
+ "abilities": ["Effect Spore"],
+ "teraTypes": ["Steel", "Water"]
+ },
+ {
+ "role": "Bulky Protect",
+ "movepool": ["Leech Seed", "Pollen Puff", "Protect", "Sludge Bomb"],
+ "abilities": ["Effect Spore"],
+ "teraTypes": ["Steel", "Water"]
}
]
},
@@ -349,7 +361,7 @@
"level": 85,
"sets": [
{
- "role": "Doubles Bulky Attacker",
+ "role": "Doubles Support",
"movepool": ["Acid Spray", "Hydro Pump", "Icy Wind", "Knock Off", "Muddy Water", "Sludge Bomb", "Toxic Spikes"],
"abilities": ["Clear Body"],
"teraTypes": ["Grass"]
@@ -408,7 +420,7 @@
]
},
"slowbrogalar": {
- "level": 86,
+ "level": 87,
"sets": [
{
"role": "Doubles Wallbreaker",
@@ -451,7 +463,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Drain Punch", "Gunk Shot", "Haze", "Helping Hand", "Ice Punch", "Knock Off", "Poison Gas", "Poison Jab", "Shadow Sneak"],
+ "movepool": ["Drain Punch", "Gunk Shot", "Helping Hand", "Ice Punch", "Knock Off", "Poison Jab", "Shadow Sneak", "Toxic Spikes"],
"abilities": ["Poison Touch"],
"teraTypes": ["Dark"]
}
@@ -586,12 +598,12 @@
]
},
"weezing": {
- "level": 90,
+ "level": 91,
"sets": [
{
- "role": "Doubles Support",
+ "role": "Doubles Bulky Attacker",
"movepool": ["Clear Smog", "Fire Blast", "Gunk Shot", "Poison Gas", "Protect", "Taunt", "Will-O-Wisp"],
- "abilities": ["Levitate", "Neutralizing Gas"],
+ "abilities": ["Levitate"],
"teraTypes": ["Dark"]
}
]
@@ -602,13 +614,13 @@
{
"role": "Doubles Bulky Attacker",
"movepool": ["Gunk Shot", "Poison Gas", "Protect", "Strange Steam", "Taunt", "Will-O-Wisp"],
- "abilities": ["Levitate", "Neutralizing Gas"],
+ "abilities": ["Levitate"],
"teraTypes": ["Dark", "Steel"]
},
{
"role": "Offensive Protect",
"movepool": ["Dazzling Gleam", "Fire Blast", "Gunk Shot", "Protect"],
- "abilities": ["Levitate", "Neutralizing Gas"],
+ "abilities": ["Levitate"],
"teraTypes": ["Fire"]
}
]
@@ -814,7 +826,7 @@
"sets": [
{
"role": "Doubles Wallbreaker",
- "movepool": ["Crunch", "Double-Edge", "Hammer Arm", "Heat Crash", "High Horsepower"],
+ "movepool": ["Body Slam", "Crunch", "Double-Edge", "Hammer Arm", "Heat Crash", "High Horsepower"],
"abilities": ["Thick Fat"],
"teraTypes": ["Fire", "Ghost", "Ground"]
},
@@ -825,9 +837,9 @@
"teraTypes": ["Ghost", "Ground"]
},
{
- "role": "Doubles Bulky Setup",
- "movepool": ["Body Slam", "Crunch", "Curse", "High Horsepower", "Protect", "Recycle"],
- "abilities": ["Gluttony"],
+ "role": "Bulky Protect",
+ "movepool": ["Body Slam", "Curse", "High Horsepower", "Protect"],
+ "abilities": ["Thick Fat"],
"teraTypes": ["Ground", "Poison"]
}
]
@@ -848,7 +860,7 @@
"sets": [
{
"role": "Doubles Fast Attacker",
- "movepool": ["Freezing Glare", "Hurricane", "Protect", "Recover", "Tailwind"],
+ "movepool": ["Freezing Glare", "Hurricane", "Protect", "Tailwind"],
"abilities": ["Competitive"],
"teraTypes": ["Flying", "Ground", "Steel"]
}
@@ -886,10 +898,16 @@
"level": 79,
"sets": [
{
- "role": "Doubles Bulky Attacker",
- "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Protect", "Scorching Sands", "Tailwind"],
+ "role": "Doubles Support",
+ "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Protect", "Tailwind"],
"abilities": ["Flame Body"],
"teraTypes": ["Fire", "Ground"]
+ },
+ {
+ "role": "Doubles Bulky Attacker",
+ "movepool": ["Brave Bird", "Fire Blast", "Heat Wave", "Scorching Sands", "Tailwind"],
+ "abilities": ["Flame Body"],
+ "teraTypes": ["Ground"]
}
]
},
@@ -1041,7 +1059,7 @@
"role": "Offensive Protect",
"movepool": ["Hurricane", "Hyper Voice", "Protect", "Tailwind"],
"abilities": ["Tinted Lens"],
- "teraTypes": ["Flying"]
+ "teraTypes": ["Normal", "Steel"]
}
]
},
@@ -1096,7 +1114,7 @@
]
},
"azumarill": {
- "level": 82,
+ "level": 83,
"sets": [
{
"role": "Doubles Wallbreaker",
@@ -1166,7 +1184,7 @@
"level": 91,
"sets": [
{
- "role": "Doubles Bulky Attacker",
+ "role": "Doubles Support",
"movepool": ["Helping Hand", "High Horsepower", "Icy Wind", "Liquidation", "Recover", "Yawn"],
"abilities": ["Unaware", "Water Absorb"],
"teraTypes": ["Fire", "Poison", "Steel"]
@@ -1289,7 +1307,13 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Crunch", "Gunk Shot", "Icy Wind", "Throat Chop", "Toxic Spikes"],
+ "movepool": ["Crunch", "Gunk Shot", "Icy Wind", "Toxic Spikes"],
+ "abilities": ["Intimidate"],
+ "teraTypes": ["Flying"]
+ },
+ {
+ "role": "Doubles Support",
+ "movepool": ["Gunk Shot", "Icy Wind", "Throat Chop", "Toxic Spikes"],
"abilities": ["Intimidate"],
"teraTypes": ["Flying"]
}
@@ -1389,10 +1413,16 @@
"level": 86,
"sets": [
{
- "role": "Doubles Fast Attacker",
+ "role": "Offensive Protect",
"movepool": ["Dark Pulse", "Heat Wave", "Nasty Plot", "Protect", "Sucker Punch"],
"abilities": ["Flash Fire", "Unnerve"],
"teraTypes": ["Dark", "Fire", "Ghost", "Grass"]
+ },
+ {
+ "role": "Doubles Fast Attacker",
+ "movepool": ["Dark Pulse", "Heat Wave", "Nasty Plot", "Protect"],
+ "abilities": ["Flash Fire", "Unnerve"],
+ "teraTypes": ["Dark", "Fire", "Ghost", "Grass"]
}
]
},
@@ -1414,7 +1444,7 @@
]
},
"donphan": {
- "level": 86,
+ "level": 87,
"sets": [
{
"role": "Doubles Support",
@@ -1480,7 +1510,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 +1568,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"]
},
{
"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"]
}
]
},
@@ -1608,8 +1638,8 @@
"level": 82,
"sets": [
{
- "role": "Doubles Bulky Attacker",
- "movepool": ["Flip Turn", "High Horsepower", "Ice Beam", "Icy Wind", "Knock Off", "Muddy Water"],
+ "role": "Doubles Support",
+ "movepool": ["Flip Turn", "High Horsepower", "Icy Wind", "Knock Off", "Muddy Water"],
"abilities": ["Torrent"],
"teraTypes": ["Fire", "Steel"]
}
@@ -1647,7 +1677,7 @@
"level": 84,
"sets": [
{
- "role": "Doubles Fast Attacker",
+ "role": "Doubles Wallbreaker",
"movepool": ["Fake Out", "Knock Off", "Leaf Blade", "Tailwind"],
"abilities": ["Wind Rider"],
"teraTypes": ["Ghost"]
@@ -1682,7 +1712,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"]
}
@@ -1721,7 +1751,13 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["After You", "Double-Edge", "Encore", "Icy Wind", "Knock Off", "Slack Off", "Thunder Wave"],
+ "movepool": ["Double-Edge", "Icy Wind", "Knock Off", "Slack Off", "Thunder Wave"],
+ "abilities": ["Vital Spirit"],
+ "teraTypes": ["Ghost"]
+ },
+ {
+ "role": "Doubles Support",
+ "movepool": ["Body Slam", "Encore", "Icy Wind", "Knock Off"],
"abilities": ["Vital Spirit"],
"teraTypes": ["Ghost"]
}
@@ -1799,7 +1835,7 @@
"level": 92,
"sets": [
{
- "role": "Doubles Fast Attacker",
+ "role": "Doubles Setup Sweeper",
"movepool": ["Alluring Voice", "Nasty Plot", "Protect", "Thunderbolt"],
"abilities": ["Lightning Rod"],
"teraTypes": ["Flying"]
@@ -1847,7 +1883,7 @@
"role": "Doubles Support",
"movepool": ["Encore", "Struggle Bug", "Tailwind", "Thunder Wave"],
"abilities": ["Prankster"],
- "teraTypes": ["Steel", "Water"]
+ "teraTypes": ["Steel", "Water"]
}
]
},
@@ -1856,7 +1892,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Encore", "Gunk Shot", "Helping Hand", "Knock Off", "Poison Gas", "Thunder Wave", "Toxic Spikes"],
+ "movepool": ["Encore", "Gunk Shot", "Helping Hand", "Knock Off", "Thunder Wave", "Toxic Spikes"],
"abilities": ["Gluttony"],
"teraTypes": ["Dark"]
}
@@ -1963,7 +1999,7 @@
{
"role": "Offensive Protect",
"movepool": ["Flamethrower", "Glare", "Gunk Shot", "Knock Off", "Protect"],
- "abilities": ["Infiltrator"],
+ "abilities": ["Shed Skin"],
"teraTypes": ["Dark", "Fire", "Poison"]
}
]
@@ -1972,7 +2008,7 @@
"level": 88,
"sets": [
{
- "role": "Doubles Bulky Attacker",
+ "role": "Doubles Support",
"movepool": ["Helping Hand", "High Horsepower", "Icy Wind", "Muddy Water", "Protect"],
"abilities": ["Oblivious"],
"teraTypes": ["Fire", "Steel"]
@@ -2023,14 +2059,14 @@
"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"]
}
]
},
"chimecho": {
- "level": 95,
+ "level": 94,
"sets": [
{
"role": "Doubles Support",
@@ -2091,7 +2127,7 @@
]
},
"regirock": {
- "level": 83,
+ "level": 82,
"sets": [
{
"role": "Doubles Bulky Setup",
@@ -2289,6 +2325,18 @@
"movepool": ["Headlong Rush", "Protect", "Shell Smash", "Wood Hammer"],
"abilities": ["Overgrow"],
"teraTypes": ["Fire", "Ground"]
+ },
+ {
+ "role": "Doubles Setup Sweeper",
+ "movepool": ["Headlong Rush", "Rock Slide", "Shell Smash", "Wood Hammer"],
+ "abilities": ["Overgrow"],
+ "teraTypes": ["Rock"]
+ },
+ {
+ "role": "Doubles Setup Sweeper",
+ "movepool": ["Headlong Rush", "Protect", "Rock Slide", "Shell Smash"],
+ "abilities": ["Shell Armor"],
+ "teraTypes": ["Rock"]
}
]
},
@@ -2423,9 +2471,15 @@
"gastrodon": {
"level": 82,
"sets": [
+ {
+ "role": "Doubles Support",
+ "movepool": ["Earth Power", "Helping Hand", "Icy Wind", "Muddy Water", "Recover", "Yawn"],
+ "abilities": ["Storm Drain"],
+ "teraTypes": ["Fire"]
+ },
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Clear Smog", "Earth Power", "Helping Hand", "Icy Wind", "Muddy Water", "Recover"],
+ "movepool": ["Earth Power", "Ice Beam", "Recover", "Yawn"],
"abilities": ["Storm Drain"],
"teraTypes": ["Fire"]
}
@@ -2555,7 +2609,7 @@
"role": "Doubles Support",
"movepool": ["High Horsepower", "Slack Off", "Stealth Rock", "Stone Edge", "Whirlwind"],
"abilities": ["Sand Stream"],
- "teraTypes": ["Dragon", "Rock", "Steel", "Water"]
+ "teraTypes": ["Dragon", "Steel", "Water"]
}
]
},
@@ -2564,7 +2618,13 @@
"sets": [
{
"role": "Doubles Fast Attacker",
- "movepool": ["Close Combat", "Fake Out", "Gunk Shot", "Protect", "Sucker Punch", "Swords Dance"],
+ "movepool": ["Close Combat", "Fake Out", "Gunk Shot", "Protect", "Sucker Punch"],
+ "abilities": ["Dry Skin"],
+ "teraTypes": ["Dark", "Fighting", "Poison"]
+ },
+ {
+ "role": "Doubles Setup Sweeper",
+ "movepool": ["Close Combat", "Gunk Shot", "Protect", "Sucker Punch", "Swords Dance"],
"abilities": ["Dry Skin"],
"teraTypes": ["Dark", "Fighting", "Poison"]
}
@@ -2575,7 +2635,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"]
}
@@ -2624,9 +2684,9 @@
"level": 84,
"sets": [
{
- "role": "Doubles Bulky Attacker",
- "movepool": ["Body Press", "Electroweb", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"],
- "abilities": ["Sturdy"],
+ "role": "Doubles Support",
+ "movepool": ["Electroweb", "Flash Cannon", "Protect", "Thunderbolt", "Volt Switch"],
+ "abilities": ["Magnet Pull"],
"teraTypes": ["Flying"]
}
]
@@ -2653,13 +2713,13 @@
"sets": [
{
"role": "Doubles Fast Attacker",
- "movepool": ["Cross Chop", "Flamethrower", "Ice Punch", "Protect", "Volt Switch", "Wild Charge"],
+ "movepool": ["Flamethrower", "Ice Punch", "Protect", "Wild Charge"],
"abilities": ["Motor Drive"],
"teraTypes": ["Flying"]
},
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Cross Chop", "Flamethrower", "Ice Punch", "Knock Off", "Volt Switch", "Wild Charge"],
+ "movepool": ["Electroweb", "Ice Punch", "Knock Off", "Volt Switch", "Wild Charge"],
"abilities": ["Motor Drive"],
"teraTypes": ["Flying"]
}
@@ -2670,7 +2730,7 @@
"sets": [
{
"role": "Choice Item user",
- "movepool": ["Fire Blast", "Focus Blast", "Heat Wave", "Scorching Sands", "Thunderbolt"],
+ "movepool": ["Fire Blast", "Focus Blast", "Heat Wave", "Thunderbolt"],
"abilities": ["Flame Body"],
"teraTypes": ["Fighting", "Fire", "Grass"]
},
@@ -2691,6 +2751,12 @@
"abilities": ["Tinted Lens"],
"teraTypes": ["Bug"]
},
+ {
+ "role": "Doubles Fast Attacker",
+ "movepool": ["Air Slash", "Bug Buzz", "Protect", "Tailwind"],
+ "abilities": ["Tinted Lens"],
+ "teraTypes": ["Ground", "Steel"]
+ },
{
"role": "Tera Blast user",
"movepool": ["Air Slash", "Bug Buzz", "Protect", "Tera Blast"],
@@ -2901,7 +2967,7 @@
]
},
"uxie": {
- "level": 86,
+ "level": 85,
"sets": [
{
"role": "Doubles Support",
@@ -2931,17 +2997,17 @@
"azelf": {
"level": 83,
"sets": [
- {
- "role": "Doubles Fast Attacker",
- "movepool": ["Dazzling Gleam", "Energy Ball", "Fire Blast", "Nasty Plot", "Psychic", "U-turn"],
- "abilities": ["Levitate"],
- "teraTypes": ["Fairy", "Fire"]
- },
{
"role": "Offensive Protect",
"movepool": ["Dazzling Gleam", "Fire Blast", "Nasty Plot", "Protect", "Psychic", "Thunderbolt"],
"abilities": ["Levitate"],
"teraTypes": ["Electric", "Fairy", "Fire"]
+ },
+ {
+ "role": "Doubles Wallbreaker",
+ "movepool": ["Dazzling Gleam", "Fire Blast", "Psychic", "U-turn"],
+ "abilities": ["Levitate"],
+ "teraTypes": ["Fairy", "Fire"]
}
]
},
@@ -3086,7 +3152,7 @@
"role": "Bulky Protect",
"movepool": ["Ice Beam", "Protect", "Scald", "Tail Glow"],
"abilities": ["Hydration"],
- "teraTypes": ["Grass", "Steel", "Water"]
+ "teraTypes": ["Grass", "Steel"]
},
{
"role": "Doubles Bulky Setup",
@@ -3167,9 +3233,15 @@
"sets": [
{
"role": "Doubles Setup Sweeper",
- "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover", "Sludge Bomb"],
+ "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Fire", "Poison"]
+ "teraTypes": ["Fire"]
+ },
+ {
+ "role": "Doubles Bulky Setup",
+ "movepool": ["Calm Mind", "Judgment", "Recover", "Sludge Bomb"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Poison"]
}
]
},
@@ -3189,9 +3261,9 @@
"sets": [
{
"role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Dazzling Gleam", "Earth Power", "Fire Blast", "Recover"],
+ "movepool": ["Calm Mind", "Dazzling Gleam", "Earth Power", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Fairy", "Fire", "Ground"]
+ "teraTypes": ["Fairy", "Ground"]
},
{
"role": "Doubles Support",
@@ -3228,26 +3300,26 @@
"sets": [
{
"role": "Doubles Setup Sweeper",
- "movepool": ["Calm Mind", "Earth Power", "Fire Blast", "Judgment", "Recover"],
+ "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"],
"abilities": ["Multitype"],
"teraTypes": ["Flying", "Ground"]
+ },
+ {
+ "role": "Doubles Support",
+ "movepool": ["Judgment", "Recover", "Snarl", "Tailwind", "Taunt", "Will-O-Wisp"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Steel"]
}
]
},
"arceusghost": {
"level": 72,
"sets": [
- {
- "role": "Doubles Setup Sweeper",
- "movepool": ["Brick Break", "Extreme Speed", "Phantom Force", "Swords Dance"],
- "abilities": ["Multitype"],
- "teraTypes": ["Ghost", "Normal"]
- },
{
"role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Dazzling Gleam", "Focus Blast", "Judgment", "Recover"],
+ "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Fairy", "Fighting"]
+ "teraTypes": ["Fighting"]
}
]
},
@@ -3267,9 +3339,15 @@
"sets": [
{
"role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Fire Blast", "Ice Beam", "Judgment", "Recover"],
+ "movepool": ["Calm Mind", "Ice Beam", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Ground", "Ice"]
+ "teraTypes": ["Dragon", "Steel", "Water"]
+ },
+ {
+ "role": "Doubles Bulky Attacker",
+ "movepool": ["Calm Mind", "Fire Blast", "Judgment", "Recover"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Fire"]
},
{
"role": "Doubles Setup Sweeper",
@@ -3283,10 +3361,16 @@
"level": 73,
"sets": [
{
- "role": "Doubles Bulky Setup",
- "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover", "Thunderbolt"],
+ "role": "Doubles Setup Sweeper",
+ "movepool": ["Calm Mind", "Earth Power", "Judgment", "Recover"],
"abilities": ["Multitype"],
- "teraTypes": ["Electric", "Ground"]
+ "teraTypes": ["Ground"]
+ },
+ {
+ "role": "Doubles Bulky Setup",
+ "movepool": ["Calm Mind", "Judgment", "Recover", "Thunderbolt"],
+ "abilities": ["Multitype"],
+ "teraTypes": ["Electric"]
}
]
},
@@ -3417,13 +3501,13 @@
"level": 87,
"sets": [
{
- "role": "Offensive Protect",
+ "role": "Doubles Fast Attacker",
"movepool": ["High Horsepower", "Overheat", "Protect", "Wild Charge"],
"abilities": ["Sap Sipper"],
"teraTypes": ["Ground"]
},
{
- "role": "Doubles Fast Attacker",
+ "role": "Doubles Wallbreaker",
"movepool": ["High Horsepower", "Overheat", "Protect", "Thunderbolt"],
"abilities": ["Lightning Rod"],
"teraTypes": ["Flying", "Water"]
@@ -3793,15 +3877,21 @@
"sets": [
{
"role": "Doubles Fast Attacker",
- "movepool": ["Close Combat", "Fake Out", "Knock Off", "Triple Axel", "U-turn"],
+ "movepool": ["Close Combat", "Fake Out", "Knock Off", "U-turn"],
"abilities": ["Regenerator"],
- "teraTypes": ["Dark"]
+ "teraTypes": ["Dark", "Steel"]
},
{
"role": "Doubles Bulky Attacker",
"movepool": ["Close Combat", "Fake Out", "Knock Off", "U-turn"],
"abilities": ["Regenerator"],
"teraTypes": ["Dark", "Steel"]
+ },
+ {
+ "role": "Doubles Wallbreaker",
+ "movepool": ["Close Combat", "Knock Off", "Triple Axel", "U-turn"],
+ "abilities": ["Inner Focus"],
+ "teraTypes": ["Dark", "Steel"]
}
]
},
@@ -3890,7 +3980,7 @@
{
"role": "Doubles Setup Sweeper",
"movepool": ["Bug Buzz", "Heat Wave", "Protect", "Quiver Dance"],
- "abilities": ["Flame Body", "Swarm"],
+ "abilities": ["Flame Body"],
"teraTypes": ["Fire", "Ground", "Water"]
},
{
@@ -3978,14 +4068,14 @@
"level": 79,
"sets": [
{
- "role": "Bulky Protect",
+ "role": "Doubles Support",
"movepool": ["Grass Knot", "Knock Off", "Protect", "Snarl", "Taunt", "Thunder Wave", "Thunderbolt"],
"abilities": ["Prankster"],
"teraTypes": ["Steel"]
},
{
"role": "Offensive Protect",
- "movepool": ["Acrobatics", "Grass Knot", "Knock Off", "Protect", "Snarl", "Wildbolt Storm"],
+ "movepool": ["Acrobatics", "Grass Knot", "Knock Off", "Protect", "Wildbolt Storm"],
"abilities": ["Defiant"],
"teraTypes": ["Electric", "Flying", "Steel"]
},
@@ -4197,10 +4287,16 @@
"level": 88,
"sets": [
{
- "role": "Doubles Support",
+ "role": "Doubles Fast Attacker",
"movepool": ["Hurricane", "Pollen Puff", "Protect", "Sleep Powder"],
"abilities": ["Compound Eyes"],
"teraTypes": ["Flying", "Steel"]
+ },
+ {
+ "role": "Doubles Fast Attacker",
+ "movepool": ["Hurricane", "Protect", "Sleep Powder", "Tailwind"],
+ "abilities": ["Compound Eyes"],
+ "teraTypes": ["Flying", "Steel"]
}
]
},
@@ -4248,13 +4344,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Fake Out", "Fake Tears", "Helping Hand", "Light Screen", "Psychic", "Reflect"],
- "abilities": ["Prankster"],
- "teraTypes": ["Dark", "Steel"]
- },
- {
- "role": "Doubles Support",
- "movepool": ["Fake Out", "Helping Hand", "Psychic", "Thunder Wave"],
+ "movepool": ["Fake Out", "Helping Hand", "Light Screen", "Psychic", "Reflect", "Thunder Wave"],
"abilities": ["Prankster"],
"teraTypes": ["Dark", "Steel"]
}
@@ -4298,7 +4388,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"]
},
@@ -4323,7 +4413,7 @@
"role": "Tera Blast user",
"movepool": ["Hyper Voice", "Protect", "Quick Attack", "Tera Blast"],
"abilities": ["Pixilate"],
- "teraTypes": ["Fire", "Ground"]
+ "teraTypes": ["Ground"]
}
]
},
@@ -4372,7 +4462,7 @@
]
},
"goodrahisui": {
- "level": 82,
+ "level": 81,
"sets": [
{
"role": "Doubles Bulky Attacker",
@@ -4411,7 +4501,7 @@
]
},
"avalugg": {
- "level": 91,
+ "level": 92,
"sets": [
{
"role": "Bulky Protect",
@@ -4460,9 +4550,9 @@
},
{
"role": "Bulky Protect",
- "movepool": ["Diamond Storm", "Moonblast", "Protect", "Trick Room"],
+ "movepool": ["Body Press", "Diamond Storm", "Moonblast", "Trick Room"],
"abilities": ["Clear Body"],
- "teraTypes": ["Grass", "Steel"]
+ "teraTypes": ["Fighting"]
}
]
},
@@ -4548,8 +4638,8 @@
"teraTypes": ["Water"]
},
{
- "role": "Bulky Protect",
- "movepool": ["Calm Mind", "Hyper Voice", "Moonblast", "Protect"],
+ "role": "Offensive Protect",
+ "movepool": ["Hyper Voice", "Icy Wind", "Life Dew", "Moonblast", "Protect"],
"abilities": ["Liquid Voice"],
"teraTypes": ["Grass", "Steel"]
}
@@ -4588,7 +4678,7 @@
"sets": [
{
"role": "Bulky Protect",
- "movepool": ["Bug Buzz", "Electroweb", "Protect", "Sticky Web", "Thunderbolt"],
+ "movepool": ["Bug Buzz", "Protect", "Sticky Web", "Thunderbolt"],
"abilities": ["Levitate"],
"teraTypes": ["Electric"]
}
@@ -4599,7 +4689,7 @@
"sets": [
{
"role": "Doubles Wallbreaker",
- "movepool": ["Drain Punch", "Gunk Shot", "Ice Hammer", "Protect", "Wide Guard"],
+ "movepool": ["Drain Punch", "Gunk Shot", "Ice Hammer", "Protect"],
"abilities": ["Iron Fist"],
"teraTypes": ["Fire", "Poison"]
}
@@ -4615,7 +4705,7 @@
"teraTypes": ["Ground"]
},
{
- "role": "Doubles Setup Sweeper",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Ground"]
@@ -4632,7 +4722,7 @@
"teraTypes": ["Ground"]
},
{
- "role": "Doubles Setup Sweeper",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Ground"]
@@ -4649,7 +4739,7 @@
"teraTypes": ["Fighting", "Ground"]
},
{
- "role": "Doubles Setup Sweeper",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Fighting", "Ground"]
@@ -4666,7 +4756,7 @@
"teraTypes": ["Fighting", "Ground"]
},
{
- "role": "Doubles Setup Sweeper",
+ "role": "Bulky Protect",
"movepool": ["Air Slash", "Protect", "Quiver Dance", "Revelation Dance"],
"abilities": ["Dancer"],
"teraTypes": ["Fighting", "Ground"]
@@ -4677,7 +4767,7 @@
"level": 86,
"sets": [
{
- "role": "Doubles Support",
+ "role": "Doubles Fast Attacker",
"movepool": ["Moonblast", "Pollen Puff", "Protect", "Tailwind"],
"abilities": ["Shield Dust"],
"teraTypes": ["Steel"]
@@ -4796,7 +4886,7 @@
"sets": [
{
"role": "Doubles Fast Attacker",
- "movepool": ["Encore", "Fake Out", "Fire Blast", "Heat Wave", "Poison Gas", "Protect", "Sludge Bomb"],
+ "movepool": ["Encore", "Fake Out", "Fire Blast", "Heat Wave", "Protect", "Sludge Bomb"],
"abilities": ["Corrosion"],
"teraTypes": ["Fire", "Flying", "Water"]
}
@@ -5016,13 +5106,13 @@
{
"role": "Doubles Setup Sweeper",
"movepool": ["Clanging Scales", "Clangorous Soul", "Drain Punch", "Iron Head"],
- "abilities": ["Soundproof"],
+ "abilities": ["Bulletproof", "Soundproof"],
"teraTypes": ["Steel"]
},
{
"role": "Doubles Bulky Setup",
"movepool": ["Clanging Scales", "Clangorous Soul", "Iron Head", "Protect"],
- "abilities": ["Soundproof"],
+ "abilities": ["Bulletproof", "Soundproof"],
"teraTypes": ["Steel"]
},
{
@@ -5183,8 +5273,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 +5296,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"]
}
@@ -5279,7 +5369,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Fake Out", "Light Screen", "Parting Shot", "Reflect", "Spirit Break"],
+ "movepool": ["Fake Out", "Light Screen", "Parting Shot", "Reflect", "Spirit Break", "Thunder Wave"],
"abilities": ["Prankster"],
"teraTypes": ["Steel"]
},
@@ -5316,6 +5406,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 +5431,9 @@
"sets": [
{
"role": "Doubles Support",
- "movepool": ["Electroweb", "Recover", "Thunderbolt", "Toxic Spikes"],
+ "movepool": ["Electroweb", "Recover", "Scald", "Thunderbolt"],
"abilities": ["Electric Surge"],
- "teraTypes": ["Grass"]
+ "teraTypes": ["Grass", "Water"]
}
]
},
@@ -5410,7 +5506,7 @@
]
},
"indeedeef": {
- "level": 90,
+ "level": 91,
"sets": [
{
"role": "Doubles Support",
@@ -5476,7 +5572,13 @@
"sets": [
{
"role": "Offensive Protect",
- "movepool": ["Draco Meteor", "Dragon Darts", "Fire Blast", "Protect", "Shadow Ball"],
+ "movepool": ["Draco Meteor", "Dragon Darts", "Protect", "Shadow Ball"],
+ "abilities": ["Clear Body"],
+ "teraTypes": ["Dragon"]
+ },
+ {
+ "role": "Offensive Protect",
+ "movepool": ["Dragon Darts", "Fire Blast", "Protect", "Shadow Ball"],
"abilities": ["Clear Body"],
"teraTypes": ["Dragon"]
},
@@ -5515,7 +5617,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"]
},
@@ -5673,7 +5775,7 @@
]
},
"calyrexshadow": {
- "level": 62,
+ "level": 63,
"sets": [
{
"role": "Offensive Protect",
@@ -5712,7 +5814,7 @@
]
},
"ursaluna": {
- "level": 78,
+ "level": 77,
"sets": [
{
"role": "Doubles Wallbreaker",
@@ -5817,15 +5919,15 @@
"sets": [
{
"role": "Doubles Support",
- "movepool": ["Double-Edge", "Helping Hand", "Lash Out", "Protect", "Yawn"],
- "abilities": ["Gluttony"],
+ "movepool": ["Double-Edge", "Helping Hand", "Protect", "Yawn"],
+ "abilities": ["Thick Fat"],
"teraTypes": ["Ghost", "Normal"]
},
{
"role": "Doubles Wallbreaker",
- "movepool": ["Double-Edge", "High Horsepower", "Lash Out", "Play Rough"],
+ "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Lash Out"],
"abilities": ["Thick Fat"],
- "teraTypes": ["Fairy", "Ground", "Normal"]
+ "teraTypes": ["Ghost", "Ground", "Normal"]
}
]
},
@@ -5834,15 +5936,15 @@
"sets": [
{
"role": "Doubles Support",
- "movepool": ["Double-Edge", "Helping Hand", "Lash Out", "Protect", "Yawn"],
- "abilities": ["Gluttony"],
+ "movepool": ["Double-Edge", "Helping Hand", "Protect", "Yawn"],
+ "abilities": ["Thick Fat"],
"teraTypes": ["Ghost", "Normal"]
},
{
"role": "Doubles Wallbreaker",
- "movepool": ["Double-Edge", "High Horsepower", "Lash Out", "Play Rough"],
+ "movepool": ["Body Slam", "Double-Edge", "High Horsepower", "Lash Out"],
"abilities": ["Thick Fat"],
- "teraTypes": ["Fairy", "Ground", "Normal"]
+ "teraTypes": ["Ghost", "Ground", "Normal"]
}
]
},
@@ -5867,10 +5969,16 @@
"teraTypes": ["Bug"]
},
{
- "role": "Doubles Fast Attacker",
- "movepool": ["First Impression", "Leech Life", "Protect", "Sucker Punch"],
+ "role": "Doubles Wallbreaker",
+ "movepool": ["First Impression", "Knock Off", "Protect", "Sucker Punch"],
"abilities": ["Tinted Lens"],
- "teraTypes": ["Bug"]
+ "teraTypes": ["Bug", "Dark"]
+ },
+ {
+ "role": "Offensive Protect",
+ "movepool": ["First Impression", "Knock Off", "Leech Life", "Protect"],
+ "abilities": ["Tinted Lens"],
+ "teraTypes": ["Bug"]
}
]
},
@@ -6018,7 +6126,7 @@
"sets": [
{
"role": "Doubles Bulky Attacker",
- "movepool": ["Electroweb", "Muddy Water", "Slack Off", "Thunder Wave", "Thunderbolt", "Volt Switch"],
+ "movepool": ["Electroweb", "Muddy Water", "Slack Off", "Thunder Wave", "Thunderbolt"],
"abilities": ["Electromorphosis"],
"teraTypes": ["Water"]
}
@@ -6032,6 +6140,12 @@
"movepool": ["Hurricane", "Protect", "Tailwind", "Thunderbolt"],
"abilities": ["Competitive"],
"teraTypes": ["Flying", "Steel"]
+ },
+ {
+ "role": "Doubles Wallbreaker",
+ "movepool": ["Hurricane", "Protect", "Tailwind", "Thunderbolt"],
+ "abilities": ["Competitive"],
+ "teraTypes": ["Flying", "Steel"]
}
]
},
@@ -6121,7 +6235,7 @@
"role": "Doubles Support",
"movepool": ["Energy Ball", "Fire Blast", "Protect", "Rage Powder", "Will-O-Wisp"],
"abilities": ["Chlorophyll"],
- "teraTypes": ["Fire", "Grass", "Steel"]
+ "teraTypes": ["Fire", "Steel"]
}
]
},
@@ -6159,7 +6273,7 @@
{
"role": "Doubles Support",
"movepool": ["Encore", "Fake Out", "Gigaton Hammer", "Knock Off", "Play Rough", "Stealth Rock"],
- "abilities": ["Mold Breaker"],
+ "abilities": ["Mold Breaker", "Own Tempo"],
"teraTypes": ["Steel", "Water"]
}
]
@@ -6360,7 +6474,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 +6542,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"]
}
]
},
@@ -6478,7 +6604,7 @@
"sets": [
{
"role": "Doubles Wallbreaker",
- "movepool": ["Close Combat", "First Impression", "Flare Blitz", "U-turn", "Wild Charge"],
+ "movepool": ["Close Combat", "First Impression", "Flare Blitz", "Protect", "U-turn", "Wild Charge"],
"abilities": ["Protosynthesis"],
"teraTypes": ["Bug", "Electric", "Fighting", "Fire"]
}
@@ -6571,6 +6697,12 @@
"ironbundle": {
"level": 78,
"sets": [
+ {
+ "role": "Doubles Bulky Attacker",
+ "movepool": ["Encore", "Freeze-Dry", "Hydro Pump", "Icy Wind", "Protect"],
+ "abilities": ["Quark Drive"],
+ "teraTypes": ["Dragon", "Water"]
+ },
{
"role": "Doubles Fast Attacker",
"movepool": ["Encore", "Freeze-Dry", "Hydro Pump", "Icy Wind", "Protect"],
@@ -6669,7 +6801,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"]
}
@@ -6700,12 +6838,6 @@
"movepool": ["Collision Course", "Dragon Claw", "Flare Blitz", "U-turn"],
"abilities": ["Orichalcum Pulse"],
"teraTypes": ["Fire"]
- },
- {
- "role": "Offensive Protect",
- "movepool": ["Collision Course", "Dragon Claw", "Flare Blitz", "Protect"],
- "abilities": ["Orichalcum Pulse"],
- "teraTypes": ["Fire"]
}
]
},
@@ -6727,7 +6859,7 @@
]
},
"walkingwake": {
- "level": 77,
+ "level": 78,
"sets": [
{
"role": "Doubles Wallbreaker",
@@ -7025,7 +7157,7 @@
"level": 73,
"sets": [
{
- "role": "Doubles Bulky Setup",
+ "role": "Bulky Protect",
"movepool": ["Calm Mind", "Earth Power", "Protect", "Tera Starstorm"],
"abilities": ["Tera Shift"],
"teraTypes": ["Stellar"]
diff --git a/data/random-battles/gen9/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..b869ed198e 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"]
@@ -77,7 +77,7 @@
"level": 93,
"sets": [
{
- "role": "Fast Attacker",
+ "role": "AV Pivot",
"movepool": ["Fake Out", "Knock Off", "Play Rough", "Surf", "Volt Switch", "Volt Tackle"],
"abilities": ["Lightning Rod"],
"teraTypes": ["Water"]
@@ -185,7 +185,7 @@
},
{
"role": "Fast Attacker",
- "movepool": ["Aurora Veil", "Blizzard", "Freeze-Dry", "Moonblast", "Nasty Plot"],
+ "movepool": ["Aurora Veil", "Blizzard", "Freeze-Dry", "Moonblast"],
"abilities": ["Snow Warning"],
"teraTypes": ["Steel", "Water"]
}
@@ -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"]
@@ -643,7 +643,7 @@
},
{
"role": "Bulky Setup",
- "movepool": ["Calm Mind", "Giga Drain", "Psychic", "Psyshock", "Substitute"],
+ "movepool": ["Calm Mind", "Giga Drain", "Psychic", "Psyshock", "Sleep Powder", "Substitute"],
"abilities": ["Harvest"],
"teraTypes": ["Steel"]
}
@@ -694,8 +694,8 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["Close Combat", "Drain Punch", "Ice Punch", "Knock Off", "Mach Punch", "Rapid Spin", "Swords Dance"],
- "abilities": ["Inner Focus", "Iron Fist"],
+ "movepool": ["Drain Punch", "Ice Punch", "Knock Off", "Mach Punch", "Rapid Spin", "Swords Dance"],
+ "abilities": ["Iron Fist"],
"teraTypes": ["Dark", "Fighting"]
},
{
@@ -703,6 +703,12 @@
"movepool": ["Bulk Up", "Drain Punch", "Knock Off", "Poison Jab", "Rapid Spin"],
"abilities": ["Iron Fist"],
"teraTypes": ["Dark", "Poison", "Steel"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Drain Punch", "Encore", "Knock Off", "Poison Jab", "Rapid Spin", "Taunt"],
+ "abilities": ["Iron Fist"],
+ "teraTypes": ["Steel"]
}
]
},
@@ -1417,6 +1423,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"]
}
]
},
@@ -2124,7 +2136,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["Clear Smog", "Earthquake", "Encore", "Ice Beam", "Knock Off", "Pain Split", "Sludge Bomb", "Toxic Spikes"],
+ "movepool": ["Clear Smog", "Earthquake", "Encore", "Ice Beam", "Knock Off", "Pain Split", "Sludge Bomb", "Thunder Wave", "Toxic Spikes"],
"abilities": ["Liquid Ooze"],
"teraTypes": ["Dark"]
},
@@ -2259,7 +2271,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"]
@@ -2367,7 +2379,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["Disable", "Earthquake", "Freeze-Dry", "Spikes", "Taunt"],
+ "movepool": ["Earthquake", "Freeze-Dry", "Spikes", "Taunt"],
"abilities": ["Inner Focus"],
"teraTypes": ["Ghost", "Ground", "Water"]
}
@@ -2376,6 +2388,12 @@
"luvdisc": {
"level": 100,
"sets": [
+ {
+ "role": "Fast Support",
+ "movepool": ["Endeavor", "Flip Turn", "Substitute", "Surf"],
+ "abilities": ["Swift Swim"],
+ "teraTypes": ["Ghost", "Ground"]
+ },
{
"role": "Fast Support",
"movepool": ["Endeavor", "Substitute", "Surf", "Whirlpool"],
@@ -2694,7 +2712,7 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["Knock Off", "Pounce", "Sticky Web", "Swords Dance", "Taunt"],
+ "movepool": ["Knock Off", "Pounce", "Sticky Web", "Taunt"],
"abilities": ["Technician"],
"teraTypes": ["Ghost"]
}
@@ -3044,14 +3062,14 @@
{
"role": "Fast Attacker",
"movepool": ["Body Press", "Flash Cannon", "Thunderbolt", "Volt Switch"],
- "abilities": ["Magnet Pull"],
- "teraTypes": ["Electric", "Fighting", "Flying", "Water"]
+ "abilities": ["Analytic", "Magnet Pull"],
+ "teraTypes": ["Electric", "Fighting", "Flying"]
},
{
"role": "AV Pivot",
"movepool": ["Body Press", "Discharge", "Flash Cannon", "Mirror Coat", "Thunderbolt", "Volt Switch"],
"abilities": ["Analytic", "Magnet Pull"],
- "teraTypes": ["Flying", "Water"]
+ "teraTypes": ["Flying"]
},
{
"role": "Bulky Setup",
@@ -3220,7 +3238,7 @@
]
},
"probopass": {
- "level": 92,
+ "level": 91,
"sets": [
{
"role": "Bulky Setup",
@@ -3282,7 +3300,13 @@
"role": "Bulky Attacker",
"movepool": ["Hydro Pump", "Nasty Plot", "Pain Split", "Thunderbolt", "Trick", "Volt Switch", "Will-O-Wisp"],
"abilities": ["Levitate"],
- "teraTypes": ["Electric", "Water"]
+ "teraTypes": ["Electric", "Steel"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Discharge", "Hydro Pump", "Pain Split", "Volt Switch", "Will-O-Wisp"],
+ "abilities": ["Levitate"],
+ "teraTypes": ["Electric", "Steel"]
}
]
},
@@ -3293,7 +3317,13 @@
"role": "Bulky Attacker",
"movepool": ["Nasty Plot", "Overheat", "Pain Split", "Thunderbolt", "Volt Switch", "Will-O-Wisp"],
"abilities": ["Levitate"],
- "teraTypes": ["Electric", "Fire"]
+ "teraTypes": ["Electric", "Fire", "Steel"]
+ },
+ {
+ "role": "Bulky Support",
+ "movepool": ["Discharge", "Overheat", "Pain Split", "Volt Switch", "Will-O-Wisp"],
+ "abilities": ["Levitate"],
+ "teraTypes": ["Electric", "Steel"]
}
]
},
@@ -3313,7 +3343,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["Air Slash", "Nasty Plot", "Thunderbolt", "Volt Switch", "Will-O-Wisp"],
+ "movepool": ["Air Slash", "Nasty Plot", "Thunder Wave", "Thunderbolt", "Volt Switch", "Will-O-Wisp"],
"abilities": ["Levitate"],
"teraTypes": ["Electric", "Steel"]
}
@@ -3375,9 +3405,9 @@
},
{
"role": "Fast Attacker",
- "movepool": ["Dazzling Gleam", "Fire Blast", "Nasty Plot", "Psychic", "Psyshock", "Thunderbolt", "Trick", "U-turn"],
+ "movepool": ["Dazzling Gleam", "Fire Blast", "Nasty Plot", "Psychic", "Psyshock", "U-turn"],
"abilities": ["Levitate"],
- "teraTypes": ["Electric", "Fairy", "Fire", "Psychic"]
+ "teraTypes": ["Fairy", "Fire", "Psychic"]
}
]
},
@@ -3734,21 +3764,15 @@
"level": 69,
"sets": [
{
- "role": "Bulky Support",
- "movepool": ["Focus Blast", "Judgment", "Recover", "Will-O-Wisp"],
+ "role": "Bulky Attacker",
+ "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover", "Will-O-Wisp"],
"abilities": ["Multitype"],
- "teraTypes": ["Fighting", "Normal"]
- },
- {
- "role": "Bulky Setup",
- "movepool": ["Calm Mind", "Focus Blast", "Judgment", "Recover"],
- "abilities": ["Multitype"],
- "teraTypes": ["Fighting", "Ghost", "Normal"]
+ "teraTypes": ["Dark", "Fighting"]
}
]
},
"arceusgrass": {
- "level": 72,
+ "level": 73,
"sets": [
{
"role": "Setup Sweeper",
@@ -3788,7 +3812,7 @@
]
},
"arceusice": {
- "level": 72,
+ "level": 73,
"sets": [
{
"role": "Bulky Setup",
@@ -3904,7 +3928,7 @@
"teraTypes": ["Fire"]
},
{
- "role": "Setup Sweeper",
+ "role": "Bulky Setup",
"movepool": ["Bulk Up", "Drain Punch", "Flare Blitz", "Trailblaze"],
"abilities": ["Reckless"],
"teraTypes": ["Fighting", "Grass"]
@@ -3994,13 +4018,13 @@
"sets": [
{
"role": "Fast Support",
- "movepool": ["Knock Off", "Leaf Blade", "Lunge", "Sticky Web", "Swords Dance"],
+ "movepool": ["Knock Off", "Leaf Blade", "Lunge", "Sticky Web"],
"abilities": ["Chlorophyll", "Swarm"],
"teraTypes": ["Ghost", "Rock"]
},
{
"role": "Fast Attacker",
- "movepool": ["Bullet Seed", "Knock Off", "Sticky Web", "Swords Dance", "Triple Axel"],
+ "movepool": ["Bullet Seed", "Knock Off", "Sticky Web", "Triple Axel"],
"abilities": ["Chlorophyll"],
"teraTypes": ["Ghost", "Rock"]
}
@@ -4019,7 +4043,7 @@
"role": "Bulky Support",
"movepool": ["Encore", "Leech Seed", "Moonblast", "Substitute"],
"abilities": ["Prankster"],
- "teraTypes": ["Steel"]
+ "teraTypes": ["Poison", "Steel"]
}
]
},
@@ -4095,9 +4119,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 +4140,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 +4226,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"]
}
@@ -4249,13 +4273,13 @@
"role": "Bulky Support",
"movepool": ["Flip Turn", "Protect", "Scald", "Wish"],
"abilities": ["Regenerator"],
- "teraTypes": ["Steel"]
+ "teraTypes": ["Poison", "Steel"]
},
{
"role": "Fast Support",
"movepool": ["Flip Turn", "Protect", "Scald", "Wish"],
"abilities": ["Regenerator"],
- "teraTypes": ["Steel"]
+ "teraTypes": ["Poison", "Steel"]
}
]
},
@@ -4264,7 +4288,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 +4514,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"]
}
@@ -4795,7 +4819,7 @@
{
"role": "Tera Blast user",
"movepool": ["Brave Bird", "Flare Blitz", "Swords Dance", "Tera Blast"],
- "abilities": ["Flame Body"],
+ "abilities": ["Flame Body", "Gale Wings"],
"teraTypes": ["Ground"]
}
]
@@ -5011,7 +5035,7 @@
"sets": [
{
"role": "Wallbreaker",
- "movepool": ["Drain Punch", "Horn Leech", "Poltergeist", "Rest", "Trick Room", "Will-O-Wisp", "Wood Hammer"],
+ "movepool": ["Drain Punch", "Horn Leech", "Poltergeist", "Rest", "Will-O-Wisp", "Wood Hammer"],
"abilities": ["Natural Cure"],
"teraTypes": ["Fighting"]
},
@@ -5325,7 +5349,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 +5526,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"],
@@ -5521,9 +5539,9 @@
"sets": [
{
"role": "Setup Sweeper",
- "movepool": ["Drain Punch", "Play Rough", "Shadow Sneak", "Swords Dance", "Wood Hammer"],
+ "movepool": ["Drain Punch", "Play Rough", "Shadow Sneak", "Swords Dance"],
"abilities": ["Disguise"],
- "teraTypes": ["Fairy", "Fighting", "Grass"]
+ "teraTypes": ["Fairy", "Fighting"]
},
{
"role": "Fast Bulky Setup",
@@ -5549,7 +5567,7 @@
"sets": [
{
"role": "Fast Bulky Setup",
- "movepool": ["Boomburst", "Clanging Scales", "Clangorous Soul", "Close Combat", "Iron Head"],
+ "movepool": ["Boomburst", "Clanging Scales", "Clangorous Soul", "Close Combat", "Drain Punch", "Iron Head"],
"abilities": ["Soundproof"],
"teraTypes": ["Normal", "Steel"]
},
@@ -5604,6 +5622,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 +5646,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 +5683,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",
@@ -5697,9 +5721,9 @@
},
{
"role": "Fast Support",
- "movepool": ["Court Change", "High Jump Kick", "Pyro Ball", "Sucker Punch"],
+ "movepool": ["Court Change", "Pyro Ball", "U-turn", "Will-O-Wisp"],
"abilities": ["Libero"],
- "teraTypes": ["Fighting", "Fire"]
+ "teraTypes": ["Grass"]
},
{
"role": "Fast Attacker",
@@ -6449,16 +6473,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"]
}
]
},
@@ -6557,7 +6587,7 @@
"sets": [
{
"role": "Bulky Support",
- "movepool": ["Body Press", "Play Rough", "Protect", "Stomping Tantrum", "Wish"],
+ "movepool": ["Body Press", "Play Rough", "Protect", "Wish", "Yawn"],
"abilities": ["Well-Baked Body"],
"teraTypes": ["Steel"]
}
@@ -6831,7 +6861,7 @@
"teraTypes": ["Water"]
},
{
- "role": "Setup Sweeper",
+ "role": "Bulky Setup",
"movepool": ["Gigaton Hammer", "Knock Off", "Play Rough", "Protect", "Swords Dance"],
"abilities": ["Mold Breaker"],
"teraTypes": ["Steel"]
@@ -7049,12 +7079,6 @@
"movepool": ["Body Slam", "Protect", "Psychic Noise", "Wish"],
"abilities": ["Sap Sipper"],
"teraTypes": ["Fairy", "Ground", "Water"]
- },
- {
- "role": "Bulky Attacker",
- "movepool": ["Future Sight", "Hyper Voice", "Protect", "Wish"],
- "abilities": ["Sap Sipper"],
- "teraTypes": ["Fairy", "Ground", "Water"]
}
]
},
@@ -7120,7 +7144,7 @@
"sets": [
{
"role": "Bulky Attacker",
- "movepool": ["Close Combat", "Seed Bomb", "Spore", "Sucker Punch"],
+ "movepool": ["Close Combat", "Crunch", "Spore", "Sucker Punch"],
"abilities": ["Protosynthesis"],
"teraTypes": ["Fighting", "Poison"]
},
@@ -7280,7 +7304,7 @@
]
},
"ironjugulis": {
- "level": 78,
+ "level": 77,
"sets": [
{
"role": "Wallbreaker",
@@ -7314,11 +7338,11 @@
]
},
"ironbundle": {
- "level": 77,
+ "level": 78,
"sets": [
{
"role": "Fast Attacker",
- "movepool": ["Encore", "Flip Turn", "Freeze-Dry", "Hydro Pump", "Ice Beam", "Substitute"],
+ "movepool": ["Encore", "Flip Turn", "Freeze-Dry", "Hydro Pump", "Ice Beam"],
"abilities": ["Quark Drive"],
"teraTypes": ["Ice", "Water"]
}
@@ -7426,7 +7450,7 @@
},
{
"role": "Setup Sweeper",
- "movepool": ["Ice Shard", "Icicle Crash", "Sacred Sword", "Sucker Punch", "Swords Dance", "Throat Chop"],
+ "movepool": ["Icicle Crash", "Sacred Sword", "Sucker Punch", "Swords Dance", "Throat Chop"],
"abilities": ["Sword of Ruin"],
"teraTypes": ["Dark", "Fighting", "Ice"]
}
@@ -7481,8 +7505,8 @@
"level": 65,
"sets": [
{
- "role": "Fast Bulky Setup",
- "movepool": ["Calm Mind", "Draco Meteor", "Electro Drift", "Substitute"],
+ "role": "Setup Sweeper",
+ "movepool": ["Calm Mind", "Draco Meteor", "Dragon Pulse", "Electro Drift"],
"abilities": ["Hadron Engine"],
"teraTypes": ["Electric"]
},
diff --git a/data/random-battles/gen9/teams.ts b/data/random-battles/gen9/teams.ts
index 86d0c1dff7..4569c1dabc 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;
@@ -103,7 +104,7 @@ const SPEED_CONTROL = [
];
// Moves that shouldn't be the only STAB moves:
const NO_STAB = [
- 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'bulletpunch', 'chatter', 'chloroblast', 'clearsmog', 'covet',
+ 'acidspray', 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'bulletpunch', 'chatter', 'chloroblast', 'clearsmog', 'covet',
'dragontail', 'doomdesire', 'electroweb', 'eruption', 'explosion', 'fakeout', 'feint', 'flamecharge', 'flipturn', 'futuresight',
'grassyglide', 'iceshard', 'icywind', 'incinerate', 'infestation', 'machpunch', 'meteorbeam', 'mortalspin', 'nuzzle', 'pluck', 'pursuit',
'quickattack', 'rapidspin', 'reversal', 'selfdestruct', 'shadowsneak', 'skydrop', 'snarl', 'strugglebug', 'suckerpunch', 'trailblaze',
@@ -145,7 +146,7 @@ const DOUBLES_NO_LEAD_POKEMON = [
];
const DEFENSIVE_TERA_BLAST_USERS = [
- 'alcremie', 'bellossom', 'comfey', 'fezandipiti', 'florges', 'raikou',
+ 'alcremie', 'bellossom', 'comfey', 'fezandipiti', 'florges',
];
function sereneGraceBenefits(move: Move) {
@@ -245,7 +246,9 @@ export class RandomTeams {
!counter.get('Steel') &&
(isDoubles || species.baseStats.atk >= 90 || movePool.includes('gigatonhammer') || movePool.includes('makeitrain'))
),
- Water: (movePool, moves, abilities, types, counter) => (!counter.get('Water') && !types.includes('Ground')),
+ Water: (movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles) => (
+ !counter.get('Water') && (!types.includes('Ground') || isDoubles)
+ ),
};
this.poolsCacheKey = undefined;
this.cachedPool = undefined;
@@ -500,7 +503,7 @@ export class RandomTeams {
// Team-based move culls
if (teamDetails.screens) {
- if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil'));
+ if (movePool.includes('auroraveil') && !isDoubles) this.fastPop(movePool, movePool.indexOf('auroraveil'));
if (movePool.length >= this.maxMoveCount + 2) {
if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect'));
if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen'));
@@ -567,7 +570,6 @@ export class RandomTeams {
[SETUP, HAZARDS],
[SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']],
[PHYSICAL_SETUP, PHYSICAL_SETUP],
- [SPECIAL_SETUP, 'thunderwave'],
['substitute', PIVOT_MOVES],
[SPEED_SETUP, ['aquajet', 'rest', 'trickroom']],
['curse', ['irondefense', 'rapidspin']],
@@ -834,11 +836,6 @@ export class RandomTeams {
counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles,
movePool, teraType, role);
}
- // Enforce Thunder Wave on Prankster users as well
- if (movePool.includes('thunderwave') && abilities.includes('Prankster')) {
- counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
}
// Enforce STAB priority
@@ -1104,7 +1101,6 @@ export class RandomTeams {
// Hard-code abilities here
if (species.id === 'drifblim') return moves.has('defog') ? 'Aftermath' : 'Unburden';
if (abilities.includes('Flash Fire') && this.dex.getEffectiveness('Fire', teraType) >= 1) return 'Flash Fire';
- if (species.id === 'hitmonchan' && counter.get('ironfist')) return 'Iron Fist';
if ((species.id === 'thundurus' || species.id === 'tornadus') && !counter.get('Physical')) return 'Prankster';
if (species.id === 'swampert' && (counter.get('Water') || moves.has('flipturn'))) return 'Torrent';
if (species.id === 'toucannon' && counter.get('skilllink')) return 'Skill Link';
@@ -1163,19 +1159,19 @@ export class RandomTeams {
}
return this.sample(species.requiredItems);
}
- if (role === 'AV Pivot') return 'Assault Vest';
if (species.id === 'pikachu') return 'Light Ball';
+ if (role === 'AV Pivot') return 'Assault Vest';
if (species.id === 'regieleki') return 'Magnet';
if (types.includes('Normal') && moves.has('doubleedge') && moves.has('fakeout')) return 'Silk Scarf';
if (
species.id === 'froslass' || moves.has('populationbomb') ||
(ability === 'Hustle' && counter.get('setup') && !isDoubles && this.randomChance(1, 2))
) return 'Wide Lens';
- if (species.id === 'smeargle' && !isDoubles) return 'Focus Sash';
+ if (species.id === 'smeargle') return 'Focus Sash';
if (moves.has('clangoroussoul') || (species.id === 'toxtricity' && moves.has('shiftgear'))) return 'Throat Spray';
if (
(species.baseSpecies === 'Magearna' && role === 'Tera Blast user') ||
- 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 (
@@ -1291,9 +1287,14 @@ export class RandomTeams {
(role === 'Bulky Protect' && counter.get('setup')) ||
['irondefense', 'coil', 'acidarmor', 'wish'].some(m => moves.has(m)) ||
(counter.get('recovery') && !moves.has('strengthsap') && !counter.get('speedcontrol') && !offensiveRole) ||
+ (PROTECT_MOVES.some(m => moves.has(m)) && moves.has('leechseed')) ||
species.id === 'regigigas'
) return 'Leftovers';
- if (species.id === 'sylveon') return 'Pixie Plate';
+ if (moves.has('hypervoice') && !types.includes('Normal')) return 'Throat Spray';
+ if (
+ role === 'Doubles Fast Attacker' && !counter.get('recoil') &&
+ species.baseStats.hp + species.baseStats.def + species.baseStats.spd <= 230
+ ) return 'Focus Sash';
if (
(offensiveRole || (role === 'Tera Blast user' && (species.baseStats.spe >= 80 || moves.has('trickroom')))) &&
!moves.has('fakeout') &&
@@ -1306,7 +1307,7 @@ export class RandomTeams {
) ? 'Booster Energy' : 'Life Orb';
}
if (isLead && (species.id === 'glimmora' ||
- (['Doubles Fast Attacker', 'Doubles Wallbreaker', 'Offensive Protect'].includes(role) &&
+ (['Doubles Wallbreaker', 'Offensive Protect'].includes(role) &&
species.baseStats.hp + species.baseStats.def + species.baseStats.spd <= 230))
) return 'Focus Sash';
if (
@@ -1329,17 +1330,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';
}
@@ -1355,7 +1356,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)
@@ -1378,6 +1379,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') &&
@@ -1587,6 +1589,7 @@ export class RandomTeams {
return {
name: species.baseSpecies,
species: forme,
+ speciesId: species.id,
gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')),
shiny: this.randomChance(1, 1024),
level,
@@ -1635,6 +1638,79 @@ export class RandomTeams {
return [pokemonPool, baseSpeciesPool];
}
+ /**
+ * Checks if the new species is compatible with the other mons currently on the team.
+ */
+ getPokemonCompatibility(
+ species: Species,
+ pokemon: RandomTeamsTypes.RandomSet[],
+ isDoubles = false
+ ): boolean {
+ const webSetters = [
+ 'ariados', 'smeargle', 'masquerain', 'kricketune', 'leavanny', 'galvantula', 'vikavolt', 'ribombee', 'araquanid', 'spidops',
+ ];
+ const screenSetters = ['meowstic', 'grimmsnarl', 'ninetalesalola', 'abomasnow'];
+
+ const doublesWebSetters = ['ariados', 'kricketune', 'leavanny', 'galvantula', 'vikavolt', 'araquanid', 'spidops'];
+ const doublesScreenSetters = ['meowstic', 'klefki', 'grimmsnarl', 'ninetalesalola', 'abomasnow'];
+
+ const sunSetters = ['ninetales', 'torkoal', 'groudon', 'koraidon'];
+ const rainSetters = ['politoed', 'pelipper', 'kyogre'];
+ const sandSetters = ['tyranitar', 'hippowdon'];
+ const snowSetters = ['ninetalesalola', 'abomasnow'];
+
+ const incompatiblePokemon = [
+ // These Pokemon with support roles are considered too similar to each other.
+ ['blissey', 'chansey'],
+ ['illumise', 'volbeat'],
+
+ // These combinations are prevented to avoid double webs or screens.
+ [webSetters, webSetters],
+ [screenSetters, screenSetters],
+
+ // These Pokemon are incompatible because the presence of one actively harms the other.
+ // Prevent Dry Skin + sun setting ability
+ ['toxicroak', sunSetters],
+ ];
+
+ const doublesIncompatiblePokemon = [
+ // These Pokemon with support roles are considered too similar to each other.
+ ['illumise', 'volbeat'],
+ [['minun', 'plusle', 'pachirisu', 'raichu'], ['minun', 'plusle', 'pachirisu', 'raichu']],
+
+ // These combinations are prevented to avoid double webs or screens.
+ [doublesWebSetters, doublesWebSetters],
+ [doublesScreenSetters, doublesScreenSetters],
+
+ // These Pokemon are incompatible because the presence of one actively harms the other.
+ // Prevent Dry Skin + sun setting ability
+ ['toxicroak', sunSetters],
+
+ // Prevent conflicting weather abilities from generating together
+ [sunSetters, [...rainSetters, ...sandSetters, ...snowSetters]],
+ [rainSetters, [...sandSetters, ...snowSetters]],
+ [sandSetters, snowSetters],
+
+ // Prevent conflicting terrain abilities from generating together
+ [['pincurchin', 'miraidon'], ['indeedee', 'indeedeef', 'rillaboom']],
+ ['rillaboom', ['indeedee', 'indeedeef']],
+ ];
+
+ const incompatibilityList = isDoubles ? doublesIncompatiblePokemon : incompatiblePokemon;
+ for (const pair of incompatibilityList) {
+ const monsArrayA = (Array.isArray(pair[0])) ? pair[0] : [pair[0]];
+ const monsArrayB = (Array.isArray(pair[1])) ? pair[1] : [pair[1]];
+ if (monsArrayB.includes(species.id)) {
+ if (pokemon.some(m => monsArrayA.includes(m.speciesId!))) return false;
+ }
+ if (monsArrayA.includes(species.id)) {
+ if (pokemon.some(m => monsArrayB.includes(m.speciesId!))) return false;
+ }
+ }
+
+ return true;
+ }
+
randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./sets.json');
randomDoublesSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./doubles-sets.json');
@@ -1742,6 +1818,9 @@ export class RandomTeams {
if (!this.adjustLevel && (this.getLevel(species, isDoubles) === 100) && numMaxLevelPokemon >= limitFactor) {
continue;
}
+
+ // Check compatibility with team
+ if (!this.getPokemonCompatibility(species, pokemon, isDoubles)) continue;
}
// Limit three of any type combination in Monotype
@@ -3004,6 +3083,257 @@ 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 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 (teamData.has[itemId]) continue;
+ teamData.has[itemId] = 1;
+ 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']),
+ 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.sampleIfArray(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 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] >= limitFactor) {
+ skip = true;
+ break;
+ }
+ }
+ }
+ }
+ if (skip) continue;
+
+ const set = this.random1v1FactorySet(species, teamData);
+ if (!set) continue;
+ teamData.has[toID(set.item)] = 1;
+
+ const atkEVs = set.evs['atk'];
+ const spaEVs = set.evs['spa'];
+ const physMoveCount = set.moves.map(x => this.dex.moves.get(x).category).filter(x => x === 'Physical').length;
+ const specMoveCount = set.moves.map(x => this.dex.moves.get(x).category).filter(x => x === 'Special').length;
+ const atkBoostingMoves = set.moves.map(x => this.dex.moves.get(x))
+ .filter(x => (x.target === 'self' && x.boosts?.atk) || (x.id === 'curse' && !species.types.includes('Ghost'))).length;
+ const spaBoostingMoves = set.moves.map(x => this.dex.moves.get(x))
+ .filter(x => (x.target === 'self' && x.boosts?.spa) || x.id === 'takeheart').length;
+ if (teamData.has['physical'] && (atkEVs || physMoveCount >= 2 || atkBoostingMoves)) continue;
+ if (teamData.has['special'] && (spaEVs || specMoveCount >= 2 || spaBoostingMoves)) continue;
+ if (!teamData.has['physical']) teamData.has['physical'] = 0;
+ if (!teamData.has['special']) teamData.has['special'] = 0;
+ if (atkEVs || physMoveCount >= 2 || atkBoostingMoves) teamData.has['physical']++;
+ if (spaEVs || specMoveCount >= 2 || spaBoostingMoves) teamData.has['special']++;
+
+ // Limit 1 of any type combination
+ let typeCombo = types.slice().sort().join();
+ 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);
+ 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) {
+ if (teamData.weaknesses[type] >= limitFactor) return this.random1v1FactoryTeam(side, ++depth);
+ }
+ }
+ return pokemon;
+ }
}
export default RandomTeams;
diff --git a/data/random-battles/gen9baby/sets.json b/data/random-battles/gen9baby/sets.json
index 8f41c6ea17..0507dbd0ac 100644
--- a/data/random-battles/gen9baby/sets.json
+++ b/data/random-battles/gen9baby/sets.json
@@ -1101,7 +1101,7 @@
"level": 5,
"sets": [
{
- "role": "Setup Sweeper",
+ "role": "Bulky Setup",
"movepool": ["Dual Wingbeat", "Earthquake", "Knock Off", "Swords Dance"],
"abilities": ["Immunity"],
"teraTypes": ["Steel", "Water"]
@@ -1970,7 +1970,7 @@
"level": 6,
"sets": [
{
- "role": "Setup Sweeper",
+ "role": "Bulky Setup",
"movepool": ["Iron Head", "Night Slash", "Sucker Punch", "Swords Dance"],
"abilities": ["Defiant"],
"teraTypes": ["Dark", "Fairy", "Steel"]
@@ -2599,7 +2599,7 @@
]
},
"skiddo": {
- "level": 7,
+ "level": 6,
"sets": [
{
"role": "Bulky Setup",
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"]
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/monsterhunter/teams.ts b/data/random-battles/monsterhunter/teams.ts
deleted file mode 100644
index ed6c27548e..0000000000
--- a/data/random-battles/monsterhunter/teams.ts
+++ /dev/null
@@ -1,974 +0,0 @@
-import { RandomTeams, type MoveCounter } from "../gen9/teams";
-
-// Moves that restore HP:
-const RECOVERY_MOVES = [
- 'healorder', 'milkdrink', 'moonlight', 'morningsun', 'recover', 'roost', 'shoreup', 'slackoff', 'softboiled', 'strengthsap', 'synthesis',
-];
-// Moves that boost Attack:
-const PHYSICAL_SETUP = [
- 'bellydrum', 'bulkup', 'coil', 'curse', 'dragondance', 'honeclaws', 'howl', 'meditate', 'poweruppunch', 'swordsdance', 'tidyup', 'victorydance',
- 'filletaway',
-];
-// Moves which boost Special Attack:
-const SPECIAL_SETUP = [
- 'calmmind', 'chargebeam', 'geomancy', 'nastyplot', 'quiverdance', 'tailglow', 'takeheart', 'torchsong', 'filletaway',
-];
-// Some moves that only boost Speed:
-const SPEED_SETUP = [
- 'agility', 'autotomize', 'flamecharge', 'rockpolish', 'trailblaze',
-];
-// Conglomerate for ease of access
-const SETUP = [
- 'acidarmor', 'agility', 'autotomize', 'bellydrum', 'bulkup', 'calmmind', 'clangoroussoul', 'coil', 'cosmicpower', 'curse', 'dragondance',
- 'filletaway', 'flamecharge', 'growth', 'honeclaws', 'howl', 'irondefense', 'meditate', 'nastyplot', 'noretreat', 'poweruppunch', 'quiverdance',
- 'rockpolish', 'shellsmash', 'shiftgear', 'swordsdance', 'tailglow', 'takeheart', 'tidyup', 'trailblaze', 'trickroom', 'workup', 'victorydance',
-];
-const SPEED_CONTROL = [
- 'electroweb', 'glare', 'icywind', 'lowsweep', 'quash', 'stringshot', 'tailwind', 'thunderwave', 'trickroom',
-];
-// Hazard-setting moves
-const HAZARDS = [
- 'spikes', 'stealthrock', 'stickyweb', 'toxicspikes',
-];
-// Protect and its variants
-const PROTECT_MOVES = [
- 'banefulbunker', 'burningbulwark', 'protect', 'silktrap', 'spikyshield',
-];
-// Moves that switch the user out
-const PIVOT_MOVES = [
- 'chillyreception', 'flipturn', 'partingshot', 'shedtail', 'teleport', 'uturn', 'voltswitch',
-];
-
-// Moves that should be paired together when possible
-const MOVE_PAIRS = [
- ['lightscreen', 'reflect'],
- ['sleeptalk', 'rest'],
- ['protect', 'wish'],
- ['spikyshield', 'wish'],
- ['leechseed', 'protect'],
- ['leechseed', 'substitute'],
- ['moongeistbeam', 'moonlight'],
- ['hex', 'willowisp'],
- ['hex', 'toxic'],
- ['hex', 'thunderwave'],
- ['nightmare', 'willowisp'],
- ['nightmare', 'toxic'],
- ['nightmare', 'thunderwave'],
-];
-
-/** Pokemon who always want priority STAB, and are fine with it as its only STAB move of that type */
-const PRIORITY_POKEMON = [
- 'breloom', 'brutebonnet', 'cacturne', 'honchkrow', 'mimikyu', 'ragingbolt', 'scizor',
-];
-
-/** Pokemon who should never be in the lead slot */
-const NO_LEAD_POKEMON = [
- 'Zacian', 'Zamazenta',
-];
-const DOUBLES_NO_LEAD_POKEMON = [
- 'Basculegion', 'Houndstone', 'Iron Bundle', 'Roaring Moon', 'Zacian', 'Zamazenta',
-];
-export class RandomMHSTeams extends RandomTeams {
- override cullMovePool(
- types: string[],
- moves: Set,
- abilities: string[],
- counter: MoveCounter,
- movePool: string[],
- teamDetails: RandomTeamsTypes.TeamDetails,
- species: Species,
- isLead: boolean,
- isDoubles: boolean,
- teraType: string,
- role: RandomTeamsTypes.Role,
- ): void {
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- // If we have two unfilled moves and only one unpaired move, cull the unpaired move.
- if (moves.size === this.maxMoveCount - 2) {
- const unpairedMoves = [...movePool];
- for (const pair of MOVE_PAIRS) {
- if (movePool.includes(pair[0]) && movePool.includes(pair[1])) {
- this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0]));
- this.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1]));
- }
- }
- if (unpairedMoves.length === 1) {
- this.fastPop(movePool, movePool.indexOf(unpairedMoves[0]));
- }
- }
-
- // These moves are paired, and shouldn't appear if there is not room for them both.
- if (moves.size === this.maxMoveCount - 1) {
- for (const pair of MOVE_PAIRS) {
- if (movePool.includes(pair[0]) && movePool.includes(pair[1])) {
- this.fastPop(movePool, movePool.indexOf(pair[0]));
- this.fastPop(movePool, movePool.indexOf(pair[1]));
- }
- }
- }
-
- // Develop additional move lists
- const statusMoves = this.cachedStatusMoves;
-
- // Team-based move culls
- if (teamDetails.screens) {
- if (movePool.includes('auroraveil')) this.fastPop(movePool, movePool.indexOf('auroraveil'));
- if (movePool.length >= this.maxMoveCount + 2) {
- if (movePool.includes('reflect')) this.fastPop(movePool, movePool.indexOf('reflect'));
- if (movePool.includes('lightscreen')) this.fastPop(movePool, movePool.indexOf('lightscreen'));
- }
- }
- if (teamDetails.stickyWeb) {
- if (movePool.includes('stickyweb')) this.fastPop(movePool, movePool.indexOf('stickyweb'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.stealthRock) {
- if (movePool.includes('stealthrock')) this.fastPop(movePool, movePool.indexOf('stealthrock'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.defog || teamDetails.rapidSpin) {
- if (movePool.includes('defog')) this.fastPop(movePool, movePool.indexOf('defog'));
- if (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.toxicSpikes) {
- if (movePool.includes('toxicspikes')) this.fastPop(movePool, movePool.indexOf('toxicspikes'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.spikes && teamDetails.spikes >= 2) {
- if (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
- if (teamDetails.statusCure) {
- if (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell'));
- if (moves.size + movePool.length <= this.maxMoveCount) return;
- }
-
- if (isDoubles) {
- const doublesIncompatiblePairs = [
- // In order of decreasing generalizability
- [SPEED_CONTROL, SPEED_CONTROL],
- [HAZARDS, HAZARDS],
- ['rockslide', 'stoneedge'],
- [SETUP, ['fakeout', 'helpinghand']],
- [PROTECT_MOVES, 'wideguard'],
- [['fierydance', 'fireblast'], 'heatwave'],
- ['dazzlinggleam', ['fleurcannon', 'moonblast']],
- ['poisongas', ['toxicspikes', 'willowisp']],
- [RECOVERY_MOVES, ['healpulse', 'lifedew']],
- ['healpulse', 'lifedew'],
- ['haze', 'icywind'],
- [['hydropump', 'muddywater'], ['muddywater', 'scald']],
- ['disable', 'encore'],
- ['freezedry', 'icebeam'],
- ['energyball', 'leafstorm'],
- ['earthpower', 'sandsearstorm'],
- ['coaching', ['helpinghand', 'howl']],
- ];
-
- for (const pair of doublesIncompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
-
- if (role !== 'Offensive Protect') this.incompatibleMoves(moves, movePool, PROTECT_MOVES, ['flipturn', 'uturn']);
- }
-
- // General incompatibilities
- const incompatiblePairs = [
- // These moves don't mesh well with other aspects of the set
- [statusMoves, ['healingwish', 'switcheroo', 'trick']],
- [SETUP, PIVOT_MOVES],
- [SETUP, HAZARDS],
- [SETUP, ['defog', 'nuzzle', 'toxic', 'yawn', 'haze']],
- [PHYSICAL_SETUP, PHYSICAL_SETUP],
- [SPECIAL_SETUP, 'thunderwave'],
- ['substitute', PIVOT_MOVES],
- [SPEED_SETUP, ['aquajet', 'rest', 'trickroom']],
- ['curse', ['irondefense', 'rapidspin']],
- ['dragondance', 'dracometeor'],
- ['yawn', 'roar'],
- ['trick', 'uturn'],
-
- // These attacks are redundant with each other
- [['psychic', 'psychicnoise'], ['psyshock', 'psychicnoise']],
- ['surf', ['hydropump', 'scald']],
- ['liquidation', 'wavecrash'],
- ['aquajet', 'flipturn'],
- ['gigadrain', 'leafstorm'],
- ['powerwhip', 'hornleech'],
- ['airslash', 'hurricane'],
- ['knockoff', 'foulplay'],
- ['throatchop', ['crunch', 'lashout']],
- ['doubleedge', ['bodyslam', 'headbutt']],
- [['fireblast', 'magmastorm'], ['fierydance', 'flamethrower', 'lavaplume']],
- ['thunderpunch', 'wildcharge'],
- ['thunderbolt', 'discharge'],
- ['gunkshot', ['direclaw', 'poisonjab', 'sludgebomb']],
- ['aurasphere', 'focusblast'],
- ['closecombat', 'drainpunch'],
- [['dragonpulse', 'spacialrend'], 'dracometeor'],
- ['heavyslam', 'flashcannon'],
- ['alluringvoice', 'dazzlinggleam'],
- ['defog', 'rapidspin'],
-
- // These status moves are redundant with each other
- ['taunt', 'disable'],
- [['thunderwave', 'toxic'], ['thunderwave', 'willowisp']],
- [['thunderwave', 'toxic', 'willowisp'], 'toxicspikes'],
-
- // This space reserved for assorted hardcodes that otherwise make little sense out of context
- // Landorus and Thundurus
- ['nastyplot', ['rockslide', 'knockoff']],
- // Persian
- ['switcheroo', 'fakeout'],
- // Amoonguss, though this can work well as a general rule later
- ['toxic', 'clearsmog'],
- // Chansey and Blissey
- ['healbell', 'stealthrock'],
- // Araquanid and Magnezone
- ['mirrorcoat', ['hydropump', 'bodypress']],
- ];
-
- for (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);
-
- if (!types.includes('Ice')) this.incompatibleMoves(moves, movePool, 'icebeam', 'icywind');
-
- if (!isDoubles) this.incompatibleMoves(moves, movePool, 'taunt', 'encore');
-
- if (!types.includes('Dark') && teraType !== 'Dark') this.incompatibleMoves(moves, movePool, 'knockoff', 'suckerpunch');
-
- if (!abilities.includes('Prankster')) this.incompatibleMoves(moves, movePool, 'thunderwave', 'yawn');
-
- // This space reserved for assorted hardcodes that otherwise make little sense out of context:
- // To force Close Combat on Barraskewda without locking it to Tera Fighting
- if (species.id === 'barraskewda') {
- this.incompatibleMoves(moves, movePool, ['psychicfangs', 'throatchop'], ['poisonjab', 'throatchop']);
- }
- // To force Toxic on Quagsire
- if (species.id === 'quagsire') this.incompatibleMoves(moves, movePool, 'spikes', 'icebeam');
- // Taunt/Knock should be Cyclizar's flex moveslot
- if (species.id === 'cyclizar') this.incompatibleMoves(moves, movePool, 'taunt', 'knockoff');
- // To force Stealth Rock on Camerupt
- if (species.id === 'camerupt') this.incompatibleMoves(moves, movePool, 'roar', 'willowisp');
- // nothing else rolls these lol
- if (species.id === 'coalossal') this.incompatibleMoves(moves, movePool, 'flamethrower', 'overheat');
- }
-
- override randomMoveset(
- types: string[],
- abilities: string[],
- teamDetails: RandomTeamsTypes.TeamDetails,
- species: Species,
- isLead: boolean,
- isDoubles: boolean,
- movePool: string[],
- teraType: string,
- role: RandomTeamsTypes.Role,
- ): Set {
- const moves = new Set();
- let counter = this.queryMoves(moves, species, teraType, abilities);
- this.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead, isDoubles, teraType, role);
-
- // If there are only four moves, add all moves and return early
- if (movePool.length <= this.maxMoveCount) {
- for (const moveid of movePool) {
- moves.add(moveid);
- }
- return moves;
- }
-
- const runEnforcementChecker = (checkerName: string) => {
- if (!this.moveEnforcementCheckers[checkerName]) return false;
- return this.moveEnforcementCheckers[checkerName](
- movePool, moves, abilities, types, counter, species, teamDetails, isLead, isDoubles, teraType, role
- );
- };
-
- if (role === 'Tera Blast user') {
- counter = this.addMove('terablast', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- // Add required move (e.g. Relic Song for Meloetta-P)
- if (species.requiredMove) {
- const move = this.dex.moves.get(species.requiredMove).id;
- counter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Add other moves you really want to have, e.g. STAB, recovery, setup.
-
- // Enforce Facade if Guts is a possible ability
- if (movePool.includes('facade') && abilities.includes('Guts')) {
- counter = this.addMove('facade', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Enforce Night Shade, Revelation Dance, Revival Blessing, and Sticky Web
- for (const moveid of ['nightshade', 'revelationdance', 'revivalblessing', 'stickyweb']) {
- if (movePool.includes(moveid)) {
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Trick Room on Doubles Wallbreaker
- if (movePool.includes('trickroom') && role === 'Doubles Wallbreaker') {
- counter = this.addMove('trickroom', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Enforce hazard removal on Bulky Support if the team doesn't already have it
- if (role === 'Bulky Support' && !teamDetails.defog && !teamDetails.rapidSpin) {
- if (movePool.includes('rapidspin')) {
- counter = this.addMove('rapidspin', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- if (movePool.includes('defog')) {
- counter = this.addMove('defog', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Knock Off on pure Normal- and Fighting-types in singles
- if (!isDoubles && types.length === 1 && (types.includes('Normal') || types.includes('Fighting'))) {
- if (movePool.includes('knockoff')) {
- counter = this.addMove('knockoff', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Flip Turn on pure Water-type Wallbreakers
- if (types.length === 1 && types.includes('Water') &&
- role === 'Wallbreaker' && movePool.includes('flipturn')) {
- counter = this.addMove('flipturn', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
-
- // Enforce Spore on Smeargle
- if (species.id === 'smeargle') {
- if (movePool.includes('spore')) {
- counter = this.addMove('spore', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce moves in doubles
- if (isDoubles) {
- const doublesEnforcedMoves = ['auroraveil', 'mortalspin', 'spore'];
- for (const moveid of doublesEnforcedMoves) {
- if (movePool.includes(moveid)) {
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- // Enforce Fake Out on slow Pokemon
- if (movePool.includes('fakeout') && species.baseStats.spe <= 50) {
- counter = this.addMove('fakeout', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- // Enforce Tailwind on Prankster and Gale Wings users
- if (movePool.includes('tailwind') && (abilities.includes('Prankster') || abilities.includes('Gale Wings'))) {
- counter = this.addMove('tailwind', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- // Enforce Thunder Wave on Prankster users as well
- if (movePool.includes('thunderwave') && abilities.includes('Prankster')) {
- counter = this.addMove('thunderwave', moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce STAB priority
- if (
- ['Bulky Attacker', 'Bulky Setup', 'Wallbreaker', 'Doubles Wallbreaker'].includes(role) ||
- PRIORITY_POKEMON.includes(species.id)
- ) {
- const priorityMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (
- types.includes(moveType) && (move.priority > 0 || (moveid === 'grassyglide' && abilities.includes('Grassy Surge'))) &&
- (move.basePower || move.basePowerCallback)
- ) {
- priorityMoves.push(moveid);
- }
- }
- if (priorityMoves.length) {
- const moveid = this.sample(priorityMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce a single STAB for Moltres
- if (species.id === 'moltres') {
- const typeToEnforce = this.randomChance(1, 2) ? 'Fire' : 'Flying';
-
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && typeToEnforce === moveType) {
- stabMoves.push(moveid);
- }
- }
- while (runEnforcementChecker(typeToEnforce)) {
- if (!stabMoves.length) break;
- const moveid = this.sampleNoReplace(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce STAB
- for (const type of types) {
- // Moltres already has STAB, so ignore this block
- if (species.id === 'moltres') break;
- // prevents Meowscarada from being enforced stab moves
- if (species.id === 'meowscarada') break;
- // Check if a STAB move of that type should be required
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) {
- stabMoves.push(moveid);
- }
- }
- while (runEnforcementChecker(type)) {
- if (!stabMoves.length) break;
- const moveid = this.sampleNoReplace(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce Tera STAB
- // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care)
- if (!counter.get('stabtera') && !['Bulky Support', 'Doubles Support'].includes(role) &&
- !abilities.includes('Protean')) {
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && teraType === moveType) {
- stabMoves.push(moveid);
- }
- }
- if (stabMoves.length) {
- const moveid = this.sample(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // If no STAB move was added, add a STAB move
- // prevents Meowscarada from being enforced stab moves (since it has Protean and doesn't care)
- if (!counter.get('stab') && !abilities.includes('Protean')) {
- const stabMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) {
- stabMoves.push(moveid);
- }
- }
- if (stabMoves.length) {
- const moveid = this.sample(stabMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce recovery
- if (['Bulky Support', 'Bulky Attacker', 'Bulky Setup'].includes(role)) {
- const recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid));
- if (recoveryMoves.length) {
- const moveid = this.sample(recoveryMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce setup
- if (role.includes('Setup') || role === 'Tera Blast user') {
- // First, try to add a non-Speed setup move
- const nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && !SPEED_SETUP.includes(moveid));
- if (nonSpeedSetupMoves.length) {
- const moveid = this.sample(nonSpeedSetupMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- } else {
- // No non-Speed setup moves, so add any (Speed) setup move
- const setupMoves = movePool.filter(moveid => SETUP.includes(moveid));
- if (setupMoves.length) {
- const moveid = this.sample(setupMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
-
- // Enforce redirecting moves and Fake Out on Doubles Support
- if (role === 'Doubles Support') {
- for (const moveid of ['fakeout', 'followme', 'ragepowder']) {
- if (movePool.includes(moveid)) {
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
-
- // Enforce Protect
- if (role.includes('Protect')) {
- const protectMoves = movePool.filter(moveid => PROTECT_MOVES.includes(moveid));
- if (protectMoves.length) {
- const moveid = this.sample(protectMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce a move not on the noSTAB list
- if (!counter.damagingMoves.size) {
- // Choose an attacking move
- const attackingMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- if (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid);
- }
- if (attackingMoves.length) {
- const moveid = this.sample(attackingMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
-
- // Enforce coverage move
- if (!['AV Pivot', 'Fast Support', 'Bulky Support', 'Bulky Protect', 'Doubles Support'].includes(role)) {
- if (counter.damagingMoves.size === 1) {
- // Find the type of the current attacking move
- const currentAttackType = counter.damagingMoves.values().next().value!.type;
- // Choose an attacking move that is of different type to the current single attack
- const coverageMoves = [];
- for (const moveid of movePool) {
- const move = this.dex.moves.get(moveid);
- const moveType = this.getMoveType(move, species, abilities, teraType);
- if (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback)) {
- if (currentAttackType !== moveType) coverageMoves.push(moveid);
- }
- }
- if (coverageMoves.length) {
- const moveid = this.sample(coverageMoves);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
-
- // Add (moves.size < this.maxMoveCount) as a condition if moves is getting larger than 4 moves.
- // If you want moves to be favored but not required, add something like && this.randomChance(1, 2) to your condition.
-
- // Choose remaining moves randomly from movepool and add them to moves list:
- while (moves.size < this.maxMoveCount && movePool.length) {
- if (moves.size + movePool.length <= this.maxMoveCount) {
- for (const moveid of movePool) {
- moves.add(moveid);
- }
- break;
- }
- const moveid = this.sample(movePool);
- counter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- for (const pair of MOVE_PAIRS) {
- if (moveid === pair[0] && movePool.includes(pair[1])) {
- counter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- if (moveid === pair[1] && movePool.includes(pair[0])) {
- counter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead, isDoubles,
- movePool, teraType, role);
- }
- }
- }
- return moves;
- }
-
- override getPriorityItem(
- ability: string,
- types: string[],
- moves: Set,
- counter: MoveCounter,
- teamDetails: RandomTeamsTypes.TeamDetails,
- species: Species,
- isLead: boolean,
- isDoubles: boolean,
- teraType: string,
- role: RandomTeamsTypes.Role,
- ) {
- if (!isDoubles) {
- if (role === 'Fast Bulky Setup' && (ability === 'Quark Drive' || ability === 'Protosynthesis')) {
- return 'Booster Energy';
- }
- if (species.id === 'lokix') {
- return (role === 'Fast Attacker') ? 'Silver Powder' : 'Life Orb';
- }
- }
- if (species.requiredItems) {
- // Z-Crystals aren't available in Gen 9, so require Plates
- if (species.baseSpecies === 'Arceus') {
- return species.requiredItems[0];
- }
- return this.sample(species.requiredItems);
- }
- if (role === 'AV Pivot') return 'Assault Vest';
- // MHS hardcodes
- if (species.id === 'yiankutku' && moves.has('facade') || species.id === 'bluekutku' && moves.has('facade')) {
- return 'Frost Orb';
- }
- if (species.id === 'xenojiiva' && ability === 'Quark Drive') return 'Booster Energy';
- if (species.id === 'odogaron' && moves.has('closecombat')) return 'White Herb';
- if (species.id === 'odogaron' && !moves.has('closecombat')) return 'Sitrus Berry';
- if (
- ability === 'Magic Guard' || ability === 'Fervent Scales' ||
- (ability === 'Sheer Force' && counter.get('sheerforce'))
- ) {
- return 'Life Orb';
- }
- if (moves.has('devour') && ability === 'Unburden') return 'Liechi Berry';
- if (moves.has('virulentvolley')) return 'Loaded Dice';
- if (moves.has('magnalance') && ability === 'Reactive Core') return 'Flame Orb';
- if (moves.has('dragondance') && ability === 'Reactive Core') return 'Frost Orb';
- // other
- if (moves.has('substitute')) return 'Leftovers';
- if (moves.has('protect') && ability !== 'Speed Boost') return 'Leftovers';
- if (counter.get('skilllink') && ability !== 'Skill Link' && species.id !== 'breloom') return 'Loaded Dice';
- if (moves.has('shellsmash') && ability !== 'Weak Armor') return 'White Herb';
- if ((ability === 'Guts' || moves.has('facade')) && !moves.has('sleeptalk')) {
- return (types.includes('Fire') || ability === 'Toxic Boost' || ability === 'Poison Heal') ? 'Toxic Orb' : 'Flame Orb';
- }
- if (['healingwish', 'switcheroo', 'trick'].some(m => moves.has(m))) {
- if (
- species.baseStats.spe >= 60 && species.baseStats.spe <= 108 &&
- role !== 'Wallbreaker' && role !== 'Doubles Wallbreaker' && !counter.get('priority')
- ) {
- return 'Choice Scarf';
- } else {
- return (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs';
- }
- }
- if (
- role === 'Wallbreaker' && (counter.get('Physical') > counter.get('Special')) && !counter.get('Status')
- ) {
- return 'Choice Band';
- }
- if (
- role === 'Wallbreaker' && (counter.get('Physical') < counter.get('Special')) && !counter.get('Status')
- ) {
- return 'Choice Specs';
- }
- if (ability === 'Poison Heal' || ability === 'Quick Feet') return 'Toxic Orb';
- if (moves.has('acrobatics') && ability !== 'Quark Drive' && ability !== 'Protosynthesis') return '';
- if (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay';
- if (ability === 'Gluttony') return `${this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki'])} Berry`;
- if (
- ['Cheek Pouch', 'Cud Chew', 'Harvest', 'Ripen'].some(m => ability === m) ||
- moves.has('bellydrum') || moves.has('filletaway')
- ) {
- return 'Sitrus Berry';
- }
- if (this.dex.getEffectiveness('Rock', species) >= 2) return 'Heavy-Duty Boots';
- if (species.nfe) return 'Eviolite';
- if (['Bulky Attacker', 'Bulky Support', 'Bulky Setup'].some(m => role === (m))) return 'Leftovers';
- if (role === 'Fast Support' || role === 'Fast Bulky Setup') {
- return (counter.get('Physical') + counter.get('Special') >= 3) ? 'Life Orb' : 'Leftovers';
- }
- }
-
- override randomSet(
- s: string | Species,
- teamDetails: RandomTeamsTypes.TeamDetails = {},
- isLead = false,
- isDoubles = false
- ): RandomTeamsTypes.RandomSet {
- const species = this.dex.species.get(s);
- const forme = this.getForme(species);
- const sets = this.randomSets[species.id]["sets"];
- const possibleSets: RandomTeamsTypes.RandomSetData[] = [];
-
- const ruleTable = this.dex.formats.getRuleTable(this.format);
-
- for (const set of sets) {
- // Prevent Fast Bulky Setup on lead Paradox Pokemon, since it generates Booster Energy.
- const abilities = set.abilities!;
- if (
- isLead && (abilities.includes('Protosynthesis') || abilities.includes('Quark Drive')) &&
- set.role === 'Fast Bulky Setup'
- ) continue;
- // Prevent Tera Blast user if the team already has one, or if Terastallizion is prevented.
- if ((teamDetails.teraBlast || ruleTable.has('terastalclause')) && set.role === 'Tera Blast user') {
- continue;
- }
- possibleSets.push(set);
- }
- const set = this.sampleIfArray(possibleSets);
- const role = set.role;
- const movePool: string[] = [];
- for (const movename of set.movepool) {
- movePool.push(this.dex.moves.get(movename).id);
- }
- const teraTypes = set.teraTypes!;
- let teraType = this.sampleIfArray(teraTypes);
-
- let ability = '';
- let item = undefined;
-
- const evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 };
- const ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 };
-
- const types = species.types;
- const abilities = set.abilities!;
-
- // Get moves
- const moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, isDoubles, movePool, teraType, role);
- const counter = this.queryMoves(moves, species, teraType, abilities);
-
- // Get ability
- ability = this.getAbility(types, moves, abilities, counter, teamDetails, species, isLead, isDoubles, teraType, role);
-
- // Get items
- // First, the priority items
- item = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, isDoubles, teraType, role);
- if (item === undefined) {
- if (isDoubles) {
- item = this.getDoublesItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role);
- } else {
- item = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, teraType, role);
- }
- }
-
- // Get level
- const level = this.getLevel(species, isDoubles);
-
- // Prepare optimal HP
- const srImmunity = ability === 'Magic Guard' || item === 'Heavy-Duty Boots';
- let srWeakness = srImmunity ? 0 : this.dex.getEffectiveness('Rock', species);
- // Crash damage move users want an odd HP to survive two misses
- if (['axekick', 'highjumpkick', 'jumpkick'].some(m => moves.has(m))) srWeakness = 2;
- while (evs.hp > 1) {
- const hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10);
- if ((moves.has('substitute') && ['Sitrus Berry', 'Salac Berry'].includes(item))) {
- // Two Substitutes should activate Sitrus Berry
- if (hp % 4 === 0) break;
- } else if ((moves.has('bellydrum') || moves.has('filletaway')) && (item === 'Sitrus Berry' || ability === 'Gluttony')) {
- // Belly Drum should activate Sitrus Berry
- if (hp % 2 === 0) break;
- } else if (moves.has('substitute') && moves.has('endeavor')) {
- // Luvdisc should be able to Substitute down to very low HP
- if (hp % 4 > 0) break;
- } else {
- // Maximize number of Stealth Rock switch-ins
- if (srWeakness <= 0 || ability === 'Regenerator' || ['Leftovers', 'Life Orb', 'Eviolite'].includes(item)) break;
- if (item !== 'Sitrus Berry' && hp % (4 / srWeakness) > 0) break;
- // Minimise number of Stealth Rock switch-ins to activate Sitrus Berry
- if (item === 'Sitrus Berry' && hp % (4 / srWeakness) === 0) break;
- }
- evs.hp -= 4;
- }
-
- // Minimize confusion damage
- const noAttackStatMoves = [...moves].every(m => {
- const move = this.dex.moves.get(m);
- if (move.damageCallback || move.damage) return true;
- if (move.id === 'shellsidearm') return false;
- // Magearna and doubles Dragonite, though these can work well as a general rule
- if (move.id === 'terablast' && (
- species.id === 'porygon2' || moves.has('shiftgear') || species.baseStats.atk > species.baseStats.spa)
- ) return false;
- return move.category !== 'Physical' || move.id === 'bodypress' || move.id === 'foulplay';
- });
- // prevents Illumise (who can turn into Volbeat with Physical moves) from having 0 Atk EVs
- if (noAttackStatMoves && !moves.has('transform') && this.format.mod !== 'partnersincrime' &&
- species.id !== 'illumise') {
- evs.atk = 0;
- ivs.atk = 0;
- }
-
- // Enforce Tera Type after all set generation is done to prevent infinite generation
- if (this.forceTeraType) teraType = this.forceTeraType;
-
- // shuffle moves to add more randomness to camomons
- const shuffledMoves = Array.from(moves);
- this.prng.shuffle(shuffledMoves);
- return {
- name: species.baseSpecies,
- species: forme,
- gender: species.baseSpecies === 'Greninja' ? 'M' : (species.gender || (this.random(2) ? 'F' : 'M')),
- shiny: this.randomChance(1, 1024),
- level,
- moves: shuffledMoves,
- ability,
- evs,
- ivs,
- item,
- teraType,
- role,
- };
- }
-
- override randomSets: { [species: string]: RandomTeamsTypes.RandomSpeciesData } = require('./random-sets.json');
-
- randomMHSTeam() {
- this.enforceNoDirectCustomBanlistChanges();
-
- const seed = this.prng.getSeed();
- const ruleTable = this.dex.formats.getRuleTable(this.format);
- const pokemon: RandomTeamsTypes.RandomSet[] = [];
-
- // For Monotype
- const isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause');
- const isDoubles = this.format.gameType !== 'singles';
- const typePool = this.dex.types.names().filter(name => name !== "Stellar");
- const type = this.forceMonotype || this.sample(typePool);
-
- // PotD stuff
- // const usePotD = global.Config && Config.potd && ruleTable.has('potd');
- // const potd = usePotD ? this.dex.species.get(Config.potd) : null;
-
- const baseFormes: { [k: string]: number } = {};
-
- const typeCount: { [k: string]: number } = {};
- const typeComboCount: { [k: string]: number } = {};
- const typeWeaknesses: { [k: string]: number } = {};
- const typeDoubleWeaknesses: { [k: string]: number } = {};
- const teamDetails: RandomTeamsTypes.TeamDetails = {};
- // let numMaxLevelPokemon = 0;
-
- const pokemonList = Object.keys(this.randomSets);
- const [pokemonPool, baseSpeciesPool] = this.getPokemonPool(type, pokemon, isMonotype, pokemonList);
-
- let leadsRemaining = this.format.gameType === 'doubles' ? 2 : 1;
- while (baseSpeciesPool.length && pokemon.length < this.maxTeamSize) {
- const baseSpecies = this.sampleNoReplace(baseSpeciesPool);
- const species = this.dex.species.get(this.sample(pokemonPool[baseSpecies]));
- if (!species.exists) continue;
-
- // Limit to one of each species (Species Clause)
- if (baseFormes[species.baseSpecies]) continue;
-
- // Treat Ogerpon formes and Terapagos like the Tera Blast user role; reject if team has one already
- if (['ogerpon', 'ogerponhearthflame', 'terapagos'].includes(species.id) && teamDetails.teraBlast) continue;
-
- // Illusion shouldn't be on the last slot
- if (species.baseSpecies === 'Sorrowcean' && pokemon.length >= (this.maxTeamSize - 1)) continue;
-
- const types = species.types;
- const typeCombo = types.slice().sort().join();
- const weakToFreezeDry = (
- this.dex.getEffectiveness('Ice', species) > 0 ||
- (this.dex.getEffectiveness('Ice', species) > -2 && types.includes('Water'))
- );
- // Dynamically scale limits for different team sizes. The default and minimum value is 1.
- const limitFactor = Math.round(this.maxTeamSize / 6) || 1;
-
- // Limit three of any type combination in Monotype
- if (!this.forceMonotype && isMonotype && (typeComboCount[typeCombo] >= 3 * limitFactor)) continue;
-
- // The Pokemon of the Day
- // if (potd?.exists && (pokemon.length === 1 || this.maxTeamSize === 1)) species = potd;
-
- // testing code
- // if (pokemon.length === 0 || this.maxTeamSize === 1) species = this.dex.species.get('Terapagos');
-
- let set: RandomTeamsTypes.RandomSet;
-
- if (leadsRemaining) {
- if (
- isDoubles && DOUBLES_NO_LEAD_POKEMON.includes(species.baseSpecies) ||
- !isDoubles && NO_LEAD_POKEMON.includes(species.baseSpecies)
- ) {
- if (pokemon.length + leadsRemaining === this.maxTeamSize) continue;
- set = this.randomSet(species, teamDetails, false, isDoubles);
- pokemon.push(set);
- } else {
- set = this.randomSet(species, teamDetails, true, isDoubles);
- pokemon.unshift(set);
- leadsRemaining--;
- }
- } else {
- set = this.randomSet(species, teamDetails, false, isDoubles);
- pokemon.push(set);
- }
-
- // Don't bother tracking details for the last Pokemon
- if (pokemon.length === this.maxTeamSize) break;
-
- // Now that our Pokemon has passed all checks, we can increment our counters
- baseFormes[species.baseSpecies] = 1;
-
- // Increment type counters
- for (const typeName of types) {
- if (typeName in typeCount) {
- typeCount[typeName]++;
- } else {
- typeCount[typeName] = 1;
- }
- }
- if (typeCombo in typeComboCount) {
- typeComboCount[typeCombo]++;
- } else {
- typeComboCount[typeCombo] = 1;
- }
-
- // Increment weakness counter
- for (const typeName of this.dex.types.names()) {
- // it's weak to the type
- if (this.dex.getEffectiveness(typeName, species) > 0) {
- typeWeaknesses[typeName]++;
- }
- if (this.dex.getEffectiveness(typeName, species) > 1) {
- typeDoubleWeaknesses[typeName]++;
- }
- }
- // Count Dry Skin/Fluffy as Fire weaknesses
- if (['Dry Skin', 'Fluffy'].includes(set.ability) && this.dex.getEffectiveness('Fire', species) === 0) {
- typeWeaknesses['Fire']++;
- }
- if (weakToFreezeDry) typeWeaknesses['Freeze-Dry']++;
-
- // Increment level 100 counter
- // if (set.level === 100) numMaxLevelPokemon++;
-
- // Track what the team has
- if (set.ability === 'Drizzle' || set.moves.includes('raindance')) teamDetails.rain = 1;
- if (set.ability === 'Drought' || set.ability === 'Orichalcum Pulse' || set.moves.includes('sunnyday')) {
- teamDetails.sun = 1;
- }
- if (set.ability === 'Sand Stream') teamDetails.sand = 1;
- if (set.ability === 'Snow Warning' || set.moves.includes('snowscape') || set.moves.includes('chillyreception')) {
- teamDetails.snow = 1;
- }
- if (set.moves.includes('healbell')) teamDetails.statusCure = 1;
- if (set.moves.includes('spikes') || set.moves.includes('ceaselessedge')) {
- teamDetails.spikes = (teamDetails.spikes || 0) + 1;
- }
- if (set.moves.includes('toxicspikes') || set.ability === 'Toxic Debris') teamDetails.toxicSpikes = 1;
- if (set.moves.includes('stealthrock') || set.moves.includes('stoneaxe')) teamDetails.stealthRock = 1;
- if (set.moves.includes('stickyweb')) teamDetails.stickyWeb = 1;
- if (set.moves.includes('defog')) teamDetails.defog = 1;
- if (set.moves.includes('rapidspin') || set.moves.includes('mortalspin')) teamDetails.rapidSpin = 1;
- if (set.moves.includes('auroraveil') || (set.moves.includes('reflect') && set.moves.includes('lightscreen'))) {
- teamDetails.screens = 1;
- }
- if (set.role === 'Tera Blast user' || species.baseSpecies === "Ogerpon" || species.baseSpecies === "Terapagos") {
- teamDetails.teraBlast = 1;
- }
- }
- if (pokemon.length < this.maxTeamSize && pokemon.length < 12) { // large teams sometimes cannot be built
- throw new Error(`Could not build a random team for ${this.format} (seed=${seed})`);
- }
-
- return pokemon;
- }
-}
-
-export default RandomMHSTeams;
diff --git a/data/rulesets.ts b/data/rulesets.ts
index f051d043f3..08f6a9583d 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");
@@ -1575,6 +1559,28 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = {
}
},
},
+ sameletterclause: {
+ effectType: 'ValidatorRule',
+ name: 'Same Letter Clause',
+ desc: "Forces all Pokémon species on a team to start with the same letter",
+ onValidateTeam(team) {
+ let requiredLetter: string | null = null;
+ for (const set of team) {
+ const species = this.dex.species.get(set.species);
+ const match = /^[A-Za-z]/.exec(species.name);
+ if (!match) {
+ return [`${species.name} cannot be used, as its name does not begin with a valid English letter.`];
+ }
+ const firstLetter = match[0].toUpperCase();
+ if (!requiredLetter) {
+ requiredLetter = firstLetter;
+ } else if (firstLetter !== requiredLetter) {
+ return [
+ `All Pokémon must belong to species starting with the same letter (currently: ${requiredLetter}); ${species.name} starts with ${firstLetter}.`];
+ }
+ }
+ },
+ },
megarayquazaclause: {
effectType: 'Rule',
name: 'Mega Rayquaza Clause',
@@ -1622,34 +1628,11 @@ export const Rulesets: import('../sim/dex-formats').FormatDataTable = {
this.add('rule', 'Terastal Clause: You cannot Terastallize');
},
},
- arceusevlimit: {
+ fullarceusclause: {
effectType: 'ValidatorRule',
- name: 'Arceus EV Limit',
- desc: "Restricts Arceus to a maximum of 100 EVs in any one stat, and only multiples of 10",
- onValidateSet(set) {
- const species = this.dex.species.get(set.species);
- if (species.num === 493 && set.evs) {
- let stat: StatID;
- for (stat in set.evs) {
- const ev = set.evs[stat];
- if (ev > 100) {
- return [
- "Arceus can't have more than 100 EVs in any stat, because Arceus is only obtainable from level 100 events.",
- "Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which are capped at 100 EVs.",
- ];
- }
- if (!(
- ev % 10 === 0 ||
- (ev % 10 === 8 && ev % 4 === 0)
- )) {
- return [
- "Arceus can only have EVs that are multiples of 10, because Arceus is only obtainable from level 100 events.",
- "Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which boost in multiples of 10.",
- ];
- }
- }
- }
- },
+ name: 'Full Arceus Clause',
+ desc: "Allows Level 80 Arceus from Hall of Origin",
+ // Implemented in sim/team-validator.ts
},
inversemod: {
effectType: 'Rule',
@@ -2666,12 +2649,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 +2674,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/lib/utils.ts b/lib/utils.ts
index d96407d622..54f1a972a0 100644
--- a/lib/utils.ts
+++ b/lib/utils.ts
@@ -122,7 +122,7 @@ export function visualize(value: any, depth = 0): string {
return `${constructor} (${value.size}) { ${mapped.join(', ')} }`;
case 'Set':
if (depth > 2) return `Set`;
- return `${constructor} (${value.size}) { ${[...value].map(v => visualize(v), depth + 1).join(', ')} }`;
+ return `${constructor} (${value.size}) { ${[...value].map(v => visualize(v, depth + 1)).join(', ')} }`;
}
if (value.toString) {
diff --git a/server/chat-commands/core.ts b/server/chat-commands/core.ts
index 439cb4d898..2247792bd1 100644
--- a/server/chat-commands/core.ts
+++ b/server/chat-commands/core.ts
@@ -675,9 +675,9 @@ export const commands: Chat.ChatCommands = {
if (!target) target = user.name;
const values = await Ladders.visualizeAll(target);
- let buffer = ``;
- buffer += Utils.html`| User: ${target} |
`;
-
+ let buffer = ``;
+ buffer += Utils.html`
User: ${target}
`;
+ buffer += `
`;
const ratings = values.join(``);
if (!ratings) {
buffer += `| ${this.tr`This user has not played any ladder games yet.`} |
`;
@@ -685,8 +685,7 @@ export const commands: Chat.ChatCommands = {
buffer += `| ${this.tr`Format`} | Elo | ${this.tr`W`} | ${this.tr`L`} | ${this.tr`Total`} | `;
buffer += ratings;
}
- buffer += `
|---|
`;
-
+ buffer += `
`;
this.sendReply(`|raw|${buffer}`);
},
rankhelp: [
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`
);
},
diff --git a/server/chat-formatter.ts b/server/chat-formatter.ts
index 322688a220..1eb8be2e20 100644
--- a/server/chat-formatter.ts
+++ b/server/chat-formatter.ts
@@ -35,7 +35,7 @@ SOURCE FOR LINKREGEX (compile with https://regexfree.k55.io/ )
(
# characters allowed inside URL paths
(
- [^\s()&<>[\]] | & | "
+ [^\s()&<>[\]`] | & | "
|
# parentheses in URLs should be matched, so they're not confused
# for parentheses around URLs
@@ -60,7 +60,7 @@ SOURCE FOR LINKREGEX (compile with https://regexfree.k55.io/ )
(?! [^ ]*> )
*/
-export const linkRegex = /(?:(?:https?:\/\/[a-z0-9-]+(?:\.[a-z0-9-]+)*|www\.[a-z0-9-]+(?:\.[a-z0-9-]+)+|\b[a-z0-9-]+(?:\.[a-z0-9-]+)*\.(?:(?:com?|org|net|edu|info|us|jp)\b|[a-z]{2,3}(?=:[0-9]|\/)))(?::[0-9]+)?(?:\/(?:(?:[^\s()&<>[\]]|&|"|\((?:[^\s()<>&[\]]|&)*\)|\[(?:[^\s()<>&[\]]|&)*])*(?:[^\s()[\]{}".,!?;:&<>*`^~\\]|\((?:[^\s()<>&[\]]|&)*\)))?)?|[a-z0-9.]+@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,})(?![^ ]*>)/ig;
+export const linkRegex = /(?:(?:https?:\/\/[a-z0-9-]+(?:\.[a-z0-9-]+)*|www\.[a-z0-9-]+(?:\.[a-z0-9-]+)+|\b[a-z0-9-]+(?:\.[a-z0-9-]+)*\.(?:(?:com?|org|net|edu|info|us|jp)\b|[a-z]{2,3}(?=:[0-9]|\/)))(?::[0-9]+)?(?:\/(?:(?:[^\s()&<>[\]`]|&|"|\((?:[^\s()<>&[\]]|&)*\)|\[(?:[^\s()<>&[\]]|&)*])*(?:[^\s()[\]{}".,!?;:&<>*`^~\\]|\((?:[^\s()<>&[\]]|&)*\)))?)?|[a-z0-9.]+@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,})(?![^ ]*>)/ig;
/**
* A span is a part of the text that's formatted. In the text:
@@ -422,7 +422,12 @@ class TextFormatter {
let i = start + 2;
// Find or .
// We need to check the location of `>` to disambiguate from .
- while (this.at(i) !== '<' || this.at(i + 1) !== '/' || this.at(i + 3) !== '>') i++;
+ while (this.at(i) !== '<' || this.at(i + 1) !== '/' || this.at(i + 3) !== '>') {
+ if (i >= this.str.length) {
+ throw new Error(`Unclosed URL span when parsing: ${this.str}`);
+ }
+ i++;
+ }
i += 4;
this.pushSlice(i);
}
diff --git a/server/chat-plugins/auction.ts b/server/chat-plugins/auction.ts
index 34a632eedb..77ac2d405d 100644
--- a/server/chat-plugins/auction.ts
+++ b/server/chat-plugins/auction.ts
@@ -259,8 +259,11 @@ export class Auction extends Rooms.SimpleRoomGame {
sendBidInfo() {
let buf = ``;
buf += Utils.html`Player: ${this.nominatedPlayer.name} `;
- if (this.type === 'auction') buf += `Top bid: ${this.highestBid} `;
- if (this.type === 'auction') buf += Utils.html`Top bidder: ${this.highestBidder.name}
`;
+ if (this.type === 'auction') {
+ buf += `Top bid: ${this.highestBid} `;
+ buf += Utils.html`Top bidder: ${this.highestBidder.name} `;
+ buf += `Managers: ${this.highestBidder.getManagers().map(m => `${Utils.escapeHTML(m)}`).join(' ')}
`;
+ }
buf += Utils.html`Tiers Played: ${this.nominatedPlayer.tiersPlayed.length ? `${this.nominatedPlayer.tiersPlayed.join(', ')}` : 'N/A'}
`;
buf += Utils.html`Tiers Not Played: ${this.nominatedPlayer.tiersNotPlayed.length ? `${this.nominatedPlayer.tiersNotPlayed.join(', ')}` : 'N/A'}`;
buf += `
`;
diff --git a/server/chat-plugins/laddertours.ts b/server/chat-plugins/laddertours.ts
index 518ae8041e..fccbada35f 100644
--- a/server/chat-plugins/laddertours.ts
+++ b/server/chat-plugins/laddertours.ts
@@ -87,13 +87,17 @@ export class LadderTracker {
this.deadline = date;
if (this.final) clearTimeout(this.final);
+ const timeDiff = (+this.deadline - Date.now()) - 500;
+ if (timeDiff >= Number.MAX_SAFE_INTEGER) {
+ throw new Chat.ErrorMessage("Deadline is too far away. Please wait and set it later.");
+ }
// We set the timer to fire slightly before the deadline and then
// repeatedly do process.nextTick checks for accuracy
this.final = setTimeout(() => {
this.stop();
// eslint-disable-next-line @typescript-eslint/no-floating-promises
this.captureFinalLeaderboard();
- }, (+this.deadline - Date.now()) - 500);
+ }, timeDiff);
if (save) LadderTracker.save();
}
diff --git a/server/chat-plugins/othermetas.ts b/server/chat-plugins/othermetas.ts
index fd356b3cd5..284fd2bde1 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;
}
@@ -840,20 +849,30 @@ export const commands: Chat.ChatCommands = {
reevo: 'showevo',
showevo(target, room, user, connection, cmd) {
- if (!this.runBroadcast()) return;
- const targetid = toID(target);
+ const args = target.split(',');
+ if (!toID(args[0])) return this.parse('/help reevohelp');
+ this.runBroadcast();
+ let dex = Dex;
+ if (args[1] && toID(args[1]) in Dex.dexes) {
+ dex = Dex.dexes[toID(args[1])];
+ } else if (room?.battle) {
+ const format = Dex.formats.get(room.battle.format);
+ dex = Dex.mod(format.mod);
+ }
+
+ const targetid = toID(args[0]);
const isReEvo = cmd === 'reevo';
if (!targetid) return this.parse(`/help ${isReEvo ? 're' : 'show'}evo`);
- const evo = Dex.species.get(target);
+ const evo = dex.species.get(targetid);
if (!evo.exists) {
- throw new Chat.ErrorMessage(`Error: Pok\u00e9mon ${target} not found.`);
+ throw new Chat.ErrorMessage(`Error: Pok\u00e9mon ${targetid} not found.`);
}
if (!evo.prevo) {
- const evoBaseSpecies = Dex.species.get(
+ const evoBaseSpecies = dex.species.get(
(Array.isArray(evo.battleOnly) ? evo.battleOnly[0] : evo.battleOnly) || evo.changesFrom || evo.name
);
if (!evoBaseSpecies.prevo) throw new Chat.ErrorMessage(`Error: ${evoBaseSpecies.name} is not an evolution.`);
- const prevoSpecies = Dex.species.get(evoBaseSpecies.prevo);
+ const prevoSpecies = dex.species.get(evoBaseSpecies.prevo);
const deltas = Utils.deepClone(evo);
if (!isReEvo) {
deltas.tier = 'CE';
@@ -892,14 +911,14 @@ export const commands: Chat.ChatCommands = {
const details = {
Gen: evo.gen,
Weight: `${deltas.weighthg < 0 ? "" : "+"}${deltas.weighthg / 10} kg`,
- Stage: (Dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
+ Stage: (dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
};
this.sendReply(`|raw|${Chat.getDataPokemonHTML(deltas)}`);
if (!isReEvo) {
this.sendReply(`|raw|Gen: ${details["Gen"]} |  Weight: ${details["Weight"]} |  Stage: ${details["Stage"]}`);
}
} else {
- const prevoSpecies = Dex.species.get(evo.prevo);
+ const prevoSpecies = dex.species.get(evo.prevo);
const deltas = Utils.deepClone(evo);
if (!isReEvo) {
deltas.tier = 'CE';
@@ -932,7 +951,7 @@ export const commands: Chat.ChatCommands = {
const details = {
Gen: evo.gen,
Weight: `${deltas.weighthg < 0 ? "" : "+"}${deltas.weighthg / 10} kg`,
- Stage: (Dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
+ Stage: (dex.species.get(prevoSpecies.prevo).exists ? 3 : 2),
};
this.sendReply(`|raw|${Chat.getDataPokemonHTML(deltas)}`);
if (!isReEvo) {
diff --git a/server/chat-plugins/randombattles/index.ts b/server/chat-plugins/randombattles/index.ts
index e9a767c76c..17a5bb7a11 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,26 @@ 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 +360,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[] = [];
@@ -601,12 +609,15 @@ export const commands: Chat.ChatCommands = {
randombattleshelp: [
`/randombattles OR /randbats [pokemon], [gen] - Displays a Pok\u00e9mon's Random Battle Moves. Defaults to Gen 9. If used in a battle, defaults to the gen of that battle.`,
`/randomdoublesbattle OR /randdubs [pokemon], [gen] - Same as above, but instead displays Random Doubles Battle moves.`,
+ '/randffats [pokemon] - (Gen 9 only) Shows the potential moves for a Pok\u00e9mon in Free-For-All Random Battle.',
],
+ '1v1factory': 'battlefactory',
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 +630,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`);
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/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` });
+ }
+ }
+};
diff --git a/server/friends.ts b/server/friends.ts
index 5a76237267..30bc8a88fd 100644
--- a/server/friends.ts
+++ b/server/friends.ts
@@ -167,7 +167,7 @@ export class FriendsDatabase {
}
private async query(input: DatabaseRequest) {
const process = PM.acquire();
- if (!process || !Config.usesqlite) {
+ if (!process || !Config.usesqlite || !Config.usesqlitefriends) {
return null;
}
const result = await process.query(input);
@@ -431,7 +431,7 @@ export const PM = new ProcessManager.QueryProcessManager {
diff --git a/server/rooms.ts b/server/rooms.ts
index 8433eed21a..b98bb0331a 100644
--- a/server/rooms.ts
+++ b/server/rooms.ts
@@ -1078,7 +1078,7 @@ export abstract class BasicRoom {
runAutoModchat() {
if (!this.settings.autoModchat || this.settings.autoModchat.active) return;
// they are staff and online
- const staff = Object.values(this.users).filter(u => this.auth.atLeast(u, '%'));
+ const staff = Object.values(this.users).filter(u => this.auth.atLeast(u, '%') && u.statusType === 'online');
if (!staff.length) {
const { time } = this.settings.autoModchat;
if (!time || time < 5) {
diff --git a/sim/battle-actions.ts b/sim/battle-actions.ts
index 87d91f0e1d..3ab448fc78 100644
--- a/sim/battle-actions.ts
+++ b/sim/battle-actions.ts
@@ -100,7 +100,6 @@ export class BattleActions {
// will definitely switch out at this point
- oldActive.illusion = null;
this.battle.singleEvent('End', oldActive.getAbility(), oldActive.abilityState, oldActive);
this.battle.singleEvent('End', oldActive.getItem(), oldActive.itemState, oldActive);
@@ -452,10 +451,13 @@ export class BattleActions {
}
}
- if (!this.battle.singleEvent('TryMove', move, null, pokemon, target, move) ||
- !this.battle.runEvent('TryMove', pokemon, target, move)) {
+ let tryMoveResult = this.battle.singleEvent('TryMove', move, null, pokemon, target, move);
+ if (tryMoveResult) {
+ tryMoveResult = this.battle.runEvent('TryMove', pokemon, target, move);
+ }
+ if (!tryMoveResult) {
move.mindBlownRecoil = false;
- return false;
+ return tryMoveResult;
}
this.battle.singleEvent('UseMoveMessage', move, null, pokemon, target, move);
@@ -1837,21 +1839,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/battle.ts b/sim/battle.ts
index 6fdbc4b1a6..f80e2ce87f 100644
--- a/sim/battle.ts
+++ b/sim/battle.ts
@@ -1301,6 +1301,39 @@ export class Battle {
return !!move.flags['contact'];
}
+ skillSwap(source: Pokemon, target: Pokemon) {
+ if (source.fainted || target.fainted) return false;
+ if (source.volatiles['dynamax'] || target.volatiles['dynamax']) return false;
+ const sourceAbility = source.getAbility();
+ const targetAbility = target.getAbility();
+ if (sourceAbility.flags['failskillswap'] || targetAbility.flags['failskillswap']) return false;
+ if (this.gen <= 5 && sourceAbility.id === targetAbility.id) return false;
+
+ const sourceEffect = this.dex.conditions.get('skillswap');
+ const targetCanBeSet = this.runEvent('SetAbility', target, source, sourceEffect, sourceAbility);
+ if (!targetCanBeSet) return targetCanBeSet;
+ const sourceCanBeSet = this.runEvent('SetAbility', source, source, sourceEffect, targetAbility);
+ if (!sourceCanBeSet) return sourceCanBeSet;
+
+ if (this.gen <= 4 || source.isAlly(target)) {
+ this.add('-activate', source, 'Skill Swap');
+ } else {
+ this.add('-activate', source, 'Skill Swap', target, `[ability] ${targetAbility.name}`, `[ability2] ${sourceAbility.name}`);
+ }
+ this.singleEvent('End', sourceAbility, source.abilityState, source);
+ this.singleEvent('End', targetAbility, target.abilityState, target);
+ source.ability = targetAbility.id;
+ target.ability = sourceAbility.id;
+ source.abilityState = this.initEffectState({ id: toID(source.ability), target: source });
+ target.abilityState = this.initEffectState({ id: toID(target.ability), target });
+ source.volatileStaleness = undefined;
+ if (!source.isAlly(target)) target.volatileStaleness = 'external';
+ if (this.gen > 3) {
+ this.singleEvent('Start', sourceAbility, target.abilityState, target);
+ this.singleEvent('Start', targetAbility, source.abilityState, source);
+ }
+ }
+
getPokemon(fullname: string | Pokemon) {
if (typeof fullname !== 'string') fullname = fullname.fullname;
for (const side of this.sides) {
@@ -1793,7 +1826,7 @@ export class Battle {
if (this.turn <= 100) return;
// the turn limit is not a part of Endless Battle Clause
- if (this.turn >= 1000) {
+ if (this.turn > 1000) {
this.add('message', `It is turn 1000. You have hit the turn limit!`);
this.tie();
return true;
@@ -2642,40 +2675,8 @@ export class Battle {
this.add('start');
- // Change Zacian/Zamazenta into their Crowned formes
for (const pokemon of this.getAllPokemon()) {
- let rawSpecies: Species | null = null;
- if (pokemon.species.id === 'zacian' && pokemon.item === 'rustedsword') {
- rawSpecies = this.dex.species.get('Zacian-Crowned');
- } else if (pokemon.species.id === 'zamazenta' && pokemon.item === 'rustedshield') {
- rawSpecies = this.dex.species.get('Zamazenta-Crowned');
- }
- if (!rawSpecies) continue;
- const species = pokemon.setSpecies(rawSpecies);
- if (!species) continue;
- pokemon.baseSpecies = rawSpecies;
- pokemon.details = pokemon.getUpdatedDetails();
- pokemon.setAbility(species.abilities['0'], null, null, true);
- pokemon.baseAbility = pokemon.ability;
-
- const behemothMove: { [k: string]: string } = {
- 'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash',
- };
- const ironHeadIndex = pokemon.baseMoves.indexOf('ironhead');
- if (ironHeadIndex >= 0) {
- const move = this.dex.moves.get(behemothMove[rawSpecies.name]);
- pokemon.baseMoveSlots[ironHeadIndex] = {
- move: move.name,
- id: move.id,
- pp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- maxpp: move.noPPBoosts ? move.pp : move.pp * 8 / 5,
- target: move.target,
- disabled: false,
- disabledSource: '',
- used: false,
- };
- pokemon.moveSlots = pokemon.baseMoveSlots.slice();
- }
+ this.singleEvent('BattleStart', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
}
this.format.onBattleStart?.call(this);
@@ -2697,9 +2698,6 @@ export class Battle {
}
}
}
- for (const pokemon of this.getAllPokemon()) {
- this.singleEvent('Start', this.dex.conditions.getByID(pokemon.species.id), pokemon.speciesState, pokemon);
- }
this.midTurn = true;
break;
}
@@ -3147,9 +3145,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);
}
}
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 c613e2e57c..9a2a39edfc 100644
--- a/sim/dex-conditions.ts
+++ b/sim/dex-conditions.ts
@@ -640,6 +640,7 @@ export class Condition extends BasicEffect implements
declare readonly onStart?: (
this: Battle, target: Pokemon, source: Pokemon, sourceEffect: Effect
) => boolean | null | void;
+ declare readonly onBattleStart?: (this: Battle, pokemon: Pokemon) => void;
constructor(data: AnyObject) {
super(data);
@@ -666,7 +667,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..7785fcb115 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;
@@ -742,8 +742,8 @@ export class DexSpecies {
// different learnsets. To prevent a leak, we make them show up as their
// base forme, but hardcode their learnsets into Rockruff-Dusk and
// Greninja-Ash
- if (['Gastrodon', 'Pumpkaboo', 'Sinistea', 'Tatsugiri'].includes(species.baseSpecies) && species.forme) {
- return this.get(species.baseSpecies);
+ if (!this.getLearnsetData(species.id).learnset && species.forme) {
+ return this.get(species.changesFrom || species.baseSpecies);
} else if (species.prevo) {
// there used to be a check for Hidden Ability here, but apparently it's unnecessary
// Shed Skin Pupitar can definitely evolve into Unnerve Tyranitar
diff --git a/sim/global-types.ts b/sim/global-types.ts
index dab8ed3233..e663413e98 100644
--- a/sim/global-types.ts
+++ b/sim/global-types.ts
@@ -496,6 +496,7 @@ declare namespace RandomTeamsTypes {
export interface RandomSet {
name: string;
species: string;
+ speciesId?: string;
gender: string | boolean;
moves: string[];
ability: string;
diff --git a/sim/pokemon.ts b/sim/pokemon.ts
index ba51b073a0..6ff69ec153 100644
--- a/sim/pokemon.ts
+++ b/sim/pokemon.ts
@@ -876,16 +876,15 @@ export class Pokemon {
}
deductPP(move: string | Move, amount?: number | null, target?: Pokemon | null | false) {
- const gen = this.battle.gen;
move = this.battle.dex.moves.get(move);
const ppData = this.getMoveData(move);
if (!ppData) return 0;
ppData.used = true;
- if (!ppData.pp && gen > 1) return 0;
+ if (!ppData.pp) return 0;
if (!amount) amount = 1;
ppData.pp -= amount;
- if (ppData.pp < 0 && gen > 1) {
+ if (ppData.pp < 0) {
amount += ppData.pp;
ppData.pp = 0;
}
@@ -1900,10 +1899,18 @@ export class Pokemon {
this.ability = ability.id;
this.abilityState = this.battle.initEffectState({ id: ability.id, target: this });
if (sourceEffect && !isFromFormeChange && !isTransform) {
- if (source) {
- this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`, `[of] ${source}`);
- } else {
- this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`);
+ switch (sourceEffect.id) {
+ case 'mummy':
+ case 'lingeringaroma':
+ this.battle.add('-activate', source, sourceEffect.fullname, this, '[ability] ' + oldAbility.name);
+ break;
+ default:
+ if (source) {
+ this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`, `[of] ${source}`);
+ } else {
+ this.battle.add('-ability', this, ability.name, oldAbility.name, `[from] ${sourceEffect.fullname}`);
+ }
+ break;
}
}
if (ability.id && this.battle.gen > 3 &&
diff --git a/sim/team-validator.ts b/sim/team-validator.ts
index 8d234a9ea7..c1ee6cf1a8 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') {
@@ -656,6 +650,7 @@ export class TeamValidator {
}
}
if (species.id === 'melmetal' && set.gigantamax && this.dex.species.getLearnsetData(species.id).eventData) {
+ // Gigantamax Melmetal cannot be obtained through the Max Soup
setSources.sourcesBefore = 0;
setSources.sources = ['8S0 melmetal'];
}
@@ -961,7 +956,12 @@ export class TeamValidator {
}
}
} else if (ruleTable.has('obtainablemisc') && (eventOnlyData = this.getEventOnlyData(outOfBattleSpecies))) {
- const { species: eventSpecies, eventData } = eventOnlyData;
+ const eventSpecies = eventOnlyData.species;
+ let eventData = eventOnlyData.eventData;
+ if (ruleTable.has('fullarceusclause') && eventSpecies.baseSpecies === 'Arceus') {
+ // Hall of Origin Arceus
+ eventData = [...eventData, { generation: 4, level: 80, moves: ['refresh', 'futuresight', 'recover', 'hyperbeam'] }];
+ }
let legal = false;
for (const event of eventData) {
if (this.validateEvent(set, setSources, event, eventSpecies)) continue;
@@ -2099,6 +2099,25 @@ export class TeamValidator {
if (fastReturn) return true;
problems.push(`${name} must be at least level ${eventData.level}${etc}.`);
}
+ if ((dex.gen === 3 || dex.gen === 4) && eventData.level === 100 && set.evs) {
+ let statName: StatID;
+ for (statName in set.evs) {
+ const ev = set.evs[statName];
+ if (ev > 100) {
+ problems.push(
+ `${name} can't have more than 100 EVs in any stat, because it is only obtainable from level 100 events. Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which are capped at 100 EVs.`,
+ );
+ }
+ if (!(
+ ev % 10 === 0 ||
+ (ev % 10 === 8 && ev % 4 === 0)
+ )) {
+ problems.push(
+ `${name} can only have EVs that are multiples of 10, because it is only obtainable from level 100 events. Level 100 Pokemon can only gain EVs from vitamins (Carbos etc), which boost in multiples of 10.`,
+ );
+ }
+ }
+ }
if ((eventData.shiny === true && !set.shiny) || (!eventData.shiny && set.shiny)) {
if (fastReturn) return true;
const shinyReq = eventData.shiny ? ` be shiny` : ` not be shiny`;
@@ -2332,10 +2351,10 @@ export class TeamValidator {
if (dex.gen < 8 || this.format.mod === 'gen8dlc1') return null;
if (!pokemonGoData) {
// Handles forms and evolutions not obtainable from Pokemon GO
- const otherSpecies = this.dex.species.learnsetParent(species);
+ const otherSpecies = this.dex.species.get(species.changesFrom || species.prevo);
// If a Pokemon is somehow not obtainable from Pokemon GO and it must be leveled up to be evolved,
// validation for the game should stop because it's more optimal to get the Pokemon outside of the game
- if (otherSpecies && !species.evoLevel) {
+ if (otherSpecies.name && !species.evoLevel) {
const otherProblems = this.validatePokemonGo(otherSpecies, set, setSources, name);
if (otherProblems) {
problems = otherProblems;
@@ -2842,7 +2861,7 @@ export class TeamValidator {
if (!dex.species.getLearnsetData(nextSpecies.id).learnset) {
nextSpecies = dex.species.get(nextSpecies.changesFrom || nextSpecies.baseSpecies);
}
- while (nextSpecies) {
+ while (nextSpecies.name) {
for (let gen = nextSpecies.gen; gen <= dex.gen; gen++) {
/**
* Case 1: The species can learn the move - allow moves of the species from all gens
@@ -2861,7 +2880,7 @@ export class TeamValidator {
}
}
if (canLearnSpecies.includes(nextSpecies.id)) speciesCount++;
- nextSpecies = dex.species.learnsetParent(nextSpecies);
+ nextSpecies = dex.species.get(nextSpecies.prevo);
}
}
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/main.js b/test/main.js
index 946a9dcf7c..5c2495e002 100644
--- a/test/main.js
+++ b/test/main.js
@@ -29,12 +29,16 @@ config.crashguard = false;
config.watchconfig = false;
// Don't try to write to file system
config.nofswriting = true;
-// allow renaming without a token
+// Don't try to listen to the network
+config.lazysockets = true;
+// Allow renaming without a token
config.noguestsecurity = true;
// Test a normal ladder
config.fakeladder = false;
// Don't log monitor messages to the console (necessary so that chat monitor tests don't clog up stdout)
config.loglevel = 3;
+// If sqlite is enabled at all, run tests in server/modlog
+config.usesqlitemodlog = true;
require('./../dist/lib/process-manager').ProcessManager.disabled = true;
diff --git a/test/random-battles/all-gens.js b/test/random-battles/all-gens.js
index 3dc8f6bd1c..42ab456559 100644
--- a/test/random-battles/all-gens.js
+++ b/test/random-battles/all-gens.js
@@ -462,3 +462,74 @@ 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 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 ${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 ${speciesName}`);
+
+ for (const itemName of [].concat(set.item)) {
+ if (!itemName) continue;
+ const item = Dex.items.get(itemName);
+ 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 ${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), `${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 ${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 ${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, `${speciesName} has repeat moves`);
+
+ 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 ${speciesName}`);
+ totalEVs += set.evs[ev];
+ 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 ${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) {
+ totalWeight += set.weight;
+ }
+ assert.equal(totalWeight, 100, `Total set weight for ${speciesName} is ${totalWeight < 100 ? 'less' : 'greater'} than 100%`);
+ }
+ });
+});
diff --git a/test/server/chat-plugins/friends.js b/test/server/chat-plugins/friends.js
index 7eb04b449e..25aec02464 100644
--- a/test/server/chat-plugins/friends.js
+++ b/test/server/chat-plugins/friends.js
@@ -8,7 +8,7 @@ const assert = require('../../assert');
describe.skip("Friends lists", () => {
const { FriendsDatabase } = require('../../../dist/server/friends');
- const test = (Config.usesqlite ? it : it.skip);
+ const test = (Config.usesqlite && Config.usesqlitefriends ? it : it.skip);
test("Should properly setup database", () => {
assert.doesNotThrow(() => FriendsDatabase.setupDatabase(':memory:'));
});
diff --git a/test/server/chat.js b/test/server/chat.js
index 02a1e58dfa..b202664a7c 100644
--- a/test/server/chat.js
+++ b/test/server/chat.js
@@ -3,6 +3,17 @@
const assert = require('assert').strict;
describe('Chat', () => {
+ it('should not infinite loop formatText', () => {
+ assert.equal(
+ Chat.formatText(`<\\\\||^^**~~\`\`https://a/Olaaaseusbobalhos\`\`~~**^^||\\\\`),
+ `<
https://a/Olaaaseusbobalhos`
+ );
+ assert.equal(
+ Chat.formatText(`[[https://google.com/]]text`),
+ `https://google.com/text`
+ );
+ });
+
it('should run formatText correctly', () => {
assert.equal(
Chat.formatText(`hi **__bold italics__** ^^superscript^^ \\\\subscript\\\\ normal ~~strikethrough~~ bye`),
diff --git a/test/server/modlog.js b/test/server/modlog.js
index eb5b751a40..a4ab3835ce 100644
--- a/test/server/modlog.js
+++ b/test/server/modlog.js
@@ -5,12 +5,8 @@
'use strict';
-const ModlogConstructor = Config.usesqlite ? (require('../../dist/server/modlog')).Modlog : null;
-const modlog = ModlogConstructor ? new ModlogConstructor(':memory:', {}) : null;
const assert = require('assert').strict;
-Config.usesqlitemodlog = true;
-
const DATASET_A = [
{ action: 'ROOMBAN', userid: 'sometroll', ip: '127.0.0.1', loggedBy: 'annika', note: 'FIRST ENTRY', time: 1 },
{ action: 'LOCK', userid: 'sometroll', ip: '127.0.0.1', loggedBy: 'annika', note: 'ENTRY 2', time: 2 },
@@ -38,23 +34,26 @@ async function lastLine(database, roomid) {
return database.get(prepared, [roomid]);
}
-(Config.usesqlite ? describe : describe.skip)('Modlog', () => {
+(Config.usesqlite && Config.usesqlitemodlog ? describe : describe.skip)('Modlog', () => {
before(async () => {
- if (modlog.readyPromise) await modlog.readyPromise;
+ if (Rooms.Modlog.readyPromise) {
+ await Rooms.Modlog.readyPromise;
+ }
+ if (!Rooms.Modlog.databaseReady) throw new Error(`Failed to ready up modlog database`);
});
describe('Modlog#prepareSQLSearch', () => {
it('should respect the maxLines parameter', async () => {
- const query = modlog.prepareSQLSearch(['lobby'], 1337, false, { note: [], user: [], ip: [], action: [], actionTaker: [] });
+ const query = Rooms.Modlog.prepareSQLSearch(['lobby'], 1337, false, { note: [], user: [], ip: [], action: [], actionTaker: [] });
assert(query.queryText.endsWith('LIMIT ?'));
assert(query.args.includes(1337));
- const noMaxLines = modlog.prepareSQLSearch(['lobby'], 0, false, { note: [], user: [], ip: [], action: [], actionTaker: [] });
+ const noMaxLines = Rooms.Modlog.prepareSQLSearch(['lobby'], 0, false, { note: [], user: [], ip: [], action: [], actionTaker: [] });
assert(!noMaxLines.queryText.includes('LIMIT'));
});
it('should attempt to respect onlyPunishments', async () => {
- const query = modlog.prepareSQLSearch(['lobby'], 0, true, { note: [], user: [], ip: [], action: [], actionTaker: [] });
+ const query = Rooms.Modlog.prepareSQLSearch(['lobby'], 0, true, { note: [], user: [], ip: [], action: [], actionTaker: [] });
assert(query.queryText.includes('action IN ('));
assert(query.args.includes('WEEKLOCK'));
});
@@ -62,20 +61,20 @@ async function lastLine(database, roomid) {
describe('Modlog#getSharedID', () => {
it('should detect shared modlogs', () => {
- assert(modlog.getSharedID('battle-gen8randombattle-42'));
- assert(modlog.getSharedID('groupchat-annika-shitposting'));
- assert(modlog.getSharedID('help-mePleaseIAmTrappedInAUnitTestFactory'));
+ assert(Rooms.Modlog.getSharedID('battle-gen8randombattle-42'));
+ assert(Rooms.Modlog.getSharedID('groupchat-annika-shitposting'));
+ assert(Rooms.Modlog.getSharedID('help-mePleaseIAmTrappedInAUnitTestFactory'));
- assert(!modlog.getSharedID('1v1'));
- assert(!modlog.getSharedID('development'));
+ assert(!Rooms.Modlog.getSharedID('1v1'));
+ assert(!Rooms.Modlog.getSharedID('development'));
});
});
describe('Modlog#write', () => {
it('should write messages serially to the modlog', async () => {
- await modlog.write('development', { note: 'This message is logged first', action: 'UNITTEST' });
- await modlog.write('development', { note: 'This message is logged second', action: 'UNITTEST' });
- const lines = await modlog.database.all(await modlog.database.prepare(
+ await Rooms.Modlog.write('development', { note: 'This message is logged first', action: 'UNITTEST' });
+ await Rooms.Modlog.write('development', { note: 'This message is logged second', action: 'UNITTEST' });
+ const lines = await Rooms.Modlog.database.all(await Rooms.Modlog.database.prepare(
// Order by modlog_id since the writes most likely happen at the same second
`SELECT * FROM modlog WHERE roomid = 'development' ORDER BY modlog_id DESC LIMIT 2`
));
@@ -85,8 +84,8 @@ async function lastLine(database, roomid) {
});
it('should use overrideID if specified', async () => {
- await modlog.write('battle-gen8randombattle-1337', { note: "I'm testing overrideID", action: 'UNITTEST' }, 'heyadora');
- const line = await lastLine(modlog.database, 'battle-gen8randombattle-1337');
+ await Rooms.Modlog.write('battle-gen8randombattle-1337', { note: "I'm testing overrideID", action: 'UNITTEST' }, 'heyadora');
+ const line = await lastLine(Rooms.Modlog.database, 'battle-gen8randombattle-1337');
assert.equal(line.note, "I'm testing overrideID");
assert.equal(line.visual_roomid, 'heyadora');
});
@@ -96,17 +95,17 @@ async function lastLine(database, roomid) {
it('should rename modlogs', async () => {
const entry = { note: 'This is in a modlog that will be renamed!', action: 'UNITTEST' };
- await modlog.write('oldroom', entry);
- await modlog.rename('oldroom', 'newroom');
- const line = await lastLine(modlog.database, 'newroom');
+ await Rooms.Modlog.write('oldroom', entry);
+ await Rooms.Modlog.rename('oldroom', 'newroom');
+ const line = await lastLine(Rooms.Modlog.database, 'newroom');
assert.equal(entry.action, line.action);
assert.equal(entry.note, line.note);
const newEntry = { note: 'This modlog has been renamed!', action: 'UNITTEST' };
- await modlog.write('newroom', newEntry);
+ await Rooms.Modlog.write('newroom', newEntry);
- const newLine = await lastLine(modlog.database, 'newroom');
+ const newLine = await lastLine(Rooms.Modlog.database, 'newroom');
assert.equal(newEntry.action, newLine.action);
assert.equal(newEntry.note, newLine.note);
@@ -116,23 +115,23 @@ async function lastLine(database, roomid) {
describe('Modlog#search', () => {
before(async () => {
for (const entry of DATASET_A) {
- await modlog.write('readingtest', entry);
+ await Rooms.Modlog.write('readingtest', entry);
}
for (const entry of DATASET_B) {
- await modlog.write('readingtest2', entry);
+ await Rooms.Modlog.write('readingtest2', entry);
}
});
it('should be capable of reading the entire modlog file', async () => {
- const results = await modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 10000);
+ const results = await Rooms.Modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 10000);
assert.equal(results.results.length, DATASET_B.length);
});
it('user searches should be case-insensitive', async () => {
- const notExactUpper = await modlog.search('readingtest', { user: [{ search: 'sOmETRoll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] });
- const notExactLower = await modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] });
- const exactUpper = await modlog.search('readingtest', { user: [{ search: 'sOMEtroLL', isExact: true }], note: [], ip: [], action: [], actionTaker: [] });
- const exactLower = await modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: true }], note: [], ip: [], action: [], actionTaker: [] });
+ const notExactUpper = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sOmETRoll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] });
+ const notExactLower = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: false }], note: [], ip: [], action: [], actionTaker: [] });
+ const exactUpper = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sOMEtroLL', isExact: true }], note: [], ip: [], action: [], actionTaker: [] });
+ const exactLower = await Rooms.Modlog.search('readingtest', { user: [{ search: 'sometroll', isExact: true }], note: [], ip: [], action: [], actionTaker: [] });
assert.deepEqual(notExactUpper.results, notExactLower.results);
assert.deepEqual(exactUpper.results, exactLower.results);
@@ -141,17 +140,17 @@ async function lastLine(database, roomid) {
// isExact is currently set up to search for the entire note equalling the search
// this could be redesigned, but is what we currently test for.
it('note searches should respect isExact', async () => {
- const notExact = await modlog.search('readingtest', { note: [{ search: 'has man', isExact: false }], user: [], ip: [], action: [], actionTaker: [] });
- const exact = await modlog.search('readingtest', { note: [{ search: 'has man', isExact: true }], user: [], ip: [], action: [], actionTaker: [] });
+ const notExact = await Rooms.Modlog.search('readingtest', { note: [{ search: 'has man', isExact: false }], user: [], ip: [], action: [], actionTaker: [] });
+ const exact = await Rooms.Modlog.search('readingtest', { note: [{ search: 'has man', isExact: true }], user: [], ip: [], action: [], actionTaker: [] });
assert.equal(exact.results.length, 0);
assert(notExact.results.length);
});
it('should be LIFO (last-in, first-out)', async () => {
- await modlog.write('lifotest', { note: 'firstwrite', action: 'UNITTEST', timestamp: 1 });
- await modlog.write('lifotest', { note: 'secondwrite', action: 'UNITTEST', timestamp: 2 });
- const search = await modlog.search('lifotest');
+ await Rooms.Modlog.write('lifotest', { note: 'firstwrite', action: 'UNITTEST', timestamp: 1 });
+ await Rooms.Modlog.write('lifotest', { note: 'secondwrite', action: 'UNITTEST', timestamp: 2 });
+ const search = await Rooms.Modlog.search('lifotest');
// secondwrite was last in, so it should be first out (results[0])
assert.notEqual(search.results[0].note, 'firstwrite');
@@ -163,8 +162,8 @@ async function lastLine(database, roomid) {
});
it('should support limiting the number of responses', async () => {
- const unlimited = await modlog.search('readingtest');
- const limited = await modlog.search('readingtest', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 5);
+ const unlimited = await Rooms.Modlog.search('readingtest');
+ const limited = await Rooms.Modlog.search('readingtest', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 5);
assert.equal(limited.results.length, 5);
assert(unlimited.results.length > limited.results.length);
@@ -180,8 +179,8 @@ async function lastLine(database, roomid) {
});
it('should support filtering out non-punishment-related logs', async () => {
- const all = (await modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, false)).results;
- const onlyPunishments = (await modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, true)).results;
+ const all = (await Rooms.Modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, false)).results;
+ const onlyPunishments = (await Rooms.Modlog.search('readingtest2', { note: [], user: [], ip: [], action: [], actionTaker: [] }, 20, true)).results;
assert(all.length > onlyPunishments.length);
assert.equal(
diff --git a/test/sim/abilities/illusion.js b/test/sim/abilities/illusion.js
index a49e097d54..49917c37d4 100644
--- a/test/sim/abilities/illusion.js
+++ b/test/sim/abilities/illusion.js
@@ -10,6 +10,19 @@ describe('Illusion', () => {
battle.destroy();
});
+ it('should not wear off when switching out', () => {
+ battle = common.createBattle([[
+ { species: "Zoroark", ability: 'illusion', moves: ['sleeptalk'] },
+ { species: "Diglett", moves: ['sleeptalk'] },
+ ], [
+ { species: "Wynaut", moves: ['sleeptalk'] },
+ ]]);
+
+ battle.makeChoices('move sleeptalk', 'auto');
+ battle.makeChoices('switch 2', 'auto');
+ assert(battle.log.every(line => !line.includes('|-end|p1a: Zoroark|Illusion')));
+ });
+
it(`should not instantly wear off before Dynamaxing`, () => {
battle = common.gen(8).createBattle([[
{ species: "Zoroark", ability: 'illusion', moves: ['sleeptalk'] },
diff --git a/test/sim/data.js b/test/sim/data.js
index 3bed847416..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`);
- }
- }
}
});
@@ -407,11 +401,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`, () => {
diff --git a/test/sim/items/lumberry.js b/test/sim/items/lumberry.js
index 4cca997639..d48c4a0b3a 100644
--- a/test/sim/items/lumberry.js
+++ b/test/sim/items/lumberry.js
@@ -39,6 +39,18 @@ describe('Lum Berry', () => {
assert(attacker.volatiles['confusion']);
});
+ it('should cure Poison from Poison Touch before being knocked off', () => {
+ battle = common.createBattle({ forceRandomChance: true }, [[
+ { species: 'Wynaut', ability: 'poisontouch', moves: ['knockoff'] },
+ ], [
+ { species: 'Shuckle', item: 'lumberry', moves: ['sleeptalk'] },
+ ]]);
+ battle.makeChoices();
+ assert(battle.getDebugLog().includes('|-status|p2a: Shuckle|psn|[from] ability: Poison Touch'));
+ assert.equal(battle.p2.active[0].status, '');
+ assert.false.holdsItem(battle.p2.active[0]);
+ });
+
it('should cure Poison and confusion after Poison Puppeteer activation', () => {
battle = common.createBattle();
battle.setPlayer('p1', { team: [{ species: 'Charizard', item: 'lumberry', moves: ['sleeptalk'] }] });
diff --git a/test/sim/misc/endlessbattleclause.js b/test/sim/misc/endlessbattleclause.js
index eb2cc3437d..a61dd2d007 100644
--- a/test/sim/misc/endlessbattleclause.js
+++ b/test/sim/misc/endlessbattleclause.js
@@ -182,7 +182,7 @@ describe('Endless Battle Clause (slow)', () => {
{ species: "Blissey", moves: ['splash'] },
{ species: "Vaporeon", moves: ['splash'] },
] });
- for (let i = 0; i < 998; i++) {
+ for (let i = 0; i < 999; i++) {
battle.makeChoices('switch 2', 'switch 2');
}
assert(!battle.ended);
diff --git a/test/sim/moves/pursuit.js b/test/sim/moves/pursuit.js
index 504a0a548c..f3d634df71 100644
--- a/test/sim/moves/pursuit.js
+++ b/test/sim/moves/pursuit.js
@@ -35,28 +35,6 @@ describe(`Pursuit`, () => {
assert.bounded(damage, [256, 304], 'Actual damage: ' + damage);
});
- it(`should continue the switch in Gen 3`, () => {
- battle = common.gen(3).createBattle([[
- { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
- ], [
- { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
- { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
- ]]);
- battle.makeChoices('move Pursuit', 'switch 2');
- assert(battle.p2.active[0].hp);
- });
-
- it(`should continue the switch in Gen 4`, () => {
- battle = common.gen(4).createBattle([[
- { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
- ], [
- { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
- { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
- ]]);
- battle.makeChoices('move Pursuit', 'switch 2');
- assert(battle.p2.active[0].hp);
- });
-
it(`should not repeat`, () => {
battle = common.createBattle([[
{ species: "Beedrill", ability: 'swarm', item: 'beedrillite', moves: ['pursuit'] },
@@ -86,6 +64,57 @@ describe(`Pursuit`, () => {
assert.bounded(furret.maxhp - furret.hp, [60, 70]);
});
+ it(`should activate on the first target switching out`, () => {
+ battle = common.createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Furret", moves: ['pursuit'] },
+ ], [
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Toxapex", moves: ['calmmind'] },
+ { species: "Wynaut", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ ]]);
+ const [clefable, toxapex, wynaut, alakazam] = battle.p2.pokemon;
+ battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4'); // Does not matter who Pursuit targets
+ assert.bounded(clefable.maxhp - clefable.hp, [34 + 30, 40 + 35]);
+ assert.fullHP(toxapex);
+ assert.fullHP(wynaut);
+ assert.fullHP(alakazam);
+ });
+
+ it(`should activate on the second target switching out, if the first fainted`, () => {
+ battle = common.createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Furret", moves: ['pursuit'] },
+ ], [
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Shedinja", moves: ['calmmind'], evs: { spe: 252 } },
+ { species: "Wynaut", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ ]]);
+ const [clefable, shedinja, wynaut, alakazam] = battle.p2.pokemon;
+ battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4');
+ assert.bounded(clefable.maxhp - clefable.hp, [34, 40]);
+ assert.fainted(shedinja);
+ assert.fullHP(wynaut);
+ assert.fullHP(alakazam);
+ });
+
+ it(`should activate on a switching opponent even if targeting an ally`, () => {
+ battle = common.createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", item: 'beedrillite', moves: ['pursuit'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Furret", moves: ['calmmind'] },
+ ], [
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ { species: "Roserade", moves: ['calmmind'] },
+ ]]);
+ const clefable = battle.p2.pokemon[0];
+ battle.makeChoices('move pursuit mega -2, switch 3', 'switch 3, move calmmind');
+ assert.bounded(clefable.maxhp - clefable.hp, [53, 63]);
+ });
+
it(`should not double in power or activate before a switch triggered by Red Card`, () => {
battle = common.createBattle([[
{ species: 'Steelix', item: 'redcard', moves: ['pursuit'] },
@@ -146,4 +175,156 @@ describe(`Pursuit`, () => {
battle.makeChoices('move pursuit 1, move sleeptalk', 'auto');
assert.false.fullHP(gengar);
});
+
+ it(`should be able to be paralyzed to prevent activation`, () => {
+ battle = common.createBattle({ forceRandomChance: true }, [[
+ { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] },
+ ], [
+ { species: "Jolteon", moves: ['thunderwave'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ const jolteon = battle.p2.pokemon[0];
+ battle.makeChoices('move sleeptalk', 'move thunderwave');
+ assert.equal(battle.p1.active[0].status, 'par');
+ battle.makeChoices('move pursuit', 'switch 2');
+ assert.fullHP(jolteon);
+ });
+
+ describe(`[Gen 4]`, () => {
+ it(`should continue the switch`, () => {
+ battle = common.gen(4).createBattle([[
+ { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
+ ], [
+ { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
+ { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
+ ]]);
+ battle.makeChoices('move Pursuit', 'switch 2');
+ assert(battle.p2.active[0].hp);
+ });
+
+ it(`should not activate if the user is asleep at the beginning of the turn`, () => {
+ battle = common.gen(4).createBattle([[
+ { species: "Tyranitar", moves: ['pursuit'] },
+ ], [
+ { species: "Breloom", moves: ['spore'] },
+ { species: "Breloom", moves: ['sleeptalk'] },
+ ]]);
+ battle.makeChoices('move pursuit', 'move spore');
+ assert.equal(battle.p1.active[0].status, 'slp');
+ while (battle.p1.active[0].status === 'slp') {
+ battle.makeChoices('move pursuit', 'switch 2');
+ }
+ // Tyranitar woke up and used Pursuit
+ const activeBreloom = battle.p2.active[0];
+ assert.bounded(activeBreloom.maxhp - activeBreloom.hp, [33, 40]);
+ assert.fullHP(battle.p2.pokemon[1].hp);
+ });
+
+ it(`should be able to be paralyzed to prevent activation`, () => {
+ battle = common.gen(4).createBattle({ forceRandomChance: true }, [[
+ { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] },
+ ], [
+ { species: "Jolteon", moves: ['thunderwave'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ const jolteon = battle.p2.pokemon[0];
+ battle.makeChoices('move sleeptalk', 'move thunderwave');
+ assert.equal(battle.p1.active[0].status, 'par');
+ battle.makeChoices('move pursuit', 'switch 2');
+ assert.false.fullHP(jolteon);
+ });
+ });
+
+ describe(`[Gen 3]`, () => {
+ it(`should continue the switch`, () => {
+ battle = common.gen(3).createBattle([[
+ { species: "Tyranitar", ability: 'sandstream', moves: ['pursuit'] },
+ ], [
+ { species: "Alakazam", ability: 'magicguard', moves: ['psyshock'] },
+ { species: "Clefable", ability: 'unaware', moves: ['calmmind'] },
+ ]]);
+ battle.makeChoices('move Pursuit', 'switch 2');
+ assert(battle.p2.active[0].hp);
+ });
+
+ it(`should only activate on the targeted opponent`, () => {
+ battle = common.gen(3).createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Furret", moves: ['pursuit'] },
+ ], [
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Clefable", ability: 'shellarmor', moves: ['calmmind'] },
+ { species: "Wynaut", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ ]]);
+ const [clefable, clefable2, wynaut, alakazam] = battle.p2.pokemon;
+ battle.makeChoices('move pursuit 1, move pursuit 2', 'switch 3, switch 4');
+ assert.bounded(clefable.maxhp - clefable.hp, [35, 42]);
+ assert.bounded(clefable2.maxhp - clefable2.hp, [35, 42]);
+ assert.fullHP(wynaut);
+ assert.fullHP(alakazam);
+ });
+
+ it(`should not activate on a switching opponent if targeting an ally`, () => {
+ battle = common.gen(3).createBattle({ gameType: 'doubles' }, [[
+ { species: "Beedrill", moves: ['pursuit'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Furret", moves: ['calmmind'] },
+ ], [
+ { species: "Clefable", moves: ['calmmind'] },
+ { species: "Alakazam", moves: ['calmmind'] },
+ { species: "Roserade", moves: ['calmmind'] },
+ ]]);
+ const clefable = battle.p2.pokemon[0];
+ battle.makeChoices('move pursuit -2, switch 3', 'switch 3, move calmmind');
+ assert.fullHP(clefable);
+ const furret = battle.p1.pokemon[1];
+ assert.bounded(furret.maxhp - furret.hp, [25, 30]);
+ });
+ });
+
+ describe(`[Gen 2]`, () => {
+ it(`should continue the switch`, () => {
+ battle = common.gen(2).createBattle([[
+ { species: "Tyranitar", moves: ['pursuit'] },
+ ], [
+ { species: "Alakazam", moves: ['psyshock'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ battle.makeChoices('move Pursuit', 'switch 2');
+ assert(battle.p2.active[0].hp);
+ });
+
+ it(`should try to activate even if the user is asleep at the beginning of the turn`, () => {
+ battle = common.gen(2).createBattle([[
+ { species: "Paras", moves: ['pursuit'], evs: { spa: 252 } },
+ ], [
+ { species: "Parasect", moves: ['spore'], evs: { hp: 252, spd: 252 } },
+ { species: "Parasect", moves: ['sleeptalk'], evs: { hp: 252, spd: 252 } },
+ ]]);
+ battle.makeChoices('move pursuit', 'move spore');
+ assert.equal(battle.p1.active[0].status, 'slp');
+ while (battle.p1.active[0].status === 'slp') {
+ battle.makeChoices('move pursuit', 'switch 2');
+ }
+ // Paras woke up and used Pursuit
+ assert.fullHP(battle.p2.active[0].hp);
+ const inactiveParasect = battle.p2.pokemon[1];
+ assert.bounded(inactiveParasect.maxhp - inactiveParasect.hp, [42, 50]);
+ });
+
+ it(`should be able to be paralyzed to prevent activation`, () => {
+ battle = common.gen(2).createBattle({ forceRandomChance: true }, [[
+ { species: "Tyranitar", moves: ['pursuit', 'sleeptalk'] },
+ ], [
+ { species: "Jolteon", moves: ['thunderwave'] },
+ { species: "Clefable", moves: ['calmmind'] },
+ ]]);
+ const jolteon = battle.p2.pokemon[0];
+ battle.makeChoices('move sleeptalk', 'move thunderwave');
+ assert.equal(battle.p1.active[0].status, 'par');
+ battle.makeChoices('move pursuit', 'switch 2');
+ assert.fullHP(jolteon);
+ });
+ });
});
diff --git a/test/sim/moves/stompingtantrum.js b/test/sim/moves/stompingtantrum.js
index d4fe8a0708..1f699bc0e9 100644
--- a/test/sim/moves/stompingtantrum.js
+++ b/test/sim/moves/stompingtantrum.js
@@ -90,7 +90,7 @@ describe('Stomping Tantrum', () => {
battle.makeChoices('move stompingtantrum', 'auto');
});
- it.skip(`should not double its Base Power if the user dropped mid-Fly due to Smack Down`, () => {
+ it(`should not double its Base Power if the user dropped mid-Fly due to Smack Down`, () => {
battle = common.createBattle([[
{ species: 'Magikarp', moves: ['fly', 'stompingtantrum'] },
], [
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', () => {
diff --git a/test/sim/team-validator/events.js b/test/sim/team-validator/events.js
index 3c093f0d8b..2100fddf14 100644
--- a/test/sim/team-validator/events.js
+++ b/test/sim/team-validator/events.js
@@ -164,4 +164,35 @@ describe('Team Validator', () => {
];
assert.legalTeam(team, 'gen5ou');
});
+
+ it(`should force Gen 4 Arceus to have max 100 EVs in any one stat and only multiples of 10`, () => {
+ let team = [
+ { species: 'arceus', ability: 'multitype', moves: ['judgment'], evs: { hp: 110 } },
+ ];
+ assert.false.legalTeam(team, 'gen4anythinggoes');
+
+ team = [
+ { species: 'arceus', ability: 'multitype', moves: ['judgment'], evs: { hp: 99 } },
+ ];
+ assert.false.legalTeam(team, 'gen4anythinggoes');
+
+ team = [
+ { species: 'arceus', ability: 'multitype', moves: ['judgment'], evs: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 10 } },
+ ];
+ assert.legalTeam(team, 'gen4anythinggoes');
+ });
+
+ it(`should allow Hall of Origin Arceus with Full Arceus Clause`, () => {
+ let team = [
+ { species: 'arceus', level: 80, ability: 'multitype', moves: ['judgment'], evs: { hp: 1 } },
+ ];
+ assert.false.legalTeam(team, 'gen4anythinggoes');
+ assert.false.legalTeam(team, 'gen4anythinggoes@@@fullarceusclause');
+
+ team = [
+ { species: 'arceus', level: 100, ability: 'multitype', moves: ['judgment'], evs: { hp: 1 } },
+ ];
+ assert.false.legalTeam(team, 'gen4anythinggoes');
+ assert.legalTeam(team, 'gen4anythinggoes@@@fullarceusclause');
+ });
});
diff --git a/test/sim/team-validator/formes.js b/test/sim/team-validator/formes.js
index 518f782fb6..f405477b79 100644
--- a/test/sim/team-validator/formes.js
+++ b/test/sim/team-validator/formes.js
@@ -100,17 +100,16 @@ describe('Team Validator', () => {
assert.legalTeam(team, 'gen7anythinggoes');
});
- // Zamazenta is unreleased currently
- it.skip('should tier Zacian and Zamazenta formes separately', () => {
+ it('should tier Zacian and Zamazenta formes separately', () => {
team = [
{ species: 'zamazenta-crowned', ability: 'dauntlessshield', item: 'rustedshield', moves: ['howl'], evs: { hp: 1 } },
];
- assert.legalTeam(team, 'gen9almostanyability');
+ assert.false.legalTeam(team, 'gen9ou');
team = [
{ species: 'zamazenta', ability: 'dauntlessshield', item: 'lifeorb', moves: ['howl'], evs: { hp: 1 } },
];
- assert.false.legalTeam(team, 'gen9almostanyability');
+ assert.legalTeam(team, 'gen9ou');
});
it('should validate Unown formes in Gen 2 based on DVs', () => {
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);
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;